# Jajce River 03 Captured: 2026-07-17 ## Files - [before overview](jajce_river_03_before.png) - [after overview](jajce_river_03_after.png) - `tools/capture_jajce_lookdev.gd` - `tools/generate_jajce_terrain.gd` - `tools/bake_jajce_navigation.gd` The images use the same 1280×720 camera, fixed daylight value, warmup, and Metal renderer. They are a matched checkpoint rather than two independently composed beauty shots. ## What changed The previous river was a turquoise presentation ribbon laid across a mostly flat valley. Its waterfall was held by a large freestanding rock frame, so the water feature read more like a prop than part of the landscape. The deterministic Terrain3D source now creates: - a raised shelf upstream of the falls; - a shallow upper stream widening toward the lip; - an approximately 12 m drop into a shaped plunge basin; - a curved downstream channel with visible banks; and - slope-driven rock texture around the drop and steeper channel edges. The waterfall frame is smaller and nested into that landform. Its foam is more restrained, and the mist uses a soft radial mask so individual particle quads do not appear against the dark cliff. The result remains deliberately reduced: citadel, roofs, shelf, falls, bridge, and river form one readable village-center composition without attempting a literal reconstruction of Jajce. ## Deterministic authoring contract `JajceWatercourse` owns the shared center lines, widths, bed heights, shelf height, and water offset. `generate_jajce_terrain.gd` uses that profile to produce the checked-in Terrain3D regions; `TerrainRiverRibbon.gd` uses the same profile and samples the generated terrain for both water meshes. Changing the watercourse therefore has one explicit regeneration and navigation-rebake path instead of unrelated hand-tuned terrain and presentation coordinates. This is presentation and interaction geometry only. No resource IDs, simulation records, RNG streams, save data, or NPC decision rules changed. ## Validation The focused watercourse scenario records an upper-stream height of 11.28 m, a 12.43 m shelf bank, and a -0.65 m plunge basin. It also checks multiple points along the downstream bed and verifies both generated water ribbons remain within 3 cm of the Terrain3D surface plus the shared water offset. The navigation bake now contains 403 vertices and 620 polygons. The Jajce scaffold verifies required paths reach their destinations and track the new terrain heights, while the runtime integration scenario still completes real player resource gathering with all 18 finite resource anchors loaded. ## Next visual/system proof That proof is complete in [Jajce Resource Grove 04](JAJCE_RESOURCE_GROVE_04.md): a bounded riverbank mass keeps decorative density separate from two stable-ID finite anchors. The next pass should make those berry/tree visuals reflect real depletion before adding a second forest-edge cluster. Bridge, buildings, and fortress geometry remain prototype blockouts and should be replaced gradually rather than through a broad asset dump. ## Capture command ```bash HOME="$PWD/logs/quality/godot_profile" \ APPDATA="$PWD/logs/quality/godot_profile" \ LOCALAPPDATA="$PWD/logs/quality/godot_profile" \ /Applications/Godot.app/Contents/MacOS/Godot \ --path "$PWD" --script res://tools/capture_jajce_lookdev.gd -- \ --output=res://docs/baselines/jajce_river_03_after.png ```