---
# System prepended metadata

title: Buddle Roadmap

---

# 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
