Part IV — Baselines (rules that never break)
These are the invariants. If code, docs, or habits contradict them, the baseline wins.
- The map stores facts; rules decide. No walkability, cost, hazard, or LoS verdict ever lives in map data.
- Render never feeds back. No rule or map datum may depend on what the render layer does.
- No derived storage. Anything computable from the map (surfaces, adjacency) is computed or cached, never serialized.
- Append-only catalog. Materials are added, never reordered or removed; maps reference them by index.
- Versioned formats, loud failure. Every binary format carries a schema version; loaders reject mismatches, never silently repair.
- Deterministic. Everything derived from
(map, seed)reproduces identically given the same inputs. - One tunable movement module. The climb thresholds live in one place, not scattered constants.
- Layered, one-way. Data and logic never import rendering; scripts stay focused; no circular dependencies.
- Tests gate every change.
./run_tests.shmust pass before anything lands. - Docs change first. When a rule changes: update this bible /
MAP_RULES.mdfirst, then the code, then the wiki mirror. - Deterministic simulation. No engine RNG in simulation paths — gameplay randomness comes from
DeterministicRng, seeded per match. Sim math stays in integers and exact fractions. - Rules are versioned. Rule data carries a
RulesetVersion; a match pins it, and clients that don't match refuse to join. - State changes are commits. Every mutation — including map edits — flows through the append-only, sequence-numbered commit log. No out-of-band mutation.
No comments to display
No comments to display