Rewrite notes for the single-player architecture

Drop protocol.md; rewrite the tick-loop note around the game-loop-driven sim
and the intent model; rewrite the roadmap (network items removed, sim/game
crate layout, save/load and NPC blocking added); fix crate paths in the
remaining notes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
irrlicht
2026-09-18 23:00:19 +02:00
co-authored by Claude Opus 5
parent f594f12f35
commit 64a6e1d42d
6 changed files with 127 additions and 552 deletions
+6 -6
View File
@@ -1,7 +1,7 @@
# Map Loader
Loads level data from a Tiled CSV export, replacing the old hardcoded `build_world` wall loop.
Implemented in `server/src/map.rs`; wired into the world in `server/src/main.rs::load_world`.
Implemented in `sim/src/map.rs`; wired into the world in `sim/src/lib.rs::load_world`.
---
@@ -37,8 +37,8 @@ therefore shows up in the CSV as a large *negative* decimal when read as `i32`.
The loader parses each field as `i64`, reinterprets the low 32 bits as `u32`, and strips the
flip flags with `& 0x1FFF_FFFF`, leaving the bare tile id. **Flip orientation is discarded for
now** — flipped tiles render unflipped. Real flipping would need a flip-aware `blit_tile` on
the client plus the flags carried through the protocol; deferred to the camera/sprite pass (09).
now** — flipped tiles render unflipped. Real flipping would need a flip-aware `blit_tile` plus
the flags carried through the chunk palette; deferred to the camera/sprite pass (09).
---
@@ -46,9 +46,9 @@ the client plus the flags carried through the protocol; deferred to the camera/s
Tile ids are used directly:
- **Server** — `tile_flags(id)` (in `map.rs`) maps an id to gameplay `TileFlags`
(collidable / opaque). Hand-maintained vocabulary; currently everything is walkable floor.
- **Client** — the id indexes straight into `overworld.tga` (`game.rs`). The tileset's tile
- **Sim** — `tile_flags(id)` (in `map.rs`) maps an id to gameplay `TileFlags`
(collidable / opaque) via the `sim::tile_collidable` vocabulary. Hand-maintained; test values only.
- **Renderer** — the id indexes straight into `overworld.tga` (`game.rs`). The tileset's tile
order *is* the id space; keep the Tiled tileset and `overworld.tga` in lockstep.
No `firstgid` subtraction: the authored ids already line up with `overworld.tga`.