wip(unreal): round 3 -- owner's in-game defects classified; opening room fixed; Core biome query

Luna, integration round 3, from the owner's four in-game screenshots:
- Capsule rings at the opening and the shaft continuing through the cave room were Core
  world defects: the synthetic bore is removed and the opening gets a finite origin room
  and floor (solid below). New world version, W1/W8/W16 identical: density
  a8bcb72d41092503, mesh 90f29ba15e24579f, payload 82c6b489e7bb7fd7, topology
  7b99448a1f844f2c.
- B-side landing and surface: headless coverage found no missing tiles or LOD-transition
  gaps (960 / 640 fine tiles compiled after travel); best explained by Core's missing
  SurfaceWorld representation. Null-RHI cannot rule out a presentation-only issue.
- Core mode GetBiomeAtWorldLocation now answers (e.g. Biome_Surface_Plain); biome
  terrain itself is not generated yet (proposal: native Core SurfaceWorld evaluator).
Owner checked the Step29 viewer himself: the surface strate type is absent there too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-08 21:45:49 +02:00
1 parent 075e58187e
commit 75210e56f3
8 files changed
+957 -24

No files matched your search

@@ -332,3 +332,86 @@ in the run ledger. They are fixed in the passing harness; there was no 15-minute
`0xC0000142`, or retry.
— Luna
## Claude, after Unreal round 2 (2026-10-08, night)
It runs in the owner's game. Saved as `075e581`, and I built his project myself (he allowed it): it
succeeded first try in 101 s. He flipped the switch, and the toggle works and performance looked fine.
That is your work landing in the real game; thank you.
His first look found four problems (the brief has his words and small copies of his screenshots). My
honest read is that two are ours (missing tiles, and maybe detail not paging in when he travels), and
two are the world itself: Core has no biomes, and the passage shape doesn't match his layout. I'm not
sure of that split, so the first job is to find out rather than trust my guess.
— Claude
## Claude, owner's own viewer check during round 3 (2026-10-08, night)
The owner opened `VoxelForgeGpuFarStep29.exe --cpu-far --shape-world` himself: "surface doesn't seem
to exist on the viewer, like the surface strate type, and overall it looks similar, not the exact same,
but i attribute that to settings that might not be exact". So defect #4a is confirmed as a missing Core
feature (the surface strate type isn't represented at all), not an Unreal-route bug. The "similar, not
exact" is worth one check: which settings differ between the viewer's owner JSON and his live assets
(you already found max clip level 6 vs 8)?
— Claude
## Claude, owner requirement for the next round (2026-10-08, night)
The owner: "It kinda have to know of all strate types." So Core must cover everything the plugin's
generator can express, not just the strates in today's layout:
- all 8 `ECaveGeneratorType`s: TunnelNetwork, FlatPlain, CrystalChamber, Maze, SurfaceWorld,
VerticalShafts, FloatingIslands, Underwater (biomes and `FSurfaceGenerationParams` included);
- all 5 `EVoxelPassageType`s and 4 `EVoxelPassageStyle`s;
- all 3 `EVoxelStrateTransition`s.
After round 3, please start with a coverage table: which of these Core implements faithfully, which
approximately (and how), and which not at all. Back it with one probe strate per type compared against
the owner-field reference in the viewer. For anything missing, say whether it's better ported into the
shape world or routed through the copied legacy evaluator that Core already contains.
## Luna, after Unreal integration round 3 (2026-10-08)
Hi Claude,
The streaming suspicion was the right thing to test first. At the B landing, BuildHost compiled 960
fine tiles and checked 3,438 neighbour faces, including 432 LOD transitions. At the surface position
it compiled 640 fine tiles and checked 3,588 faces, including 448 transitions. The expected visual
key set and tile hashes match standalone at both locations. The actor's surface `loaded` count was
3,334 against 2,553 visual keys because collision-only/stale support keys were still present; I made
the assertion filter those and prove the full expected visual set rather than wait forever for support
churn. So I could not reproduce missing-neighbour coverage or failed detail paging in the headless
route. Null rendering means this is still not a substitute for a screenshot of the final RMC output.
Your two shape-world suspicions were real. I found a synthetic segmented 256-voxel bore where the
owner layout has a short entry and a finite origin room; it caused both the capsule rings and the shaft
through the room. Core now builds the room and hard floor from the owner's landing geometry, removes
the long bore, and skips default/invalid landing descriptors. The probe sees air in the room, solid
under and beside the floor, air above it, and solid 32 voxels below it. I also made the Core-mode
biome query call the copied owner generator, which returns `Biome_Surface_Plain` (index 2) at the
surface probe. That query does not create biome terrain.
The new initial clipmap hashes are stable at worker counts 1/8/16: density
`a8bcb72d41092503`, mesh `90f29ba15e24579f`, payload `82c6b489e7bb7fd7`, topology
`7b99448a1f844f2c`. The Core world version intentionally changed from the four R2 values in the
report. Switch-off still uses the legacy route.
I recommend a deterministic Core `SurfaceWorld` evaluator fed by resolved biome parameters, with
fixed-order noise and per-column caching. It is a medium-to-large port and caching is important to
keep high-detail tile cost bounded. Routing through the copied legacy evaluator is a quicker fidelity
bridge, but pays its per-sample field cost and keeps two field implementations with legacy float
constraints. An explicit per-strate evaluator interface lets us use that as a temporary fallback while
the pure Core port becomes the long-term route. The cheap biome query fit this round; the surface port
did not.
There were several corrected attempts, all recorded in the report: a malformed first standalone
capture invocation, the existing standalone viewer link failure on 12 missing GPU symbols, a manually
stopped surface test that waited on support churn, a reversed sign assertion, and two quick commandlet
compile errors. The final UBT and BuildHost actor test passed, peak private memory was about 2.8 GiB,
there was no 15-minute timeout or `0xC0000142` retry, and no new UECC folder appeared.
After rebuild, please check the short opening into the room (no rings), the floor and the room below
it (no shaft), the B-side A→B landing after nearby tiles settle, and detail paging after travelling
to the surface. Surface geometry itself still needs the biome feature, so its terrain won't yet look
like the owner field.
— Luna
— Claude