wip(unreal): AVoxelWorld Core mode -- streaming, collision and carving through VoxelForgeCore

Luna, integration round 2 (BuildHost only): AVoxelWorld::bUseVoxelForgeCore (default
false) routes desired tiles, generation, upload/collision and carving through Core.
Core-only CoreClipRadius=3 / CoreMaxClipLevel=8 (owner's asset untouched); 25 cm Core
voxels in every cm<->voxel conversion; legacy brush sizes scaled to keep physical size;
UE-task JobScheduler, epoch-checked Mpsc results, existing RMC upload + collision cook;
carving via sequenced applyEditTransaction. Switch off: BuildDesiredTiles takes the old
path unchanged.
BuildHost proof (actor commandlet, staged copies of the owner's assets): all 2,226
initial tiles hash-match standalone Core; collision bodies as expected; anchor move
requests 1 / releases 1 tile; carved tile hash matches standalone; peak ~2.68 GiB.
Legacy CrossPlatformDigest automation: 115,000 samples pass (wrapper flagged an
analytics write outside isolation).

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 20:33:46 +02:00
1 parent 29ca99af7f
commit 075e58187e
7 files changed
+2069 -118

No files matched your search

+20 -13
View File
@@ -820,26 +820,33 @@ second density path.
| `VoxelForgeWormBlockSkipTest.cpp` | `VoxelForge.Determinism.WormBlockSkipSoundness` | Soundness and coverage of the worker-local worm N1 block proof (`voxel.WormBlockSkip`). |
| `VoxelForgePlayerFitWindow.h` | — | Shared measurement-window policy for player-fit diagnostics (test/editor side only). |
### 3.13 Core module and schema adapter (integration round 1)
### 3.13 Core runtime integration (round 2)
The public Core API is linked as the `VoxelForgeCore` runtime module, with canonical implementation
sources still under `Standalone/`. UBT validates the 18-row manifest and its shims; BuildHost linked
the module and passed `CheckCoreSymbols.ps1` against the actual shim objects. See
[`Standalone/UNREAL_INTEGRATION_REPORT.md`](Standalone/UNREAL_INTEGRATION_REPORT.md) for build and
headless evidence.
headless evidence and the run ledger.
`RunStandaloneWorldExport` in `VoxelForgeExploreCommandlet.cpp` serializes owner assets on the game
thread to schema-v1 JSON. `FStandaloneCoreAdapterScheduler` and
`VerifyStandaloneCoreAdapter` parse that JSON through `ResolvedWorldSnapshot::FromJson`, compile at
worker limits 1, 8, and 16, and compare the 2,226-tile hashes and passage walkability. The commandlet
sorts map/set members and JSON object keys to keep the export deterministic. Its test copy applies
the standalone benchmark view overrides (clip radius 3, max level 8); the saved asset-derived export
retains the authored clip radius and max level.
thread to schema-v1 JSON. The adapter parses it through `ResolvedWorldSnapshot::FromJson` and keeps
UObjects off Core workers. The runtime switch is `AVoxelWorld::bUseVoxelForgeCore` (default false),
with independent `CoreClipRadius=3` and `CoreMaxClipLevel=8`; it does not read or mutate the old clip
settings or assets.
**Runtime status:** no `bUseVoxelForgeCore` property, Core generation route, mesh conversion, Core
carve transaction, or owner-facing switch instructions exist yet. `AVoxelWorld` still uses the
existing density generator, mesher, queues, epoch checks, RealtimeMesh upload, and collision path.
The Core dependency is present so the next round can wire the side-by-side route behind a default-off
switch while preserving that path.
When enabled, `AVoxelWorld` uses Core desired keys and priorities, compiles/generates through Unreal
tasks, carries `Epoch` through the existing MPSC result queues, and uploads converted payloads through
RealtimeMesh and its collision cook. Core voxel coordinates use 25 cm per voxel; Core tile keys are
retained, and Core mesh vertices are already in centimetres. High-level legacy brush dimensions are
scaled from 12.5 cm voxel units to Core units so their physical size stays the same. Edits use
sequenced `applyEditTransaction` calls after in-flight Core work drains, then regenerate Core's
affected keys under a new epoch. Existing streaming anchors participate; the headless move proof
covers `CollisionOnly` policy.
`-coreworldtest=1` in the BuildHost editor commandlet validates the spawned actor's 2,226 initial
tiles against standalone Core, expected collision bodies/empty tiles, an anchor move, and a carve
transaction. `VoxelForge.Determinism.CrossPlatformDigest` is the narrow switch-off baseline; it passes,
but does not instantiate an actor with the switch false. See the report for that limitation and for
owner-editor instructions.
## 4. The density pipeline (most-edited hot path)