feat: index loaded resource discovery

This commit is contained in:
Rijad Zuzo
2026-07-17 00:34:30 +02:00
parent 2c88ed6ea8
commit 5356c34fd7
21 changed files with 1392 additions and 69 deletions
+26 -9
View File
@@ -195,8 +195,8 @@ study, and patrol target typed activity sites. The migration is documented in
- **Terrain:** Terrain3D 1.0.2 is installed and enabled
- **Jajce runtime:** reusable 512 m Terrain3D seed, stable ResourceNode
placement, larger citadel/village-center composition, terrain-following river
ribbon, reactive camera-local grass, and Terrain3D-derived runtime navigation
with collision guardrails
ribbon, reactive camera-local grass, exact indexed finite-resource discovery,
and Terrain3D-derived runtime navigation with collision guardrails
- **Lookdev baseline:** `Jajce Lookdev 01` is captured at
`docs/baselines/jajce_lookdev_01.png` with
`tools/capture_jajce_lookdev.gd`
@@ -330,7 +330,9 @@ than broad resource zones: trees in foliage clusters, berry patches, animal
camps, and village stockpiles can be ranked by reachability, distance, safety,
profession, and NPC comfort range. The current resolver already combines
distance with resource `safety_risk`, `comfort_distance`, and
`discovery_priority` metadata.
`discovery_priority` metadata. Loaded anchors are indexed by
`ActiveWorldAdapter`; exact expanding queries usually inspect only nearby cells
but retain far sources whenever their authoritative metadata can still win.
### Jajce scaffold
@@ -548,6 +550,7 @@ NpcVisual navigates through the active world
│ ├── SimulationClock.gd
│ ├── SimulationManager.gd
│ ├── actions/ Selection, execution, and target resolution
│ ├── benchmark/ Population/history and resource-query workloads
│ ├── definitions/ Stable IDs and custom definition resources
│ ├── economy/ Inventory and storage transactions
│ ├── events/ Ordered event history and queries
@@ -566,6 +569,7 @@ NpcVisual navigates through the active world
│ ├── jajce_world_scaffold_test.gd
│ ├── knowledge_retention_consequence_test.gd
│ ├── jajce_runtime_integration_test.gd
│ ├── loaded_resource_spatial_query_test.gd
│ ├── npc_visual_lifecycle_test.gd
│ ├── opportunity_communication_helper_test.gd
│ ├── relationship_consequence_test.gd
@@ -577,6 +581,7 @@ NpcVisual navigates through the active world
│ └── witnessed_knowledge_consequence_test.gd
├── terrain/jajce/ Dedicated Terrain3D seed data and assets
├── tools/
│ ├── benchmark_loaded_resource_discovery.gd
│ └── generate_jajce_terrain_seed.gd
├── world/
│ ├── jajce/
@@ -586,6 +591,7 @@ NpcVisual navigates through the active world
│ │ ├── beauty_camera.gd
│ │ └── vfx/WindGustField.tscn
│ ├── resource_nodes/
│ │ ├── LoadedResourceSpatialIndex.gd
│ │ ├── ResourceNode.gd
│ │ ├── ResourceNode.gd.uid
│ │ └── ResourceNode.tscn
@@ -643,7 +649,9 @@ These are expected prototype constraints, not necessarily isolated bugs:
- Active navigation is used as if all agents are local; no simulation LOD exists.
- Unloaded traveling NPCs preserve their state but do not yet advance through
abstract travel time.
- There is no spatial query/index layer for large populations.
- Loaded finite-resource anchors have one measured active-world spatial index;
people, buildings, events, and unloaded simulation still have no spatial/LOD
layer.
- SimulationManager still coordinates the tick lifecycle and bounded
player-facing commands, while action rules, active-world queries, economic
transactions, and event history have focused collaborators.
@@ -962,11 +970,20 @@ reference target, while exposing superlinear population cost and rapid
objective-log growth. Workload details and raw samples live in
[`docs/benchmarks/`](benchmarks/SIMULATION_SCALING_BASELINE_01.md).
The next slice should build one stable per-tick population view for the
existing trusted-starving-subject query, which currently rebuilds an all-NPC
map for each applicable scarce-food decision. Preserve exact selection and
continuation checksums, rerun the same benchmark, and use the remaining measured
cost before committing to spatial partitions or active/abstract LOD.
The first two measured optimizations are complete. A disposable per-tick
population view preserves continuation checksums and improves the 600-NPC
fixture by 23.3%. A separate resource-specific grid inside
`ActiveWorldAdapter` preserves exact selected targets while reducing the
reviewed 1,800-loaded-anchor resolution from 6,448.00 to 46.94 microseconds.
Raw samples and workload exclusions live in
[Simulation scaling baseline 02](benchmarks/SIMULATION_SCALING_BASELINE_02.md)
and [Loaded Resource Discovery 01](benchmarks/LOADED_RESOURCE_DISCOVERY_01.md).
The next slice should return to the authored Jajce stage: sculpt the real
Terrain3D river channel and waterfall shelf, rebake/validate navigation, and
use the following foliage expansion to prove a bounded stable-ID resource
anchor placement workflow beside decorative Terrain3D instances. Do not yet
generalize the resource grid or introduce active/abstract simulation LOD.
The remaining simulation-garden target still aims for: