One current-state page (shipping behaviour, references with sources, gaps, verification, closed lines), linked from CLAUDE.md. Removes the L86/L88 passage/boundary ablation switches and the unused legacy route-grade audit; inventory of every kept switch in the report. Output identical: 24/24 + 18/18 hashes, fast tier, walk/seam audits, UE host build; timing unchanged (-0.2%, CI spans 0). No Source/ changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
9.4 KiB
VoxelForge current state
As of 2026-10-31. The L130 baseline is on assembler/world as 044cd6d; this L131 work branch starts at cbbfd46. Current-state claims below point to their code or measured report.
What ships today
- Core: evaluator version 227. Unreal's
AVoxelWorld::bUseVoxelForgeCoreis opt-in and defaults tofalse; the legacy generator remains the default runtime path. Core version, runtime switch, L130 report. - Generator dispatch when Core is enabled:
SurfaceWorlduses the Core surface adapter;FloatingIslandsuses its Core adapter.Cavesuses the Core cave field only withCore.Caves.PrimitiveFieldv1.MazeandVerticalShaftsuse the Core lattice field only withCore.Lattice.PrimitiveFieldv1. Other generator/recipe combinations fall through toFLegacyGeneratorFieldAdapter. Dispatch, recipe checks. - Passages: continuous smooth swept tubes with a continuous floor profile. L125 stamps conservative route slabs and outside sentinels into the tile cache; exact route geometry is still evaluated. All 21,425 route samples passed the open-air walk check; the nine-station floor probe's maximum root offset was 7.884 mm. L130 sets the shared influence reach to 1.0533 m (0.75 m shell + 0.21 m relief + 0.50 m smooth-max support / 6 + 0.01 m margin), converted once from metres to Core voxels for the proof, feature, fallback, and off-grid bounds. L125, L130.
- Streaming: arrival uses a bounded startup apply burst:
voxel.StreamingStartupApplyBoost=1by default, up to 24 visible meshes or 14 ms per frame for at most 30 seconds, until the initial desired set and walkable ring are ready.voxel.StreamingFarApplySupplement=1is also default-on: after the normal visible apply cap, at most one far result applies when under half the apply-time budget; it is inactive during the startup burst. Dynamic near reserve defaults on; coarse-first remains off; the legacy pending-result cap defaults off. The far-apply lane is Unreal-only. CVar source, L121 report, architecture. - Determinism: proven on Linux with Clang and GCC at W1/W8/W12. L131's unchanged-output comparison covers owner4's SW/FI/TN/VS views in 24 compiler/worker cases; the canonical owner4/owner2 recipe matrix also passes. Windows determinism is unverified. L131 checks, v227 canonical hashes.
Current performance references
Headless medians in seconds, five interleaved L80-style measurements per version in each cell. Near-ready means the complete LOD0–2 set; whole-view is the full requested view. Values below are the edited L131 binary; the paired pre-cleanup comparison is in the L131 report and timing summary.
| Stratum | Near-ready W8 / W12 | Whole-view W8 / W12 |
|---|---|---|
| S0 | 0.804 / 0.848 | 1.811 / 1.832 |
| S1 | 1.014 / 1.002 | 1.993 / 1.886 |
| S2 | 1.060 / 1.012 | 1.960 / 1.865 |
| S3 | 0.917 / 0.884 | 1.887 / 1.782 |
Across 40 paired runs per metric, the mean relative change from pre-cleanup L130 was −0.22% near-ready (95% CI −1.02% to +0.57%) and −0.29% whole-view (−1.04% to +0.46%); neither indicates a measurable slowdown. The machine gate was load 0.81 and 99.2% idle. L80 protocol, runner and raw runs.
The latest recorded Linux Unreal start-to-LOD0–2 values are L127's one run per stratum: S0 2.456 s, S1 2.231 s, S2 2.514 s, S3 2.221 s. L130 did not rerun UE startup or movement. Five L127 runs at 30 m/s, 12 s moving plus 5 s dwell, had median moving near coverage 40.22%, far holes 3.46%, tick p99 10.80 ms, and worst tick 13.27 ms. After stopping, near coverage reached 100% and far holes reached 0%. These are the latest UE references, not v227 UE measurements. L127 report, L127 movement summary, L127 start summaries.
Open gaps
- Multiplayer world lifecycle is unfinished: seed/layout replication, authoritative modification RPCs, and serialized diff replay for late join are still open. See ARCHITECTURE §9.5 and §9.7.
- Determinism has not been verified on Windows. Linux Clang/GCC agreement does not establish MSVC agreement.
- NullRHI measures residency and apply timing, not the first presented pixel or rendered enclosure. L127 also found four low-contrast views among 23 otherwise verified captures. L121, L127.
- UE startup/movement numbers above predate L130's v227 reach change; there is no L130/L131 UE movement comparison.
How to verify
- Build standalone Clang or GCC with
Standalone/BuildLinux.sh, for examplebash Standalone/BuildLinux.sh --compiler=clang++-19 --variant=l131-clang --fp-contract=off --jobs=4. The script pins CPUs 0–11 and appliesprlimit --as=6442450944itself. - Fast tier:
python3 Standalone/Tools/verify/verify.py fast --out Saved/Linux/l131 --overall-timeout 1740. It runs the walkability and current owner checks; per-run logs and the summary stay underSaved/Linux/l131. - Canonical output baselines are the v227 files in
Standalone/Tools/verify/baselines/owner-hash/canonical/. L131 also provides reproducible pre-cleanup identity matrices for owner4 tile hashes and owner4/owner2 canonical hashes underStandalone/Research/WorldAssemblerM3/Linux131/. - Timing follows L80: quiet machine, no overlapping build, one warm-up per version, five interleaved runs per stratum and worker count, W8/W12. Each headless run uses
taskset -c 0-11,prlimit --as=6442450944, and a 1,740 s timeout. SeeRunL131Timing.py. - Linux host build:
/home/jahni/UnrealEngine/Engine/Build/BatchFiles/Linux/Build.sh VFHostEditor Linux Development -Project=/home/jahni/VFHost/VFHost.uproject -NoUBA -MaxParallelActions=4 -Log=/home/jahni/VoxelM/Plugins/VoxelForge/Saved/Linux/l131/ubt.log. Run Unreal withoutprlimit.
Closed experiments
These rejected speed/streaming proposals stay closed unless new evidence changes their measured failure. Reports and surviving patches are linked in the L131 inventory.
| Line | Result |
|---|---|
| L116 tunnel chord bound and z cache | Pair count fell 20.8%, but stayed 1.96× L109 and readiness was 15–30% slower. Patch: chord-bound-zcolumn-not-merged.patch, commit 89504ec; see report. |
| L118 pair pruning / deferred floor work | Pruned 17–18% of candidate pairs but remained 17.2–25.7% behind L109 near-ready. Report; patch: l118-designs.patch. |
| L126 floor-call filters | Cut floor calls 20–23% without reducing pair counts; all eight cells missed L109. Candidate source was restored and no standalone patch was kept; see report and commit 01a5094. |
| L128 half-open slab ownership | Ownership audit passed, but readiness was 14.8–28.0% behind L109 and moving coverage dropped. Report and patch l128-slab-ownership.patch are in archived commit 7022d02. |
| L129 2 m physical reach | v225's metre/Core-voxel bounds mismatch made the correctly bounded candidate do more work; it was slower and failed UE movement gates. Report and patch l129-reach-2m.patch are in archived commit 0d1140c. |
| L120 priority split / extra worker slots | Neither met coverage and tick gates; 10 slots reached a 16.67 ms worst tick against 15.43 ms baseline. Report; no production patch retained. |
| L122 admission relaxation | Early admission missed p99 or far-hole gates; no behavior retained. Report; patch: l122-trace.patch. |
| L123 lookahead / completion gate | Lookahead failed p99 and worsened near/far coverage; queue-only also failed p99. Report; patch: l123-queue-lookahead.patch. |
| L124 early LOD0 pages | Optimistic gain stayed below 100 ms except negative cases; no publication/scheduling implementation was made. Report. |