feat: replace activity markers with typed sites

This commit is contained in:
2026-07-07 13:27:02 +02:00
parent e5bd93d705
commit 4c090f1635
19 changed files with 308 additions and 126 deletions
+23 -25
View File
@@ -41,8 +41,8 @@ Do not redo these tasks:
- hunger, energy, starvation, death, task scoring, and task duration;
- task-change and village-change signals;
- visual NPC navigation and arrival reporting;
- finite berry/tree ResourceNodes plus food, guard, study, and rest activity
markers;
- finite berry/tree ResourceNodes plus typed food, guard, study, and rest
world sites;
- aggregate village UI;
- initial tree assets;
- a baked navigation region for the current flat test area.
@@ -56,21 +56,20 @@ plugin content. They are references, not the game.
```text
Main
├── current flat World and NavigationRegion3D
├── JajceWorld
├── Player
├── CameraRig
├── SimulationManager
├── WorldViewManager
├── ActiveNPCs
├── ActivityMarkers
├── typed world sites inside JajceWorld/WorldObjects
├── WorldEnvironment
└── UI
```
The player and `WorldViewManager` still reference non-resource activity sites
through exported `NodePath` values. `NpcVisual` relies on the navigation map to
reach legacy guard/study/rest markers, `ResourceNode` interaction points, and
the typed village pantry `StorageNode`.
The player still references interactable world sites through exported `NodePath`
values. `NpcVisual` relies on the navigation map to reach typed `ActivitySite`,
`StorageNode`, and `ResourceNode` interaction points.
Replacing the ground without respecting those references would break behavior
that already works.
@@ -95,12 +94,12 @@ Main
│ │ ├── ResourceNodes
│ │ ├── BerryBush instances
│ │ └── Tree instances
│ │ ── StorageSites
│ │ └── VillagePantry
├── LegacyActivityMarkers temporary non-resource activities
│ │ ├── GuardZone
│ │ ├── StudyZone
│ │ └── RestZone
│ │ ── StorageSites
│ │ └── VillagePantry
│ └── ActivitySites
│ │ ├── GuardPost
│ │ ├── StudyDesk
│ │ └── RestBench
│ ├── DirectionalLight3D
│ └── WorldEnvironment
├── Player
@@ -111,11 +110,10 @@ Main
└── UI
```
`JajceWorld` should contain geography, world-object presentations, and temporary
legacy interaction locations. The pantry has since moved out of
`LegacyActivityMarkers` into `WorldObjects/StorageSites/VillagePantry`; guard,
study, and rest remain temporary markers. `JajceWorld` should not own
`SimulationManager`, simulated NPC data, player state, or UI.
`JajceWorld` should contain geography and world-object presentations. The former
legacy interaction locations now live as typed storage and activity sites under
`WorldObjects`; `JajceWorld` should not own `SimulationManager`, simulated NPC
data, player state, or UI.
Create a small look-development wrapper that instances the same world:
@@ -295,7 +293,7 @@ Create `world/jajce/JajceWorld.tscn` with:
- placeholder `VillageRoot`;
- placeholder `FoliageRoot`;
- a navigation region;
- resource-node containers plus temporary activity markers;
- resource-node, storage-site, and activity-site containers;
- lighting and environment.
Create `JajceLookdev.tscn` that instances `JajceWorld` and adds a temporary
@@ -422,8 +420,8 @@ Once the world composition is stable:
2. Disable or remove the old flat world only after the new instance is present.
3. Place or move bushes and trees under
`JajceWorld/WorldObjects/ResourceNodes` while preserving stable IDs.
4. Reconnect only remaining non-resource activity markers under
`JajceWorld/LegacyActivityMarkers`.
4. Reconnect remaining non-resource activities as typed sites under
`JajceWorld/WorldObjects`.
5. Bake navigation for the new walkable area.
6. Test each existing task from multiple spawn positions.
7. Verify task arrival still transitions from traveling to working.
@@ -436,8 +434,8 @@ Once the world composition is stable:
Do not move simulation ownership into `JajceWorld` to make wiring convenient.
**Status: runtime integration complete.** `main.tscn` now instances the reusable
world and points player/simulation adapters at its stable-ID resources and
remaining activity markers. The duplicate flat world objects were removed.
world and points player/simulation adapters at its stable-ID resources, storage
site, and activity sites. The duplicate flat world objects were removed.
The runtime regression checks Terrain3D presence, 24 navigation routes, core
task execution, starvation/death, player extraction parity, reservations, and
NPC visual lifecycle. Terrain sculpting and presentation polish remain
@@ -445,7 +443,7 @@ separate work, not blockers for this wiring milestone.
### Exit condition
The current three NPCs and player can perform all existing prototype behaviors
The current six NPCs and player can perform all existing prototype behaviors
inside the new terrain without regression.
### Phase 5 — Make the simulation readable on video