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
@@ -428,3 +428,57 @@ legacy route. After the owner rebuild, recheck the SurfaceWorld shoreline, hills
|
||||
at the matched camera after fine tiles settle; also recheck the opening-room floor. The captures show
|
||||
the exact-density bridge improves the surface field, but water/presentation and the other missing
|
||||
archetypes are still open work.
|
||||
|
||||
### Round-5 native SurfaceWorld delivery
|
||||
|
||||
Round 4 above is historical. The native manifest route now supersedes the temporary legacy density
|
||||
bridge for a reviewed `SurfaceWorld` when `AVoxelWorld::bUseVoxelForgeCore` is enabled. Existing Core
|
||||
cave generation remains supported when there is no world-assembly manifest. With the switch off,
|
||||
legacy generation and the existing season identity hash remain on the old path.
|
||||
|
||||
The editor `UVoxelSettings` asset now has a `SourceWorldAssemblyManifestJson` picker and
|
||||
`ImportWorldAssemblyManifestJson` button. Import stores canonical JSON plus the verified Core content
|
||||
hash in the settings asset. `GetCurrentSeasonContentHash()` combines that hash only while Core is
|
||||
active. Core adapter initialization checks the manifest seed against the resolved layout and
|
||||
requires exact, unique `SurfaceWorld` slot index/top/bottom matches. The test passes the reviewed
|
||||
JSON to BuildHost through `-coreworldassembly`; it does not edit an asset. Manifest, recipe and plan
|
||||
hashes were `8933693d9560ba9f`, `c37de78b759c0a4c` and `1ca84619c8600ee5`.
|
||||
|
||||
The final BuildHost commandlet passed the W1/W8/W16 matrix, cave initial streaming, anchor movement,
|
||||
carving, lower-surface travel and native SurfaceWorld travel. At `(37,165,-2011)` Core voxels, all
|
||||
2,553 expected visual tile hashes matched standalone Core. Coverage checked 573 local tiles, 3,438
|
||||
neighbour faces and 432 LOD transitions across two regions. The collision gate checked 125 expected
|
||||
near tiles: 36 non-empty tiles had cooked bodies; 89 expected-empty tiles correctly had none. Native
|
||||
SurfaceWorld hashes were density `56ccc76575aa5f5f`, mesh `f3aeb31de1f967c1`, payload
|
||||
`95cb4781a1be4b73`, topology `26ac366d430599bd`. The BuildHost path uses Unreal mesh upload and
|
||||
Chaos collision cooking; standalone checks field and mesh output only.
|
||||
|
||||
The narrow switch-off check is source-level, not a second runtime actor session: Core remains
|
||||
default-off; the legacy `UpdateChunksAroundPosition` branch is retained; Core-only manifest
|
||||
initialization and collision admission are guarded by the switch; and the legacy hash returns before
|
||||
reading optional manifest data when disabled. This does not claim a full flag-off runtime replay.
|
||||
|
||||
In the same BuildHost session, 2,553 identical keys were generated with hashes on. Native
|
||||
`Heightfield2D` vs the legacy bridge took 0.015903 vs 0.012752 s for region compilation and
|
||||
96.800984 vs 197.333401 s for summed tile generation; compile plus tiles was 96.816887 vs 197.346153
|
||||
s (2.038× speedup). This is serial headless tile generation, not rendered frame time. The ~1.57 s
|
||||
full-view aim remains unmet: the last full 529-tile LOD8 stream measured 4.446 s, 2.83× the aim.
|
||||
No full-view viewer benchmark ran in round 5.
|
||||
|
||||
The existing downscaled native/owner cliff overlook pair was inspected. The sharp ridge peaks remain
|
||||
attached to the highland surface with no detached shard trail, so the field/mesh was not altered;
|
||||
their appearance is left for the owner to judge in-game. Handoff instructions and actor-local camera
|
||||
targets for the surface, coast, cliff, route and cap are in
|
||||
[`ASSEMBLER_M1_REPORT.md`](ASSEMBLER_M1_REPORT.md). Likely project compile touchpoints are
|
||||
`VoxelSettings.h/.cpp`, `VoxelForgeCoreAdapter.cpp`, `VoxelWorld.cpp` and
|
||||
`VoxelForgeExploreCommandlet.cpp`.
|
||||
|
||||
Round-5 BuildHost run ledger: the first UBT compile failed to link non-exported settings methods;
|
||||
exporting them made the retry pass. Actor attempt 1 found a surface support-tile hash mismatch;
|
||||
attempt 2 reproduced it and exposed collision work starting before region admission. Actor attempt 3
|
||||
failed the legacy biome-query assertion because the native surface does not provide that legacy
|
||||
decorator query; it was replaced with direct native heightfield sampling. After the collision-admission
|
||||
fix, the actor test passed. The final rerun after gating the manifest hash on the Core switch also
|
||||
passed in 9m20s with 3,880,357,888 bytes peak sampled private memory (3.61 GiB). No `0xC0000142`
|
||||
retry or new UECC folder occurred. The owner's project was not opened or built and no `.uasset` was
|
||||
edited.
|
||||
Reference in new issue
Block a user