Generic runtime for zero-Rust game projects.
A game project is a directory with a .dotzuki-editor.json manifest, a
dataRoot holding maps/<MapId>/ directories (Tiled map.tmx.json +
tileset.png + objects.json sidecar + per-map script.scene), and a
scenes directory with story .scene files. See
docs/reference/project-manifest.md for the full contract.
This crate boots such a project without any game-specific Rust:
- [
manifest] — serde model of.dotzuki-editor.json; - [
project] — [project::LoadedProject]: manifest → DSL compile → script registry + storyline routes + entry scene/map resolution; - [
map] — [map::RuntimeMap]: TMX layers, collision grid, objects sidecar (NPCs/warps/signs); - [
tileset] — [tileset::PngTileset]: atileset.pngatlas sliced into per-tile RGBA pixels, addressable by 1-based Tiled GID; - [
game] — [game::RunnerGame]: the playable runtime (overworld + scene VM + dialogue/choice UI), implementingdotzuki_app::GameLoopfor window mode and exposing windowlessupdate/drawfor headless use; - [
headless] — [headless::run_headless]: a windowless frame driver with auto-A input and PNG screenshots (native only); - [
watch] — [watch::ProjectWatcher]: notify-based file watching fordotzuki run --watchhot reload (featurewatch); - [
vfs] — [vfs::ProjectFiles]: the virtual file system every project read goes through ([vfs::DiskFiles] native, [vfs::MemoryFiles] for the WASM shell); - [
audio] — [audio::RunnerAudio]: optional music/SFX playback for scene audio commands (dotzuki-audio APU + cpal; silent when a project has nodata/audio/tracks or no output device is available); - [
battle] — the generic, data-driven battle system (manifestbattlesection → record-driven combatants, party switching, battle-usable items, the standard damage formula, a menu/narration turn loop,startBattlescene integration); - [
save] — [save::GameSave]: versioned JSON save/load at<project>/.dotzuki-save.json, written at stable overworld points.