File structure
Map of the Rust workspace. Xindeler is a Cargo workspace with multiple crates.
Main treeβ
xindeler/
βββ Cargo.toml # Workspace root β lists all members
βββ rust-toolchain.toml # Pins the exact nightly channel
βββ .cargo/config.toml # Linker configuration and flags
β
βββ common/ # Types and logic shared between client and server
βββ common_net/ # Shared network types (protocol messages)
βββ common_systems/ # Reusable ECS systems
β
βββ server/ # Server binary (xindeler-server)
βββ client/ # Client library (not the binary β just the logic)
βββ voxygen/ # Graphical client binary
β
βββ world/ # World generation (terrain, sites, dungeons)
βββ rtsim/ # Real-time world simulation (persistent state)
β
βββ assets/ # Game assets (RON, PNG, OGG, GLSL)
βββ server-cli/ # CLI wrapper for the server
Crates in detailβ
common/β
The heart of the project. Defines all the game's data types:
- ECS components:
Health,Energy,Pos,Vel,Stats,Inventory,Body - Item, ability, and buff effect definitions
- Terrain and chunk types
- Pure combat logic (no side effects β makes testing easier)
Both the server and the client depend on common. It never depends on server or voxygen.
server/β
The xindeler-server binary. Contains:
- The server's main loop with
tokio - Connection handling (Quinn/QUIC)
- All the server's ECS systems: combat, physics, AI, economy
- Integration with
rtsim, ORACLE, and AURORA - Admin commands (
/give,/time,/oracle, etc.)
voxygen/β
The graphical client. Contains:
- Rendering pipeline with
wgpu(voxel chunks, water, sky, shadows) - UI with
egui - Audio system with
rodio - Input handling
- Client prediction logic (entity interpolation)
world/β
Procedural world generation:
- Terrain generation (heightmaps, biomes, erosion)
- Site placement (cities, caves, ruins)
- Dungeon generation
- Creature spawn tables per biome
This crate is used by the server when generating the world for the first time, and also by rtsim for terrain queries.
rtsim/β
The real-time world simulation module:
- Persistent NPC state (position, faction, relationships, inventory)
- Site and faction state
- Long-term NPC pathfinding
- Serialization/deserialization to
data.dat(MessagePack) - The foundation that ORACLE and AURORA run on
assets/β
Game assets organized by type:
assets/
βββ common/
β βββ items/ # RON definitions for items (weapons, armor, consumables)
β βββ abilities/ # RON definitions for abilities and combos
β βββ recipe_book/ # Crafting recipes in RON
β βββ loot_tables/ # Loot tables in RON
βββ voxygen/
β βββ shaders/ # GLSL/WGSL shaders
β βββ audio/ # Music (OGG) and sound effects
β βββ element/ # UI textures and assets
βββ world/
βββ manifests/ # Biome and site configuration
Naming conventionsβ
| Pattern | Meaning |
|---|---|
*_sys.rs | ECS system (implements System) |
*_comp.rs | Component definitions |
*_event.rs | Server event types |
*.ron | Game asset (item, ability, creature, recipe) |
data.dat | Persistent world state (MessagePack) |
chronicle/*.jsonl | World event log (rotated by size) |
Where to start based on your taskβ
| Task | Where to look |
|---|---|
| Add an item | assets/common/items/ + common/src/comp/item/ |
| Add an ability | assets/common/abilities/ + common/src/comp/ability.rs |
| Add an NPC | assets/world/ + server/src/rtsim/ |
| Change combat mechanics | common/src/combat.rs + server/src/sys/combat.rs |
| Change the UI | voxygen/src/hud/ |
| Change terrain generation | world/src/ |