dotzuki-engine
Core trait definitions for a JRPG engine framework.
This crate defines the foundational abstractions that any JRPG engine implementation must provide. It has zero dependency on specific game data — all types are generic associated types or marker traits that the implementing crate supplies.
Design Philosophy
The traits in this crate follow these principles:
- Generic over game data: No concrete game-specific, item, or move types.
All identifiers are associated types bounded by
Copy + Eq + Hash + Debug. - Provider pattern: Data providers (tilesets, maps, palettes, tile
metadata, render data) are obtained through a single
GameDatamaster trait, enabling dependency injection and testing. - No I/O, no platform: This crate contains only trait definitions and simple data types. No file loading, no GPU code, no platform calls.
Modules
| Module | Contents |
|---|---|
[tileset] |
TilesetTrait and TilesetProvider — tileset loading and querying |
[tile_meta] |
CollisionType, TileMetaTrait, TileMetadata — collision and terrain |
[tilemap] |
TilemapEntry, Tilemap — 16-bit tilemap with per-tile metadata |
[map] |
MapTrait, MapProvider, MapConnection — map data and connections |
[palette] |
PaletteTrait, PaletteProvider — colour palette lookups |
[render_data] |
RenderData — display-name and metadata lookups for moves, items, species |
[save] |
SaveData, SaveManager, SaveStorage, SaveError — save/load with CRC16 |
[link] |
NetworkTransport<M>, TransportError, ChannelTransport<M>, LinkRole — game-agnostic link-play transport seam (zero-I/O) |