1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//! 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`]: a `tileset.png` atlas sliced into
//! per-tile RGBA pixels, addressable by 1-based Tiled GID;
//! - [`game`] — [`game::RunnerGame`]: the playable runtime (overworld +
//! scene VM + dialogue/choice UI), implementing `dotzuki_app::GameLoop` for
//! window mode and exposing windowless `update`/`draw` for 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 for
//! `dotzuki run --watch` hot reload (feature `watch`);
//! - [`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
//! no `data/audio/` tracks or no output device is available);
//! - [`battle`] — the generic, data-driven battle system (manifest `battle`
//! section → record-driven combatants, party switching, battle-usable
//! items, the standard damage formula, a menu/narration turn loop,
//! `startBattle` scene integration);
//! - [`save`] — [`save::GameSave`]: versioned JSON save/load at
//! `<project>/.dotzuki-save.json`, written at stable overworld points.
pub use RunnerAudio;
pub use validate_ruleset;
pub use ;
pub use ;
pub use ;
pub use ;
pub use LoadedProject;
pub use ;
pub use PngTileset;
pub use ;
pub use ProjectWatcher;