wip(assembler): M1 round 5 -- native SurfaceWorld manifest delivered into the Unreal Core route
Manifest imported into UVoxelSettings (hash 8933693d9560ba9f), folded into the season content hash only when Core is on. BuildHost: W1/W8/W16 stable, 2553 surface tiles match standalone, 432 LOD transitions, collision on all 36 expected tiles. Matched timing 96.8 s native vs 197.3 s bridge (2.04x). Collision support tiles wait for Core region admission. 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
2d0cec90e4
commit
f67b519e75
11 files changed
+1002
-45
No files matched your search
@@ -508,12 +508,10 @@ profiles are in `round4/final/logs/mesh-hash-final-w{1,8,16}.stdout.txt` and
|
||||
- **Round 4:** Complete. The route and cap are in the research manifest; field sweep, negative
|
||||
controls, bounds, determinism, headless query and matched captures are recorded above. Physics
|
||||
collision cooking and Unreal light-leak behavior remain owner-build checks.
|
||||
- **Round 5 — before Unreal delivery:** Integrate the reviewed manifest into the season asset/content
|
||||
hash path and connect Core behind `bUseVoxelForgeCore`; prove that flag-off behavior remains
|
||||
unchanged. The owner builds and reviews the in-game two-biome surface, enclosed cap lighting and
|
||||
capsule-walkable route. Run the matched 23.085 s workload, report full-view and local query/
|
||||
collision readiness separately, and assess the approximately 1.57 s aim. No BuildHost or owner
|
||||
project build was done here.
|
||||
- **Round 5:** Complete for plugin-side delivery. The manifest/content-hash path, native Core
|
||||
surface, BuildHost tile/collision coverage, source-level switch-off check, matched timing and
|
||||
handoff are recorded below. The owner's project build, in-game walk, and cap-lighting review are
|
||||
the remaining owner checks.
|
||||
|
||||
### Run log
|
||||
|
||||
@@ -538,4 +536,118 @@ profiles are in `round4/final/logs/mesh-hash-final-w{1,8,16}.stdout.txt` and
|
||||
`Saved/BuildHost/HostProject/Saved/Crashes/` folder contains one older `UECC-Windows-*` directory
|
||||
from 2026-09-17; there was no new crash folder from this round.
|
||||
|
||||
No Unreal route or asset was changed in this round, so there is no owner rebuild handoff yet.
|
||||
No Unreal route or asset was changed in round 4, so there was no owner rebuild handoff then. Round 5
|
||||
supersedes that status.
|
||||
|
||||
## Round 5 — native SurfaceWorld in Unreal
|
||||
|
||||
The reviewed round-4 manifest now enters the opt-in Unreal Core route through `UVoxelSettings`.
|
||||
The editor-only `SourceWorldAssemblyManifestJson` file picker plus `ImportWorldAssemblyManifestJson`
|
||||
button reads the reviewed JSON into the settings asset as canonical serialized JSON and stores its
|
||||
Core content hash. Import validates the recipe seed against the effective settings seed. The Core
|
||||
adapter revalidates the manifest and requires a unique exact match for every planned stratum index,
|
||||
top chunk and bottom chunk against resolved `SurfaceWorld` slots; invalid or incomplete plans fail
|
||||
Core world initialization rather than silently falling back. With no manifest, existing Core cave
|
||||
layouts retain their prior schema and route. With `bUseVoxelForgeCore` off, the legacy route and its
|
||||
season identity hash are unchanged; the manifest only contributes to that hash while Core is active.
|
||||
|
||||
### Headless BuildHost evidence
|
||||
|
||||
`Tools/TestVoxelForgeCoreWorldHost.ps1` staged the reviewed JSON only under BuildHost and passed it
|
||||
transiently to `-run=VoxelForgeExplore -coreworldtest=1 -coreworldassembly=...`; no data asset was
|
||||
edited by the test. Manifest hash `8933693d9560ba9f`, recipe hash `c37de78b759c0a4c`, and plan hash
|
||||
`1ca84619c8600ee5` were read back in Core. The field probe sampled 4,096 points over 3,200 voxels,
|
||||
found three native biome IDs (including surface biome ID 4099), and generated native `Heightfield2D`
|
||||
surface tiles. The actor's W1/W8/W16 initial hashes remained identical.
|
||||
|
||||
The final surface-strate travel phase passed at Core-local `(37,165,-2011)` voxels. All 2,553
|
||||
expected visual keys matched independently generated standalone Core tile hashes; 573 local tiles,
|
||||
3,438 neighbour faces and 432 LOD transition faces were checked. Of 125 collision-desired tiles,
|
||||
36 had cooked bodies and 89 correctly had no body because their expected geometry was empty. The
|
||||
gate checked each non-empty collision expectation individually. The log records the native surface
|
||||
aggregate hashes as density `56ccc76575aa5f5f`, mesh `f3aeb31de1f967c1`, payload `95cb4781a1be4b73`,
|
||||
topology `26ac366d430599bd`. Initial cave streaming, anchor release, and sequenced carve also passed.
|
||||
Unreal's BuildHost exercised the RealtimeMesh/Chaos collision-body path; standalone does not cook
|
||||
physics bodies. Full final output is in [CoreWorldValidation.stdout.log](../Saved/BuildHost/HostProject/Plugins/VoxelForge/Saved/CoreWorldValidation/Logs/CoreWorldValidation.stdout.log)
|
||||
and [CoreWorldValidation.log](../Saved/BuildHost/HostProject/Plugins/VoxelForge/Saved/CoreWorldValidation/Logs/CoreWorldValidation.log).
|
||||
Failed-attempt archives use the `CoreWorldValidation-backup-2026.10.09-*` names in the same log
|
||||
directory.
|
||||
|
||||
### Switch-off check
|
||||
|
||||
The chosen narrow check is a source-level route and identity audit, not a runtime flag-off actor
|
||||
comparison. `bUseVoxelForgeCore` remains default-false; `UpdateChunksAroundPosition` branches to the
|
||||
existing legacy path when false; manifest import/adapter initialization and the new collision-support
|
||||
deferral are Core-only; and `GetCurrentSeasonContentHash()` returns the pre-existing season hash
|
||||
before inspecting the manifest when Core is off. This verifies the affected route boundaries and
|
||||
content identity, but does not claim bit-for-bit runtime output from a second legacy actor session.
|
||||
|
||||
### Matched timing and the 1.57 s aim
|
||||
|
||||
In one BuildHost session, native `Heightfield2D` and the legacy-surface bridge generated the same
|
||||
2,553 surface tile keys with hashes enabled. Region compilation took 0.015903 s native and 0.012752 s
|
||||
bridge. Summed serial tile generation took 96.800984 s native versus 197.333401 s bridge; including
|
||||
region compilation, 96.816887 s versus 197.346153 s (2.038× native speedup). This is a headless
|
||||
same-key tile-generation comparison, not game-thread apply time or a full rendered-view timing.
|
||||
|
||||
The approximately 1.57 s aim is still unmet. The last matched standalone full 529-tile LOD8 stream
|
||||
took 4.446 s wall, about 2.83× the aim. This round did not run a viewer/full-view benchmark; the
|
||||
2,553-key BuildHost timing has a different workload and should not be compared directly to the aim.
|
||||
|
||||
### Ridge review and owner handoff
|
||||
|
||||
I inspected only the existing 17.6 KB downscaled `cliff-final4-overlook-native.jpg` and its 20.5 KB
|
||||
owner comparison. The pointed ridge peaks are attached to continuous highland terrain and have no
|
||||
detached shard or broad fanned-plate trail. They read as sharp native mountain peaks, not a mesher
|
||||
artifact, so no terrain change was made. The frame remains an owner-review item for taste.
|
||||
|
||||
For the owner's project build and walk:
|
||||
|
||||
1. In the Content Browser, open the existing `DA_Settings` (`UVoxelSettings`) and confirm its
|
||||
effective seed is `0` (the manifest seed). Set `SourceWorldAssemblyManifestJson` to
|
||||
`Standalone/Research/WorldAssemblerM1/round4/world_assembly.json` in this plugin checkout, click
|
||||
**Import World Assembly Manifest JSON**, confirm hash `8933693d9560ba9f`, then save the settings
|
||||
asset. Assign that settings asset to the project's `AVoxelWorld` if it is not already assigned.
|
||||
2. Select the `AVoxelWorld`, enable **Voxel World → Core → Use VoxelForge Core**. Keep the shipped
|
||||
Core clip settings `CoreClipRadius=3` and `CoreMaxClipLevel=8` for the first review. Do not change
|
||||
the legacy clip settings for this check. Coordinates below are actor-local Unreal centimetres;
|
||||
Core scale is 25 cm per voxel.
|
||||
3. To inspect the surface, place the gameplay/free camera near `(0,-3500,-48794)` cm and look toward
|
||||
ground target `(0,0,-50394)` cm. The coast view is near camera `(33600,-6700,-47776)` cm,
|
||||
targeting `(33600,-3200,-49376)` cm. The biome-border view is near camera
|
||||
`(12800,-24300,-49291)` cm, targeting `(12800,-20800,-50891)` cm. The attached cliff/overhang is
|
||||
near camera `(-16800,7000,-44571)` cm, targeting `(-16800,10500,-46171)` cm. To inspect the cap,
|
||||
use the surface view and pitch upward/outward about 25°; the cap is hundreds of metres above the
|
||||
surface floor, so look for the enclosing roof and distant horizon, not a nearby ceiling.
|
||||
4. Walk the native ground route beginning near `(925,4125,-50275)` cm. The route is terrain support
|
||||
geometry, not a painted path. Expect two inland terrain profiles, a coastal transition, one
|
||||
attached cliff shelf, a closed cap and a collision-supported path. Check lighting inside the cap
|
||||
and the small ridge peaks in the game.
|
||||
|
||||
Likely compile touchpoints if the project reports an error are `VoxelSettings.h/.cpp` (UHT/editor
|
||||
import property and exported methods), `VoxelForgeCoreAdapter.cpp` (JSON parser and exact strate
|
||||
match), `VoxelWorld.cpp` (manifest content hash and collision admission order), and
|
||||
`VoxelForgeExploreCommandlet.cpp` (editor-only commandlet path). The plugin BuildHost compile passed;
|
||||
the owner's project has not been built or opened here. No `.uasset` was modified.
|
||||
|
||||
### Round-5 run ledger
|
||||
|
||||
| Run | Result |
|
||||
|---|---|
|
||||
| First BuildHost UBT compile | Failed at Editor link because the new `UVoxelSettings` getter/setter definitions were not exported. Added `VOXELFORGE_API`; retry passed UBT and the Core link-safety audit. |
|
||||
| Surface actor test attempt 1 | Failed tile-hash parity while moving to the surface, at support tile `(1,5,-63)`. |
|
||||
| Surface actor test attempt 2 | Retried after route-fixture correction; the same support tile still differed. Root cause was a non-desired collision support request generating before Core region admission. |
|
||||
| Surface actor test attempt 3 | Failed the old `GetBiomeAtWorldLocation` assertion: that API is the legacy biome/decorator query and is empty for this native Core surface. Replaced it with direct native `Heightfield2D` sampling from the resolved snapshot and added a native biome-field assertion. |
|
||||
| BuildHost compile and actor test after collision fix | Passed after collision support was deferred until the tile enters desired-set region compilation. UBT and Core symbol audit passed; the complete actor test passed the gates above. |
|
||||
| Final BuildHost rerun after switch-off hash gate | UBT/link-safety passed. Actor test passed in 9m20s with peak sampled private memory 3,880,357,888 bytes (3.61 GiB), including matched native/bridge timing and every surface coverage/collision gate. |
|
||||
|
||||
All actor attempts stayed below 15 minutes and below 8 GiB per process. No `0xC0000142` retry
|
||||
occurred, and there was no new UECC crash folder; the only BuildHost crash directory is the older
|
||||
2026-09-17 `UECC-Windows-F1A3EFD5469F5DD62E68EBBACAC84376_0000`. No owner project/editor was opened,
|
||||
no owner build or `.uasset` edit occurred, and no commit, push or stash was made.
|
||||
|
||||
New source files: none. Modified source files:
|
||||
`Source/VoxelForge/Public/VoxelSettings.h`, `Source/VoxelForge/Private/VoxelSettings.cpp`,
|
||||
`Source/VoxelForge/Private/VoxelForgeCoreAdapter.cpp`, `Source/VoxelForge/Private/VoxelWorld.cpp`, and
|
||||
`Source/VoxelForgeEditor/Private/VoxelForgeExploreCommandlet.cpp`. Modified BuildHost test tool:
|
||||
`Tools/TestVoxelForgeCoreWorldHost.ps1`.
|
||||
Reference in new issue
Block a user