Jeroen's Global map has been two coloured blocks all along. Not missing
hydrology, not a missing layer: serve_step_canvas_request zeroed Global's wire
extent, so every request arrived downstream as (0,0), clamped to (1,1), and
resolved to a 2x1 canvas.
That sentinel was correct when Global's size came from the body's region grid
and the client's extent field was meaningless. The D-255 extent inversion made
Global viewport-sized and this line silently outlived it. The commit titled
"size the Global rung to the viewport" was therefore correct and completely
unreachable — its tests passed by calling resolve_canvas_extent directly
rather than through the serve path, i.e. they tested the function that changed
instead of the path the data takes.
Two more places carried the same dead premise, both meaning the first canvas
ever built answered every later request and a resize could never take effect:
- GlobalTierCache keyed on body id alone. Now treats a size mismatch as a
miss, so the re-derive replaces it. Deliberately still ONE entry per body
rather than one per size: keying by size would make a tier that never
evicts accumulate an entry per viewport a player has ever used.
- The client's make_key collapsed Global's extent to a sentinel. Centre
stays collapsed — Global's canvas really is whole-body and origin-anchored
— but extent is now part of the key.
project.yaml 0.4.5 forces the 2x1 canvases already on disk to miss.
Verified through the capture harness, not by reasoning: server probe shows
req=(960,540) radius=6238.4 resolved=960x480, and Ferrath's Global now renders
continents, oceans, inland lakes and polar ice where it previously rendered
one solid rectangle.
Server suite green (45 binaries), client 1830 total / 1804 passed / 26 skipped.
Pair session with Jeroen, 2026-07-27.
Co-Authored-By: Claude <noreply@anthropic.com>
66 lines
3.3 KiB
YAML
66 lines
3.3 KiB
YAML
name: The Settled Reach
|
|
# Version scheme: 0.{phase}.{n} — phase = active Development Cascade phase (D-166).
|
|
# Phase 4 (deterministic world generation) is active.
|
|
# 0.4.1-tagged step canvases carried lake_margin_q's flat absolute-ceiling
|
|
# semantics (pre-per-basin-normalization) and were written to real disk
|
|
# caches during T-1188 eyeball runs — 0.4.2 forces those entries to miss.
|
|
# 0.4.2-tagged Global/Region-rung step canvases sampled the coastline
|
|
# position raw (no coast_warp_px) — T-1160 applies the warp at orbital
|
|
# sampling, changing orbital-rung canvas bytes (elev_q/temperature_dc/
|
|
# moisture_q shift near coasts) — 0.4.3 forces those cached entries to miss.
|
|
# 0.4.3-tagged canvases predate the D-255 extent inversion (a rung now fixes
|
|
# the canvas EXTENT and the gridunit spacing falls out, rather than the
|
|
# reverse). District/Quarter/Block/Chunk kept the same 960x540 cell counts
|
|
# through that change, so their cache keys are byte-identical while a District
|
|
# canvas now covers 3.6 km of ground instead of 1,966 km — a warm cache would
|
|
# silently serve pre-inversion canvases. 0.4.4 forces those entries to miss.
|
|
# 0.4.4-tagged GLOBAL canvases are all 2x1 — `serve_step_canvas_request` was
|
|
# still zeroing Global's wire extent (a pre-extent-inversion sentinel), so
|
|
# every Global request resolved to a two-cell canvas regardless of viewport.
|
|
# Those entries were also cached under a key that ignored extent, so they
|
|
# answered every later request forever. 0.4.5 forces them to miss.
|
|
version: 0.4.5
|
|
repository: settled-reach
|
|
|
|
|
|
description: >
|
|
Top-down life-sim set in an original science fiction universe. Asymmetric
|
|
information and occlusion-based perception from a single-character
|
|
perspective, with a Rimworld-style storyteller. Systems interactions like
|
|
The Sims, combat and visuals like single-character Rimworld, world
|
|
generation inheriting from Dwarf Fortress and NMS, economy inspired by
|
|
X4/EVE. Every system is interactable but ignorable — the world is alive
|
|
for any given run.
|
|
|
|
setting: >
|
|
The Settled Reach — a network of star systems connected by Founder Gates.
|
|
Neural lattice technology enables soft immortality, forking, and
|
|
re-embodiment.
|
|
|
|
development: >
|
|
Built outside-in along the six-phase Development Cascade (D-166): wiki
|
|
content and star map, economics layer, planetary maps and atlas,
|
|
deterministic world generation (active), player control and in-world
|
|
rendering, room-level detail.
|
|
|
|
architecture:
|
|
client: Godot 4 (GDScript)
|
|
server: Rust with bevy_ecs (simulation server)
|
|
transport: subprocess/IPC via TCP with MessagePack serialization
|
|
protocol: length-prefixed MessagePack frames (4-byte big-endian)
|
|
determinism: ChaCha20 seeded RNG, deterministic tick processing
|
|
|
|
simulation:
|
|
tick_rate: 10 ticks per game-minute
|
|
time_model: 4 day phases (Morning, Afternoon, Evening, Night)
|
|
grid: dual-scale (0.5m simulation tiles, 1m visual tiles)
|
|
visibility: symmetric shadowcasting + forward/peripheral/blind vision cone
|
|
knowledge: per-entity knowledge graphs with confidence decay
|
|
|
|
content:
|
|
format: YAML with JSON Schema validation
|
|
structure: campaigns/systems/stations/districts hierarchy
|
|
npcs: 10-axis model (7 essential + 3 supporting) with CombatCapability
|
|
dialogue: tagged line pools with 4-layer relational filtering
|
|
population: 30% flat / 50% mundane triangles / 20% intrigue-entangled
|