# Buddle Roadmap ## Overview #### Until Dec 31 (ordered by priority) - Load zones - Switch between zones - NPCs - GUI (optional) - Duels (stretch) - Proper contribution guidelines ## Contributing - Our demography is wizwalker's and Kronos server's technical audience - We need to do resources - Kronos had a book with contribution guidelines - Basically just copy it over, including copyright and legal disclaimers - We need to do issues on GitHub with proper labels - We need a channel for first-time contributors to seek help on Discord - As soon as groundwork is done, people can work on personally desired features - Advertise the project? ## Implementation ### Crates - buddle-render -> Generic rendering engine for NIF/UI stuff - buddle-object-property -> Reflection and serialization machinery - buddle-net -> Frame abstraction and binary (en|de)coding of it - buddle-dml -> Traits and xml codegen for DML protocols #### ObjectProperty - Implemented in `buddle-object-property` - Foundation for most serialized game logic and networking - Almost done, just needs ~~bitenum macro,~~ serializers (binary/xml)~~, and some C++ types like serialized pointers~~ #### Rendering - Implemented in `buddle-render` - We want this to be cross-platform with `winit`, `wgpu`, `egui` - Draws inspiration from https://docs.rs/bevy/latest/bevy/render/index.html and maybe https://github.com/BVE-Reborn/rend3 - `wgpu_glyph` for text rendering - `wgpu-profiler` as a first-class citizen for debugging/optimizing later #### Networking - Implemented in `buddle-net` and `buddle-dml` - Codec for encoding and decoding control/dml frames - Can be ported over from Kronos, just encryption support needs to be added - Deadline: Better soon because we'll need them early on #### File formats - Crates for all the file formats using `binrw` - `memmap2` and `flate2` with SIMD backend for KIWAD archives