Technologies
Xindeler's technical stack. All dependencies are open source.
Languageβ
Rust (nightly)β
The game and server are written 100% in Rust. The nightly channel is used because the project depends on compiler features that haven't stabilized yet (mainly portable_simd and some procedural macros).
The exact channel required is pinned in rust-toolchain.toml at the repo root.
Serverβ
specs β ECSβ
specs is the Entity Component System framework. It automatically parallelizes systems using rayon when their component sets don't overlap.
Quinn β QUIC transportβ
Quinn implements the QUIC protocol (RFC 9000) in Rust. The game protocol runs over QUIC instead of TCP because:
- Stream multiplexing without head-of-line blocking
- Faster reconnection after packet loss
- Better behavior on mobile networks and with NAT
MessagePack β Persistenceβ
The world state (rtsim/data.dat) is serialized with MessagePack via the rmp-serde crate. It's a compact, fast binary format compatible with serde. There is no relational database.
RON β Assets and configurationβ
RON (Rusty Object Notation) is the text format used to define items, abilities, creatures, recipes, and server configuration. It's similar to JSON but with native support for Rust types (enums with variants, structs with field names).
Example of an item in RON:
ItemDef(
name: "Espada de Hierro",
kind: Sword(
equip_slot: Mainhand,
power: 12.0,
speed: 1.2,
),
quality: Common,
)
Client (Voxygen)β
wgpu β Renderingβ
wgpu is a GPU abstraction that implements the WebGPU standard. It supports multiple backends:
| Operating system | Backend |
|---|---|
| Linux | Vulkan |
| macOS | Metal |
| Windows | DirectX 12 / Vulkan |
| Fallback | OpenGL (via WGPU_BACKEND=gl) |
The rendering pipeline renders voxel chunks with dynamic LOD (level of detail).
egui β UIβ
egui handles the client's user interface: HUD, inventory, menus, dialog windows. It's an immediate mode UI β there is no persistent widget tree.
rodio / CPAL β Audioβ
The audio system uses rodio on top of CPAL for playing ambient music, sound effects, and in the future the voices generated by AURORA.
Web (separate process)β
FastAPI (Python)β
The web process is written in Python with FastAPI. It exposes three REST endpoints for the waitlist, the contributors form, and server status. It has no access to the game state β it queries the game server via an internal status endpoint.
DevOpsβ
| Tool | Use |
|---|---|
| GitHub Actions | CI (build + clippy + tests) and CD (rsync to VPS) |
| rsync | Deploys static assets to the VPS |
| nginx | Reverse proxy for the websites (landing, wiki, docs) |
| certbot | Automatic TLS certificates |
Notable dependenciesβ
| Crate | Purpose |
|---|---|
serde | Serialization/deserialization |
tokio | Async runtime for the server |
rayon | Data parallelism (ECS systems) |
vek | Math types (Vec2, Vec3, Mat4) |
image | Texture loading |
tracing | Structured logging |