docs: capture player standing and quest system in plans and schema
This commit is contained in:
@@ -21,6 +21,8 @@ SimulationClock
|
|||||||
-> EventKnowledgeSystem records, ranks, transfers, and retains bounded knowledge
|
-> EventKnowledgeSystem records, ranks, transfers, and retains bounded knowledge
|
||||||
-> RelationshipSystem applies evidence-gated social consequences
|
-> RelationshipSystem applies evidence-gated social consequences
|
||||||
-> VillageOpportunitySystem projects one known unresolved need
|
-> 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
|
||||||
-> 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
|
||||||
@@ -64,6 +66,15 @@ would otherwise obscure that lifecycle:
|
|||||||
When no such helper exists, it can separately derive an ephemeral
|
When no such helper exists, it can separately derive an ephemeral
|
||||||
`OpportunityPlayerResponseResult` from the real destination capacity and
|
`OpportunityPlayerResponseResult` from the real destination capacity and
|
||||||
enabled player-usable finite sources;
|
enabled player-usable finite sources;
|
||||||
|
- `simulation/quests/PlayerQuestSystem.gd` turns real open needs into named
|
||||||
|
player quests (`PlayerQuestRecord`) and owns the player's `PlayerStandingRecord`
|
||||||
|
reputation. A quest is generated only when the player can genuinely act
|
||||||
|
through the ordinary economy (an unassisted pantry/wood shortage, or a hungry
|
||||||
|
player-feedable animal), and it is resolved only by a real player supply or
|
||||||
|
feed event. Completing a quest grants Standing and raises the requester's
|
||||||
|
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/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
|
||||||
@@ -102,6 +113,7 @@ hard to read.
|
|||||||
| `simulation/relationships/` | Directed social consequences and relationship queries |
|
| `simulation/relationships/` | Directed social consequences and relationship queries |
|
||||||
| `simulation/population/` | Transient per-tick population query indexes |
|
| `simulation/population/` | Transient per-tick population query indexes |
|
||||||
| `simulation/opportunities/` | Knowledge-gated unresolved-condition projections |
|
| `simulation/opportunities/` | Knowledge-gated unresolved-condition projections |
|
||||||
|
| `simulation/quests/` | Named player quests and Standing reputation from real need resolution |
|
||||||
| `simulation/state/` | Versioned, serializable mutable records |
|
| `simulation/state/` | Versioned, serializable mutable records |
|
||||||
| `simulation/definitions/` | Stable IDs and immutable gameplay definitions |
|
| `simulation/definitions/` | Stable IDs and immutable gameplay definitions |
|
||||||
| `simulation/persistence/` | Validated local save-file storage |
|
| `simulation/persistence/` | Validated local save-file storage |
|
||||||
|
|||||||
@@ -855,6 +855,15 @@ Next:
|
|||||||
need for its interested villager, and proves that one ordinary
|
need for its interested villager, and proves that one ordinary
|
||||||
`harvest_resource_node` extraction resolves the same open opportunity and
|
`harvest_resource_node` extraction resolves the same open opportunity and
|
||||||
clears the need segment on the next refresh.
|
clears the need segment on the next refresh.
|
||||||
|
3. Give the player a reason to keep helping: a persistent **Standing** loop.
|
||||||
|
**Complete:** resolving real village needs (pantry, wood, hungry animals)
|
||||||
|
now grants Standing (Stranger → Known Hand → Trusted → Village Steward →
|
||||||
|
Voice of Jajce) and raises the requester's gratitude. The world's quest
|
||||||
|
generator turns each open need into a named player quest in a quiet
|
||||||
|
`QuestJournalHud`, and villagers who personally trust the player start
|
||||||
|
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.
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
@@ -1003,6 +1003,24 @@ The first bounded field-note opportunity surfacing slice is complete:
|
|||||||
staged pantry-crisis surfacing, helper naming, ordinary harvest resolution,
|
staged pantry-crisis surfacing, helper naming, ordinary harvest resolution,
|
||||||
and the absence of saved presentation state.
|
and the absence of saved presentation state.
|
||||||
|
|
||||||
|
The first bounded player-Standing and quest slice is complete:
|
||||||
|
|
||||||
|
- `PlayerStandingRecord` is a versioned, deterministic 0–100 reputation with
|
||||||
|
named tiers (Stranger, Known Hand, Trusted, Village Steward, Voice of Jajce)
|
||||||
|
and per-requester gratitude, persisted through world schema v12;
|
||||||
|
- `PlayerQuestRecord` plus `PlayerQuestSystem` turn real open needs into named
|
||||||
|
player quests: an unassisted pantry or wood shortage (or a hungry,
|
||||||
|
player-feedable animal) generates one quest for its requester, resolved only
|
||||||
|
by a real player supply or feed event through the ordinary economy;
|
||||||
|
- completing a quest grants Standing and raises the requester's gratitude, an
|
||||||
|
NPC who trusts the player personally can ask them directly even when another
|
||||||
|
capable helper exists, and tier advances emit a celebration beat;
|
||||||
|
- a read-only `QuestJournalHud` surfaces the active quest, Standing tier, and
|
||||||
|
gratitude feedback without entering saves or drawing RNG;
|
||||||
|
- headless, runtime, schema-restore, and GUT unit regressions cover generation,
|
||||||
|
completion, invalidation, animal care, personal requests, and tier
|
||||||
|
progression.
|
||||||
|
|
||||||
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
|
||||||
|
|||||||
@@ -276,6 +276,27 @@ The village currently tracks:
|
|||||||
- per-resource modifiers;
|
- per-resource modifiers;
|
||||||
- per-resource priorities.
|
- per-resource priorities.
|
||||||
|
|
||||||
|
### Player Standing and quests
|
||||||
|
|
||||||
|
The world now rewards player help with a persistent **Standing** reputation
|
||||||
|
(0–100) and named tiers: Stranger, Known Hand, Trusted, Village Steward, and
|
||||||
|
Voice of Jajce. The quest generator turns real open needs into player quests:
|
||||||
|
|
||||||
|
- an unassisted pantry or wood shortage generates a named quest from its
|
||||||
|
worried villager;
|
||||||
|
- a hungry, player-feedable goat generates an animal-care quest;
|
||||||
|
- completing a quest through the ordinary finite-resource harvest or feed
|
||||||
|
contract grants Standing, raises the requester's gratitude, and emits a
|
||||||
|
thank-you beat;
|
||||||
|
- a requester who personally trusts the player (gratitude ≥ 0.5 and Standing
|
||||||
|
tier at least Known Hand) asks them directly even when another capable
|
||||||
|
helper exists;
|
||||||
|
- a compact `QuestJournalHud` shows the active quest, Standing tier, and
|
||||||
|
gratitude feedback; tier advances trigger a celebration beat.
|
||||||
|
|
||||||
|
Quests, Standing, and gratitude persist through world schema v12 and never
|
||||||
|
become quest-only simulation state.
|
||||||
|
|
||||||
### NPC task lifecycle
|
### NPC task lifecycle
|
||||||
|
|
||||||
Task states are:
|
Task states are:
|
||||||
|
|||||||
@@ -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 v11 and captures:
|
simulation. The current world schema is v12 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;
|
||||||
@@ -25,14 +25,18 @@ simulation. The current world schema is v11 and captures:
|
|||||||
historical communicator provenance;
|
historical communicator provenance;
|
||||||
- opportunity records with stable type/status, interested NPC, trigger event,
|
- opportunity records with stable type/status, interested NPC, trigger event,
|
||||||
target storage/resource/amount, exact later resolution event identity, or a
|
target storage/resource/amount, exact later resolution event identity, or a
|
||||||
deterministic invalidation reason and close tick.
|
deterministic invalidation reason and close tick;
|
||||||
|
- 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.
|
||||||
|
|
||||||
The top-level identity is:
|
The top-level identity is:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"schema": "the_steward.simulation",
|
"schema": "the_steward.simulation",
|
||||||
"schema_version": 11
|
"schema_version": 12
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user