docs: mark Jajce scaffold proof complete
This commit is contained in:
@@ -234,7 +234,7 @@ makes the world pleasant to inhabit and the people pleasant to watch.
|
|||||||
|
|
||||||
## Implementation phases
|
## Implementation phases
|
||||||
|
|
||||||
### Phase 0 — Preserve and capture the baseline
|
### Phase 0 — Preserve and capture the baseline 🔶 automated baseline complete
|
||||||
|
|
||||||
Before replacing anything:
|
Before replacing anything:
|
||||||
|
|
||||||
@@ -252,6 +252,11 @@ This becomes both a regression reference and excellent before/after material.
|
|||||||
There is a reproducible baseline showing the existing flat prototype and its
|
There is a reproducible baseline showing the existing flat prototype and its
|
||||||
working behaviors.
|
working behaviors.
|
||||||
|
|
||||||
|
`tests/flat_map_baseline_test.gd` and
|
||||||
|
`docs/baselines/FLAT_MAP_BASELINE.md` establish the executable behavior
|
||||||
|
baseline. A visual before-clip and frame-time capture remain useful content work
|
||||||
|
but do not block the architecture gate.
|
||||||
|
|
||||||
### Systems prerequisite — Migrate food and wood targets ✅ complete
|
### Systems prerequisite — Migrate food and wood targets ✅ complete
|
||||||
|
|
||||||
Implement and validate the first ResourceNodes on the current flat map before
|
Implement and validate the first ResourceNodes on the current flat map before
|
||||||
@@ -276,7 +281,7 @@ to be resource sources.
|
|||||||
Food and wood work without their zones during normal play, resource conservation
|
Food and wood work without their zones during normal play, resource conservation
|
||||||
holds, and target failure does not leave a permanent reservation.
|
holds, and target failure does not leave a permanent reservation.
|
||||||
|
|
||||||
### Phase 1 — Create the reusable world scaffold
|
### Phase 1 — Create the reusable world scaffold ✅ complete
|
||||||
|
|
||||||
Create `world/jajce/JajceWorld.tscn` with:
|
Create `world/jajce/JajceWorld.tscn` with:
|
||||||
|
|
||||||
@@ -299,7 +304,11 @@ look-development scene.
|
|||||||
The same `JajceWorld` instance can open in the lookdev scene and can be instanced
|
The same `JajceWorld` instance can open in the lookdev scene and can be instanced
|
||||||
under a temporary runtime test without errors.
|
under a temporary runtime test without errors.
|
||||||
|
|
||||||
### Phase 2 — Greybox the hero composition
|
Implemented in `556d0fd` with dedicated Terrain3D seed data, reusable world and
|
||||||
|
lookdev scenes, environment roots, stable-ID ResourceNodes, activity markers,
|
||||||
|
and a headless scaffold test.
|
||||||
|
|
||||||
|
### Phase 2 — Greybox the hero composition ✅ initial proof complete
|
||||||
|
|
||||||
Sculpt by hand before attempting GIS/DEM import:
|
Sculpt by hand before attempting GIS/DEM import:
|
||||||
|
|
||||||
@@ -337,7 +346,12 @@ The final navigation bake still happens after terrain and props stabilize.
|
|||||||
One static frame contains the ridge landmark, roofs, river/waterfall, and
|
One static frame contains the ridge landmark, roofs, river/waterfall, and
|
||||||
village work area. A test agent can traverse the intended task loop.
|
village work area. A test agent can traverse the intended task loop.
|
||||||
|
|
||||||
### Systems gate — Harden simulation authority
|
The initial proof uses primitive ridge, fortress, terrace, house, mill, bridge,
|
||||||
|
river, and waterfall silhouettes plus a temporary baked navigation loop. The
|
||||||
|
Terrain3D seed remains flat; sculpt refinement and the final bake resume only
|
||||||
|
after the architecture gate.
|
||||||
|
|
||||||
|
### Systems gate — Harden simulation authority ⏭ next
|
||||||
|
|
||||||
After the scaffold, greybox, and navigation spike prove the world shape, pause
|
After the scaffold, greybox, and navigation spike prove the world shape, pause
|
||||||
visual production and complete the mandatory architecture gate from the
|
visual production and complete the mandatory architecture gate from the
|
||||||
@@ -567,21 +581,24 @@ The follow-up milestone is complete when:
|
|||||||
|
|
||||||
## Immediate implementation order
|
## Immediate implementation order
|
||||||
|
|
||||||
1. Capture the current flat-map baseline.
|
Completed:
|
||||||
2. Treat ResourceNode migration and player parity as complete.
|
|
||||||
3. Create `JajceWorld.tscn` and dedicated Terrain3D data.
|
1. Executable flat-map baseline.
|
||||||
4. Create `JajceLookdev.tscn` and its beauty camera.
|
2. ResourceNode migration and player parity.
|
||||||
5. Greybox the ridge, river valley, terraces, and waterfall drop.
|
3. `JajceWorld`, dedicated 512 m Terrain3D seed, and lookdev camera.
|
||||||
6. Place ResourceNodes with stable IDs and only required activity markers.
|
4. Initial landmark greybox, stable-ID resources, activity markers, and
|
||||||
7. Block out the fortress, houses, mill, and bridge.
|
navigation spike.
|
||||||
8. Run the early navigation spike.
|
|
||||||
9. Pass the mandatory architecture gate before beauty production.
|
Next:
|
||||||
10. Establish terrain materials, lighting, water, mist, and foliage.
|
|
||||||
11. Capture “Jajce Lookdev 01.”
|
1. Pass the mandatory architecture gate before beauty production.
|
||||||
12. Instance `JajceWorld` into `main.tscn`.
|
2. Sculpt the Terrain3D ridge, river valley, terraces, and waterfall drop.
|
||||||
13. Reconnect activity markers, rebake navigation, and run regression scenarios.
|
3. Establish terrain materials, lighting, water, mist, and foliage.
|
||||||
14. Add profession/readability presentation and the reason inspector.
|
4. Capture “Jajce Lookdev 01.”
|
||||||
15. Capture “Simulation Garden 01.”
|
5. Instance `JajceWorld` into `main.tscn`.
|
||||||
|
6. Reconnect activity markers, rebake navigation, and run regression scenarios.
|
||||||
|
7. Add profession/readability presentation and the reason inspector.
|
||||||
|
8. Capture “Simulation Garden 01.”
|
||||||
|
|
||||||
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
-18
@@ -29,9 +29,10 @@ Each milestone should produce five outcomes:
|
|||||||
Do not advance because files exist. Advance when the exit test passes.
|
Do not advance because files exist. Advance when the exit test passes.
|
||||||
|
|
||||||
The current implementation has completed ResourceNode migration through player
|
The current implementation has completed ResourceNode migration through player
|
||||||
parity. Next, build only the minimal Jajce scaffold and navigation proof, then
|
parity plus the minimal Jajce scaffold and navigation proof. The architecture
|
||||||
pass the architecture gate below before beauty production or broader simulation
|
gate below is now active and must pass before beauty production or broader
|
||||||
features. See [ADR 0001](decisions/0001-simulation-authority-boundary.md).
|
simulation features. See
|
||||||
|
[ADR 0001](decisions/0001-simulation-authority-boundary.md).
|
||||||
|
|
||||||
## Mandatory architecture gate
|
## Mandatory architecture gate
|
||||||
|
|
||||||
@@ -591,29 +592,30 @@ Completed foundations:
|
|||||||
- finite food and wood `ResourceNode` instances;
|
- finite food and wood `ResourceNode` instances;
|
||||||
- NPC target selection, reservation, depletion, and authoritative yield;
|
- NPC target selection, reservation, depletion, and authoritative yield;
|
||||||
- player parity through the same extraction contract;
|
- player parity through the same extraction contract;
|
||||||
- navigation-failure recovery and an initial headless contention scenario.
|
- navigation-failure recovery and an initial headless contention scenario;
|
||||||
|
- executable flat-map baseline;
|
||||||
|
- 512 m Jajce Terrain3D seed, greybox landmarks, stable-ID resource placement,
|
||||||
|
lookdev scene, and tested temporary navigation loop.
|
||||||
|
|
||||||
The practical next sequence is:
|
The practical next sequence is:
|
||||||
|
|
||||||
1. Capture a reproducible flat-map baseline.
|
1. Begin the architecture gate with deterministic clock/randomness, a headless
|
||||||
2. Create only the minimal `JajceWorld` scaffold, terrain greybox, navigation
|
|
||||||
spike, and stable-ID resource-placement proof.
|
|
||||||
3. Begin the architecture gate with deterministic clock/randomness, a headless
|
|
||||||
scenario runner, final-state checksums, and serializable state records.
|
scenario runner, final-state checksums, and serializable state records.
|
||||||
4. Move resource amount/reservation authority out of `ResourceNode` scenes.
|
2. Move resource amount/reservation authority out of `ResourceNode` scenes.
|
||||||
5. Replace free-form task and profession strings with stable IDs and
|
3. Replace free-form task and profession strings with stable IDs and
|
||||||
definitions.
|
definitions.
|
||||||
6. Separate action selection, execution, target resolution, and visual travel;
|
4. Separate action selection, execution, target resolution, and visual travel;
|
||||||
remove decision mutation from `WorldViewManager`.
|
remove decision mutation from `WorldViewManager`.
|
||||||
7. Define active-position synchronization and prove visual unload/reload.
|
5. Define active-position synchronization and prove visual unload/reload.
|
||||||
8. Pass the architecture gate's deterministic headless and unloaded-visual exit
|
6. Pass the architecture gate's deterministic headless and unloaded-visual exit
|
||||||
tests.
|
tests.
|
||||||
9. Build location-based food storage, inventory, and transactions.
|
7. Build location-based food storage, inventory, and transactions.
|
||||||
10. Emit structured economic events while making one NPC visibly gather, carry,
|
8. Emit structured economic events while making one NPC visibly gather, carry,
|
||||||
store, retrieve, and eat food.
|
store, retrieve, and eat food.
|
||||||
11. Add versioned save/load before schedules or social state expand.
|
9. Add versioned save/load before schedules or social state expand.
|
||||||
12. Resume the attractive Terrain3D simulation-garden beauty pass.
|
10. Resume Terrain3D sculpting, runtime integration, and the simulation-garden
|
||||||
13. Add stylized character and profession readability plus the reason
|
beauty pass.
|
||||||
|
11. Add stylized character and profession readability plus the reason
|
||||||
inspector.
|
inspector.
|
||||||
|
|
||||||
This order strengthens the simulation while regularly producing visible
|
This order strengthens the simulation while regularly producing visible
|
||||||
|
|||||||
+35
-7
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
> Agent-facing context for understanding the project quickly.
|
> Agent-facing context for understanding the project quickly.
|
||||||
>
|
>
|
||||||
> Snapshot basis: repository state after commit `0900022`, July 2026. Treat the
|
> Snapshot basis: repository state after commit `556d0fd`, July 2026. Treat the
|
||||||
> code as the source of truth when this document and the implementation differ.
|
> 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.
|
See the [documentation map](README.md) for the authority and scope of each plan.
|
||||||
@@ -191,6 +191,8 @@ non-resource tasks. The migration is documented in
|
|||||||
- **Language:** GDScript (`odig` analysis with warnings treated as errors)
|
- **Language:** GDScript (`odig` analysis with warnings treated as errors)
|
||||||
- **Main scene:** `res://main.tscn`
|
- **Main scene:** `res://main.tscn`
|
||||||
- **Terrain:** Terrain3D 1.0.2 is installed and enabled
|
- **Terrain:** Terrain3D 1.0.2 is installed and enabled
|
||||||
|
- **Jajce scaffold:** separate 512 m Terrain3D seed, greybox landmarks, stable
|
||||||
|
ResourceNode placement, lookdev camera, and temporary navigation spike
|
||||||
- **Terrain compatibility floor:** Godot 4.4 according to the bundled extension
|
- **Terrain compatibility floor:** Godot 4.4 according to the bundled extension
|
||||||
- **Version control:** Git
|
- **Version control:** Git
|
||||||
- **Primary branch:** `main`
|
- **Primary branch:** `main`
|
||||||
@@ -313,6 +315,24 @@ Storage, rest, study, and guard behavior should later migrate to target types
|
|||||||
that match their actual semantics rather than treating every usable object as a
|
that match their actual semantics rather than treating every usable object as a
|
||||||
resource source.
|
resource source.
|
||||||
|
|
||||||
|
### Jajce scaffold
|
||||||
|
|
||||||
|
`world/jajce/JajceWorld.tscn` now provides a reusable environment scaffold
|
||||||
|
separate from `main.tscn`:
|
||||||
|
|
||||||
|
- a centered 512 m flat Terrain3D seed split across four regions;
|
||||||
|
- dedicated terrain data and assets;
|
||||||
|
- greybox ridge, fortress, terraces, houses, mill, bridge, river, and waterfall;
|
||||||
|
- four ResourceNodes preserving the flat-map stable IDs;
|
||||||
|
- remaining food, guard, study, and rest activity markers;
|
||||||
|
- a temporary baked navigation loop with 24 tested routes;
|
||||||
|
- a look-development scene and camera.
|
||||||
|
|
||||||
|
This is a placement and integration proof, not the final terrain composition.
|
||||||
|
`main.tscn` still runs the flat prototype. Terrain3D startup requires several
|
||||||
|
physics frames before reliable NavigationServer path queries; the scaffold test
|
||||||
|
captures that synchronization requirement.
|
||||||
|
|
||||||
### Current UI
|
### Current UI
|
||||||
|
|
||||||
A small village panel displays:
|
A small village panel displays:
|
||||||
@@ -447,8 +467,18 @@ NpcVisual navigates through the active world
|
|||||||
│ ├── SimVillage.gd
|
│ ├── SimVillage.gd
|
||||||
│ └── SimulationManager.gd
|
│ └── SimulationManager.gd
|
||||||
├── tests/
|
├── tests/
|
||||||
|
│ ├── flat_map_baseline_test.gd
|
||||||
|
│ ├── jajce_world_scaffold_test.gd
|
||||||
│ └── resource_node_player_parity_test.gd
|
│ └── resource_node_player_parity_test.gd
|
||||||
|
├── terrain/jajce/ Dedicated Terrain3D seed data and assets
|
||||||
|
├── tools/
|
||||||
|
│ └── generate_jajce_terrain_seed.gd
|
||||||
├── world/
|
├── world/
|
||||||
|
│ ├── jajce/
|
||||||
|
│ │ ├── JajceWorld.tscn
|
||||||
|
│ │ ├── JajceLookdev.tscn
|
||||||
|
│ │ ├── jajce_world.gd
|
||||||
|
│ │ └── beauty_camera.gd
|
||||||
│ ├── resource_nodes/
|
│ ├── resource_nodes/
|
||||||
│ │ ├── ResourceNode.gd
|
│ │ ├── ResourceNode.gd
|
||||||
│ │ ├── ResourceNode.gd.uid
|
│ │ ├── ResourceNode.gd.uid
|
||||||
@@ -676,13 +706,11 @@ visual milestone should support or reveal actual simulation state.
|
|||||||
|
|
||||||
## Immediate milestone: scaffold, architecture gate, then simulation garden
|
## Immediate milestone: scaffold, architecture gate, then simulation garden
|
||||||
|
|
||||||
Food and wood migration on the flat test map is complete. The next visual step
|
Food and wood migration and the deliberately minimal `JajceWorld` scaffold,
|
||||||
is a deliberately minimal `JajceWorld` scaffold, greybox, navigation spike, and
|
greybox, navigation spike, and stable-ID placement proof are complete. Do not
|
||||||
resource-placement proof. Do not proceed directly from that proof into
|
proceed directly from that proof into open-ended beauty production.
|
||||||
open-ended beauty production.
|
|
||||||
|
|
||||||
After the scaffold proves terrain and navigation, complete the architecture
|
The architecture gate is now the active milestone:
|
||||||
gate:
|
|
||||||
|
|
||||||
- deterministic clock and controlled random source;
|
- deterministic clock and controlled random source;
|
||||||
- fixed-seed headless scenarios with final-state checksums;
|
- fixed-seed headless scenarios with final-state checksums;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
| **3** | Authoritative extraction on completion | ✅ Complete |
|
| **3** | Authoritative extraction on completion | ✅ Complete |
|
||||||
| **4a** | Wood target selection (NPC) | ✅ Complete |
|
| **4a** | Wood target selection (NPC) | ✅ Complete |
|
||||||
| **4b** | Player parity (extraction contract) | ✅ Complete |
|
| **4b** | Player parity (extraction contract) | ✅ Complete |
|
||||||
| **5** | Jajce world placement | ❌ Not started |
|
| **5** | Jajce world placement | 🔶 Scaffold/navigation proof complete |
|
||||||
| **6** | Remove remaining zone model | ❌ Not started |
|
| **6** | Remove remaining zone model | ❌ Not started |
|
||||||
|
|
||||||
### Key divergences from the original plan
|
### Key divergences from the original plan
|
||||||
@@ -485,6 +485,11 @@ baseline.
|
|||||||
- use the old task zones only for rest, eat, patrol, and study;
|
- use the old task zones only for rest, eat, patrol, and study;
|
||||||
- verify target discovery does not rely on parent scene paths.
|
- verify target discovery does not rely on parent scene paths.
|
||||||
|
|
||||||
|
**Progress:** `556d0fd` adds the standalone Jajce scaffold, four stable-ID
|
||||||
|
resources, dedicated Terrain3D seed data, remaining activity markers, and 24
|
||||||
|
headless navigation-route checks. Runtime `main.tscn` migration is intentionally
|
||||||
|
deferred until after the architecture gate, so this phase is not yet complete.
|
||||||
|
|
||||||
**Exit:** the existing food and wood loops work after moving from the flat map
|
**Exit:** the existing food and wood loops work after moving from the flat map
|
||||||
to Terrain3D.
|
to Terrain3D.
|
||||||
|
|
||||||
@@ -558,7 +563,7 @@ resource conservation through debug presentation.
|
|||||||
| 10 | Add navigation failure handling (replaces regression scenarios) | ✅ Done | `b8752f8` |
|
| 10 | Add navigation failure handling (replaces regression scenarios) | ✅ Done | `b8752f8` |
|
||||||
| 11 | Migrate wood | ✅ Done | `c6033b6`, `8049c52` |
|
| 11 | Migrate wood | ✅ Done | `c6033b6`, `8049c52` |
|
||||||
| 12 | Give the player the same extraction path | ✅ Done | `326df51` |
|
| 12 | Give the player the same extraction path | ✅ Done | `326df51` |
|
||||||
| 13 | Continue with the Jajce world scaffold | ❌ Not started | — |
|
| 13 | Continue with the Jajce world scaffold | 🔶 Placement proof done; runtime migration pending | `556d0fd` |
|
||||||
|
|
||||||
## Definition of done for the first migration
|
## Definition of done for the first migration
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user