From a46f07a1b877e657d5cd284e49b4ceb6bfbbdfd5 Mon Sep 17 00:00:00 2001 From: Rijad Zuzo Date: Sun, 9 Aug 2026 00:11:54 +0200 Subject: [PATCH] docs: capture the embodied player citizen slices in plans and schema --- docs/ARCHITECTURE_OVERVIEW.md | 8 ++++++++ docs/BUILD_IN_PUBLIC_PLAN.md | 9 +++++++++ docs/LEARNING_ROADMAP.md | 20 ++++++++++++++++++++ docs/SIMULATION_STATE_SCHEMA.md | 8 +++++--- 4 files changed, 42 insertions(+), 3 deletions(-) diff --git a/docs/ARCHITECTURE_OVERVIEW.md b/docs/ARCHITECTURE_OVERVIEW.md index 1ca158d..169c2c5 100644 --- a/docs/ARCHITECTURE_OVERVIEW.md +++ b/docs/ARCHITECTURE_OVERVIEW.md @@ -23,6 +23,7 @@ SimulationClock -> VillageOpportunitySystem projects one known unresolved need -> PlayerQuestSystem turns open needs into named player quests and 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 -> ActiveWorldAdapter supplies loaded-world positions/capacity -> 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 even when another capable helper exists. Quests, Standing, and gratitude are 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/state/` owns versioned serialized record contracts; - `simulation/definitions/` owns stable IDs and immutable action/profession diff --git a/docs/BUILD_IN_PUBLIC_PLAN.md b/docs/BUILD_IN_PUBLIC_PLAN.md index 6970a6b..3101e6e 100644 --- a/docs/BUILD_IN_PUBLIC_PLAN.md +++ b/docs/BUILD_IN_PUBLIC_PLAN.md @@ -864,6 +864,15 @@ Next: asking them directly even when another helper could act. All of it flows through the ordinary finite-resource harvest/feed contracts, survives 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 mechanics. The next proof is a beautiful stage for the systems that already diff --git a/docs/LEARNING_ROADMAP.md b/docs/LEARNING_ROADMAP.md index 9ce6838..b3da59f 100644 --- a/docs/LEARNING_ROADMAP.md +++ b/docs/LEARNING_ROADMAP.md @@ -1021,6 +1021,26 @@ The first bounded player-Standing and quest slice is complete: completion, invalidation, animal care, personal requests, and tier 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: - `Jajce Villager Field Note 12`: a separate player-facing note selects the diff --git a/docs/SIMULATION_STATE_SCHEMA.md b/docs/SIMULATION_STATE_SCHEMA.md index a52e4d8..86b35f0 100644 --- a/docs/SIMULATION_STATE_SCHEMA.md +++ b/docs/SIMULATION_STATE_SCHEMA.md @@ -3,7 +3,7 @@ ## Current contract `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 clock ticks; @@ -29,14 +29,16 @@ simulation. The current world schema is v12 and captures: - the player's Standing reputation (0–100), resolved-need count, and per-NPC gratitude, plus named player quest records that reference the originating 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: ```json { "schema": "the_steward.simulation", - "schema_version": 12 + "schema_version": 13 } ```