docs: capture the embodied player citizen slices in plans and schema

This commit is contained in:
2026-08-09 00:11:54 +02:00
parent 0936ae6450
commit a46f07a1b8
4 changed files with 42 additions and 3 deletions
+8
View File
@@ -23,6 +23,7 @@ SimulationClock
-> VillageOpportunitySystem projects one known unresolved need -> VillageOpportunitySystem projects one known unresolved need
-> PlayerQuestSystem turns open needs into named player quests and -> PlayerQuestSystem turns open needs into named player quests and
grants Standing as the player resolves them through real supply/feed grants Standing as the player resolves them through real supply/feed
-> PlayerNeedsSystem advances the player's hunger, energy, and carry
-> WorldViewManager presents travel, NPC state, and world-state cues -> WorldViewManager presents travel, NPC state, and world-state cues
-> ActiveWorldAdapter supplies loaded-world positions/capacity -> ActiveWorldAdapter supplies loaded-world positions/capacity
-> LoadedResourceSpatialIndex bounds finite-anchor discovery -> LoadedResourceSpatialIndex bounds finite-anchor discovery
@@ -75,6 +76,13 @@ would otherwise obscure that lifecycle:
gratitude; a requester who personally trusts the player can ask them directly gratitude; a requester who personally trusts the player can ask them directly
even when another capable helper exists. Quests, Standing, and gratitude are even when another capable helper exists. Quests, Standing, and gratitude are
persisted and never become quest-only simulation state; persisted and never become quest-only simulation state;
- `simulation/quests/PlayerNeedsSystem.gd` owns the player's embodied hunger,
energy, starvation, death, and carried inventory, advancing on the
deterministic tick and mutating finite resources and storage only through the
ordinary economy and recorder;
- `simulation/quests/PlayerNegotiationSystem.gd` owns the read-only villager
talk surface plus accept/decline of personal requests, delegating quest
lifecycle to `PlayerQuestSystem`;
- `simulation/persistence/` owns save-slot file safety; - `simulation/persistence/` owns save-slot file safety;
- `simulation/state/` owns versioned serialized record contracts; - `simulation/state/` owns versioned serialized record contracts;
- `simulation/definitions/` owns stable IDs and immutable action/profession - `simulation/definitions/` owns stable IDs and immutable action/profession
+9
View File
@@ -864,6 +864,15 @@ Next:
asking them directly even when another helper could act. All of it flows asking them directly even when another helper could act. All of it flows
through the ordinary finite-resource harvest/feed contracts, survives through the ordinary finite-resource harvest/feed contracts, survives
save/restore deterministically, and adds no quest-only state. save/restore deterministically, and adds no quest-only state.
4. Make the player a citizen with a body. **Complete:** the player now has
hunger and energy that advance on the simulation tick, eats from the real
pantry, weakens when starving, and can die by starvation (halving Standing).
Gathering fills a carried inventory with capacity, and depositing at the
pantry or woodpile is an explicit transaction that resolves the same quests.
Pressing `E` on a villager opens a personal talk where you accept or decline
their real request. The embodied needs, carry, and negotiation rules live in
focused `PlayerNeedsSystem`/`PlayerNegotiationSystem` collaborators and are
covered by headless, runtime, and schema-restore regressions.
Do not start with GIS data, a full city, a large asset pack, or more NPC Do not start with GIS data, a full city, a large asset pack, or more NPC
mechanics. The next proof is a beautiful stage for the systems that already mechanics. The next proof is a beautiful stage for the systems that already
+20
View File
@@ -1021,6 +1021,26 @@ The first bounded player-Standing and quest slice is complete:
completion, invalidation, animal care, personal requests, and tier completion, invalidation, animal care, personal requests, and tier
progression. progression.
The first embodied-citizen slice is complete:
- the player now has a body in the world: hunger and energy advance on the
deterministic tick (`PlayerStateRecord`), eating at the pantry reduces the
player's own hunger, starvation weakens movement, and death by starvation
halves Standing and allows a respawn, all persisted through world schema v13;
- the player carries a real inventory with capacity: gathering a finite
resource fills the hands, depositing at the pantry or woodpile is an explicit
transaction that resolves opportunities and quests through the same supply
contract used by NPCs;
- pressing `E` on a nearby villager opens a personal talk: the villager greets
you and surfaces their real need, and you can accept their request (which
surfaces the same open quest) or decline it (closing the quest without
gratitude);
- `PlayerNeedsSystem`, `PlayerNegotiationSystem`, and `SimulationEventRecorder`
keep the player-citizen rules out of the manager;
- headless, runtime, carry/deposit, talk/negotiation, and schema-restore
regressions cover needs, death, respawn, carrying, depositing, quest
resolution, and personal request accept/decline.
Recently completed: Recently completed:
- `Jajce Villager Field Note 12`: a separate player-facing note selects the - `Jajce Villager Field Note 12`: a separate player-facing note selects the
+5 -3
View File
@@ -3,7 +3,7 @@
## Current contract ## Current contract
`SimulationStateRecord` is the versioned JSON boundary for the current `SimulationStateRecord` is the versioned JSON boundary for the current
simulation. The current world schema is v12 and captures: simulation. The current world schema is v13 and captures:
- simulation seed, tick interval, tick count, clock remainder, and elapsed - simulation seed, tick interval, tick count, clock remainder, and elapsed
clock ticks; clock ticks;
@@ -29,14 +29,16 @@ simulation. The current world schema is v12 and captures:
- the player's Standing reputation (0100), resolved-need count, and per-NPC - the player's Standing reputation (0100), resolved-need count, and per-NPC
gratitude, plus named player quest records that reference the originating gratitude, plus named player quest records that reference the originating
opportunity or animal, requester NPC, resource/target/amount, Standing opportunity or animal, requester NPC, resource/target/amount, Standing
reward, and exact resolution or invalidation tick. reward, and exact resolution or invalidation tick;
- the player's embodied state: hunger, energy, starvation progress, death
count, and carried inventory with its capacity (schema v13).
The top-level identity is: The top-level identity is:
```json ```json
{ {
"schema": "the_steward.simulation", "schema": "the_steward.simulation",
"schema_version": 12 "schema_version": 13
} }
``` ```