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:
1 parent
075e58187e
commit
75210e56f3
8 files changed
+957
-24
No files matched your search
@@ -1,8 +1,11 @@
|
||||
# Unreal Core integration report — round 2
|
||||
# Unreal Core integration report — rounds 2–3
|
||||
|
||||
Date: 2026-10-08
|
||||
Branch: `unreal/core-integration`
|
||||
|
||||
The initial sections preserve the round-2 integration baseline. The round-3 addendum records the
|
||||
owner's visual findings and current status, superseding earlier statements where indicated.
|
||||
|
||||
## Result
|
||||
|
||||
Goals 1 and 2 now pass in BuildHost: an `AVoxelWorld` with Core mode enabled matches standalone Core
|
||||
@@ -145,10 +148,12 @@ final export itself retains the asset values.
|
||||
content, and this asset is not part of the plugin; the staged copied content also lacks that
|
||||
package. It did not prevent schema resolution, hash checks, or walkability. The owner should
|
||||
verify whether that reference is stale or whether the asset needs restoring in project Content.
|
||||
- Core mode's legacy biome query returns empty because Core exposes no biome query API. `CollisionOnly`
|
||||
anchor movement is asserted; `FullVisual` uses the same reconciliation path but was not independently
|
||||
checked. BuildHost runs with null rendering, so the test proves generated payload and collision
|
||||
state, not a human visual review of the result.
|
||||
- At the end of round 2, Core mode's legacy biome query returned empty because Core exposed no biome
|
||||
query API. Round 3 adds a Core-mode query through the copied owner biome evaluator; it does not add
|
||||
biome terrain or decorations to the Core field. `CollisionOnly` anchor movement is asserted;
|
||||
`FullVisual` uses the same reconciliation path but was not independently checked. BuildHost runs
|
||||
with null rendering, so the test proves generated payload and collision state, not a human visual
|
||||
review of the result.
|
||||
- Only the five explicitly named world assets were copied and SHA-checked. No owner editor was
|
||||
opened, and no owner project build or asset write was performed.
|
||||
|
||||
@@ -192,3 +197,99 @@ The owner can now try the switch described above. BuildHost proves Core tile par
|
||||
collision-body bookkeeping, anchor entering/leaving, and transaction-based carving. The remaining
|
||||
validation is the owner's editor compile and an in-game visual/walkability/carve check; the narrow
|
||||
switch-off automation is not an actor-level legacy-route assertion.
|
||||
|
||||
## Round 3 — owner visual report, classification, and fixes (2026-10-08)
|
||||
|
||||
The owner had already built the plugin in his own game and confirmed that the Core toggle worked and
|
||||
performance looked fine. I compared the four small images in `Standalone/owner_shots/unreal_core_r2/`
|
||||
with owner-field and shape-world viewer modes at the B and surface locations, checked the owner's
|
||||
`BuildOriginLandingGeometry`/passage definitions, and extended the BuildHost actor proof to inspect
|
||||
desired keys, hashes, meshes, and LOD faces. Viewer comparisons were captured before the geometry
|
||||
correction; the final test recompiled the corrected field in BuildHost.
|
||||
|
||||
| Reported defect | Standalone and layout evidence | Unreal Core headless evidence | Classification and outcome |
|
||||
|---|---|---|---|
|
||||
| 1. Capsule rings at the city/surface opening | Owner passage is a short entry into a finite origin room. Core shape-world instead added a segmented 256-voxel bore; owner-field mode has no such continuation. | Room center `+4.125` (air); floor below center and side `-4.125` (solid); above floor center and side `+4.125` (air). | **(ii) Core world defect, also visible in shape-world. Fixed.** Removed the synthetic bore and added the finite room/floor. |
|
||||
| 2. Bore continues through a normal cave room | Owner layout ends the entry at the room; no shaft continues through it or into the lower seal. The same Core bore passed through it. | 32 voxels below the room floor samples `-4.125` (solid). | **(ii) Core world defect, also visible in shape-world. Fixed.** |
|
||||
| 3. B-side landing has jagged/sawtooth edges | At B, owner-field and shape-world fields differ: Core shows a smooth cavern/floor while owner reference has the authored landing/terrain form. The landing is in the lower biome/SurfaceWorld portion of the layout. | All expected 2,553 visual keys load and match standalone hashes. B travel compiled 960 fine tiles; 3,438 neighbour faces checked, including 432 LOD-transition faces; no expected visual key is missing. | **(iii) Missing Core SurfaceWorld/biome representation is best supported.** The suspected missing-neighbour/LOD coverage fault is absent at the tested pose. Null-render headless testing cannot rule out a final RMC presentation artifact; owner should recheck after rebuild. |
|
||||
| 4a. Surface strate is not surfacy | Shape-world viewer lacks the owner's biome-composed SurfaceWorld; owner-field mode shows rolling biome terrain. The owner separately confirmed the surface strate type is absent in his viewer. | Core query reports `Biome_Surface_Plain`, index 2, but geometry remains the Core shape field. | **(iii) Missing Core feature: biome terrain. Not implemented this round.** Cheap biome query is implemented. |
|
||||
| 4b. Coarse shapes may not page detail | Hypothesis: travel failed to trigger fine compilation. Standalone Core uses the same clipmap policy. | Surface travel compiled 640 fine tiles. Visual set and tile hashes match standalone; 3,588 neighbour faces checked, including 448 LOD-transition faces, with no missing expected visual key. | **(i) Unreal paging bug not reproduced.** `StartPendingCoreRegionCompile` paged detail at the tested location. Extra loaded keys included collision-only/stale support; validator filters these and proves the exact visual set. |
|
||||
|
||||
### Changes and hashes
|
||||
|
||||
- `Standalone/Core/src/ShapeWorldInternal.h`: add the owner-layout finite origin room/floor per
|
||||
strate, remove the synthetic long surface-entry bore, and ignore invalid/default passage landing
|
||||
descriptors that made tiny false landings.
|
||||
- `Source/VoxelForge/Private/VoxelWorld.cpp`: Core-mode `GetBiomeAtWorldLocation` now calls the
|
||||
copied owner biome evaluator using its authored 12.5 cm query scale. Core terrain still uses 25 cm
|
||||
voxels; the exception is local to this legacy biome query.
|
||||
- `Source/VoxelForgeEditor/Private/VoxelForgeExploreCommandlet.cpp` and
|
||||
`Tools/TestVoxelForgeCoreWorldHost.ps1`: probe the room/floor, W1/W8/W16 determinism, travel to B
|
||||
and surface, exact visual keys/hashes, LOD face coverage, fine compilation, and biome result.
|
||||
|
||||
The corrected world intentionally changes the four aggregate hashes. W1/W8/W16 initial clipmap
|
||||
results are identical:
|
||||
|
||||
| Hash | New value | R2 value |
|
||||
|---|---:|---:|
|
||||
| Density | `0xa8bcb72d41092503` | `0xdb2991c73215af4c` |
|
||||
| Mesh | `0x90f29ba15e24579f` | `0x8236c5edd7fc8e4f` |
|
||||
| Payload | `0x82c6b489e7bb7fd7` | `0x4c48fa75a543d58e` |
|
||||
| Topology | `0x7b99448a1f844f2c` | `0xbea22e76b34a4dfc` |
|
||||
|
||||
B travel hashes: density `0x02ffd603879b7fdc`, mesh `0xde3bfc6069854070`, payload
|
||||
`0x14f98868de7986c5`, topology `0xdf960f8a26aafdc0`. Surface travel hashes: density
|
||||
`0x7f878c0933972c7f`, mesh `0x18d63306f5215f10`, payload `0x18b6e682e2a17505`, topology
|
||||
`0xe89da4150dc053c9`. At surface `desired=2553`, while actor `loaded=3334` includes support/stale
|
||||
keys during the move. The validator filters collision-only support, then proves every expected visual
|
||||
key and hash; it does not claim support-set quiescence.
|
||||
|
||||
### Biome design proposal
|
||||
|
||||
Recommended direction: add a deterministic `SurfaceWorld` evaluator to the Core shape-world model,
|
||||
fed by resolved biome definitions, surface-generation parameters, and fixed-order noise. Keep biome
|
||||
identity/blend selection in the immutable worker snapshot and add per-column height/biome caching so
|
||||
mesh samples reuse height work. This makes the surface, biome query, and decoration inputs one pure
|
||||
field. The port is medium-to-large work. Uncached per-sample biome/noise could slow detail tiles;
|
||||
column caching bounds the added cost. Determinism is straightforward to preserve with fixed coordinate
|
||||
hashing/math and worker-count hash tests.
|
||||
|
||||
Routing only SurfaceWorld strates through the copied legacy `UVoxelGenerator` in Core is a smaller
|
||||
compatibility bridge with higher immediate visual fidelity. It likely costs about the legacy field
|
||||
evaluation per sample, duplicates a second field implementation, and inherits legacy float/platform
|
||||
behavior. It should be checked across worker counts and platforms. A better staged design is an
|
||||
explicit strate-evaluator interface: use the port long-term and allow the copied evaluator as a
|
||||
temporary per-strate fallback when exact behavior is needed earlier. This round implemented the cheap
|
||||
biome query only; a full biome surface port did not fit alongside the geometry and streaming checks.
|
||||
|
||||
### BuildHost outcome and run ledger
|
||||
|
||||
`Tools/BuildVoxelForgeCoreHost.ps1` and `Tools/TestVoxelForgeCoreWorldHost.ps1 -TimeoutSeconds 900`
|
||||
passed. The actor test reported `streaming=1 collision=1 anchor_move=1 carve=1`; peak commandlet
|
||||
private memory was 2,997,526,528 bytes (about 2.8 GiB). No step exceeded 15 minutes, no `0xC0000142`
|
||||
retry occurred, and no new UECC folder appeared. The requested `Saved/BuildHost/HostProject/Saved/Crashes/`
|
||||
contained only its prior crash folder.
|
||||
|
||||
| Round-3 attempt | Outcome |
|
||||
|---|---|
|
||||
| First standalone viewer capture invocation | Failed because an owner-data path with spaces was passed in the wrong form. Corrected auto-discovery invocation produced all four Core/owner B/surface captures with exit 0. |
|
||||
| `Standalone/Build.ps1 -Target All` | Core library built and symbol audit passed; viewer link failed on 12 unresolved `VoxelForgeGpuFarViewer` symbols because the script omits `GpuFieldPort.cpp`. Canonical build files were left unchanged. |
|
||||
| First expanded surface actor test | Manually stopped after repeated collision-only region compiles prevented the overly broad settled-state condition from completing. Narrowed the test to expected visual keys/hashes; final run passed. No new UECC. |
|
||||
| Origin-room sign assertion | Failed quickly because expected signs were reversed. Core uses positive=air and negative=solid; corrected assertion passed. |
|
||||
| Intermediate commandlet builds | One failed on non-exported `GetEffectiveOriginSpineRadius`; another used protected `OriginSpineRadius`. Harness now computes effective radius from settings/season data. Later UBT builds passed. |
|
||||
| Final UBT and Core world test | Passed W1/W8/W16 hashes, origin floor, B/surface coverage and paging, biome query, anchor movement, collision, and carve markers. |
|
||||
|
||||
After the owner's rebuild, with **Use VoxelForge Core** enabled, inspect these exact places:
|
||||
|
||||
1. At the city/surface opening, confirm one short entry reaches a finite rounded room without capsule
|
||||
rings; stand on the floor and confirm it is flat and walkable.
|
||||
2. Continue into the normal cave room and look down: the entry should not continue as a deep shaft.
|
||||
3. Walk through the A→B landing to the B side. Check whether jagged edges/sky gaps remain after
|
||||
nearby tiles settle. Headless key and LOD coverage is complete; a remaining artifact needs a
|
||||
screenshot from this same view to isolate final mesh presentation.
|
||||
4. Travel to the surface strate. Wait for coarse-to-fine transition and confirm nearby detail appears.
|
||||
The biome query identifies `Biome_Surface_Plain`, but biome-driven surface geometry is still
|
||||
missing, so the broad surface terrain should not yet be judged as fixed.
|
||||
|
||||
Switch-off continues through the legacy generator. The owner rebuild/editor review is the remaining
|
||||
visual check.
|
||||
Reference in new issue
Block a user