feat: make pantry crises visible in the world

This commit is contained in:
Rijad Zuzo
2026-07-14 23:54:22 +02:00
parent c722e32a88
commit c23f6887c8
21 changed files with 800 additions and 73 deletions
+24 -13
View File
@@ -2,7 +2,7 @@
> Agent-facing context for understanding the project quickly.
>
> Snapshot basis: repository state on July 13, 2026. Treat the code as the
> Snapshot basis: repository state on July 14, 2026. Treat the code as the
> source of truth when this document and the implementation differ.
See the [documentation map](README.md) for the authority and scope of each plan.
@@ -200,8 +200,8 @@ study, and patrol target typed activity sites. The migration is documented in
`docs/baselines/jajce_lookdev_01.png` with
`tools/capture_jajce_lookdev.gd`
- **Runtime baseline:** `Simulation Garden 01` is captured as paired debug and
cinematic `main.tscn` images under `docs/baselines/` with
`tools/capture_simulation_garden.gd`
cinematic `main.tscn` images plus an empty/restocked pantry close pair under
`docs/baselines/` with `tools/capture_simulation_garden.gd`
- **Terrain compatibility floor:** Godot 4.4 according to the bundled extension
- **Version control:** Git
- **Primary branch:** `main`
@@ -338,8 +338,9 @@ distance with resource `safety_risk`, `comfort_distance`, and
- deterministic shaped terrain data and six game-owned surface layers;
- fortress, houses, mill, bridge, shader river/waterfall, mist, and smoke;
- authored dirt path strips that make the current village task loop readable;
- compact silhouette props for the ridge landmark, pantry, guard, study, and
rest sites;
- compact silhouette props for the ridge landmark, guard, study, and rest
sites, plus a physical pantry whose empty/low/stocked arrangement follows
authoritative food storage;
- warm sky, fog, shadows, coherent wind-reactive foliage, and breeze-aligned
chimney smoke;
- one sparse terrain-aware calligraphic gust field with two or three soft
@@ -382,7 +383,10 @@ A small village panel displays:
NPC name/profession labels, definition-driven colors and props, carried-food
visuals, compact task glyphs, and a brief amber blossom on real trust gains make
active simulation state readable in the world. The F10 cinematic mode hides
debug labels while preserving task glyphs and transient social reactions.
debug labels while preserving task glyphs and transient social reactions. An
open pantry opportunity adds a restrained empty-bowl concern cue only to its
interested villager; a real refill changes the pantry props, clears concern,
and produces one brief pantry response.
## Runtime architecture
@@ -441,7 +445,9 @@ than duplicating these responsibilities across additional manager nodes.
- synchronizes successful visual movement into authoritative NPC position;
- applies visual death state;
- turns authoritative relationship-change signals into observer-only transient
presentation cues without queuing or persisting them.
presentation cues without queuing or persisting them;
- derives pantry stock props and interested-villager concern from authoritative
storage/opportunity state, including state-only rebuilding after restore.
### `player/npc/NpcVisual.gd`
@@ -452,7 +458,8 @@ than duplicating these responsibilities across additional manager nodes.
- moves and rotates toward path points;
- reports arrival;
- presents definition-driven profession silhouettes, carried resources, task
glyphs, walk motion, brief trust-gain blossoms, and death state.
glyphs, walk motion, brief trust-gain blossoms, opportunity concern, and
death state.
### `player/player.gd` and `player/camera_rig.gd`
@@ -870,12 +877,16 @@ stable trigger, interested villager, pantry/food target, status, and later
resolution event; active evidence remains lasting. A real later NPC deposit or
player harvest into the pantry resolves it without quest-only history, economy
mutation by the generator, or AI assignment. The compact village/inspector UI
shows this lifecycle without changing the elevated follow camera.
shows this lifecycle without changing the elevated follow camera. The same
facts now have a cardless world expression: empty/low/stocked pantry props, one
interested-villager concern cue, and a brief refill response. Save/load rebuilds
the stable state without replaying the response.
Milestone 7 remains in progress. The next systems slice should prove the same
lifecycle with a missing-wood `task_blocked` condition and deterministic
interested-party death/staleness handling before extracting common opportunity
machinery.
Milestone 7 remains in progress. The immediate next slice is an outcome-defined
2030 second pantry-crisis demo loop—shortage, finite-resource travel, visible
carrying, deposit, and physical recovery—without debug UI. The second
missing-wood consumer and deterministic interested-party death/staleness rules
follow that visual exit test, before common opportunity machinery is extracted.
The remaining simulation-garden target still aims for: