With StreamingFastTravelWaitForAllCriticalTiles=0 and ApplyBudget=1 ms (test values; defaults stay 1 and 0), 7 pairs
vs ca0bf76: near 43.3 -> 56.1%, forward 15.5 -> 17.9%, far holes 1.8 -> 0.0%, p99 7.06 -> 6.52 ms, worst 12.2 ->
11.8 ms, every run p99 <= 7.4 and worst <= 13.8 ms; arrival 1.671 -> 1.683 s (slower in 7/7) so not promoted.
Source/: VoxelWorld.cpp, VoxelWorld.h.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
4.7 KiB
L169 — Early admission stays opt-in
Result: Do not promote L157 early admission. Six of seven promotion gates passed, but candidate LOD0–2 arrival was slower in every pair: median 1.683 s versus 1.671 s on assembler/world ca0bf76 (+12.4 ms). The source defaults are restored to wait-for-critical 1 and apply-budget 0 ms. The candidate settings remain explicit overrides in the runner.
Measurement
Seven interleaved W8 pairs used the four-strata owner plan, 25 cm core voxels, 30 m/s movement, a 12-second move from t=6 to t=18, and a 5-second dwell. Each run had about 46 moving samples; one warm-up per binary was excluded. No product CVar was changed except the two L157 switches under test. At measurement time, the candidate binary compiled those settings as defaults; the runner now supplies the same values explicitly so the experiment can be repeated with shipping defaults off.
| Moving-window metric (median across seven runs) | ca0bf76 |
Candidate | Result |
|---|---|---|---|
| Tick p99 | 7.060 ms | 6.519 ms | lower |
| Worst tick | 12.219 ms | 11.776 ms | lower |
| Near LOD0–2 readiness | 43.28% | 56.12% | +12.84 pp |
| Forward-cone readiness | 15.52% | 17.93% | +2.41 pp |
| Far holes | 1.80% | 0.00% | lower |
| First settled LOD0–2 | 1.671 s | 1.683 s | 12.4 ms slower |
Every run stayed below 11 ms p99 and 14 ms worst tick. The largest observed p99 was 7.400 ms; the largest worst tick was 13.776 ms. Candidate worst-tick median was not worse. Arrival remained slower after subtracting each run’s first streaming sample (1.305 s vs 1.299 s), so the raw arrival failure is not explained entirely by trace start time.
Spike count and changes
All counts below use the 12-second moving window unless identified as a startup diagnostic.
- Level sorting: With L157 on at the base defaults, the largest full-sort sample was 0.865 ms and no sample exceeded 1 ms; the L167 8.3 ms spike did not recur. Candidate partial sorting reduced the largest sample to 0.123 ms, with no sample above 1 ms.
- Desired rebuild and overlay: Base per-run desired-rebuild peaks had a 7.476 ms median and reached 8.110 ms. Candidate peaks had a 6.928 ms median and reached 7.260 ms; rebuilds over 5 ms still occurred (median four per run, maximum five). Overlay materialization never exceeded 2 ms; its candidate maximum was 1.094 ms. The transition descendant index now uses sorted arrays and binary-search deltas. In a separate pre-move startup trace with 2,233 Core keys, the initial index build took 1.605 ms; the maximum moving-window index phase was 3.626 ms.
- Mesh apply: The 2.8 ms historical apply spike did not recur. Maximum per-frame apply time fell from 2.548 ms at base to 1.590 ms candidate; largest individual candidate apply was 1.512 ms. The preflight deferred 21–145 results per run (median 109), with a largest estimate of 3.447 ms for 8,979 triangles. RealtimeMesh submission remains atomic, so the estimate is a heuristic and does not split a single upload.
The cold-start arrival gate prevents default promotion even though movement readiness and tick behavior improved. No further adjustment was made after the seven-pair result.
Defaults and checks
| CVar | Final default | Candidate test value |
|---|---|---|
voxel.StreamingFastTravelWaitForAllCriticalTiles |
1 | 0 |
voxel.StreamingFastTravelApplyBudgetMilliseconds |
0 ms | 1 ms |
voxel.StreamingIncrementalDesiredSet |
1 | 1 |
voxel.StreamingFastTravelForwardFirst |
0 | 0 |
voxel.StreamingRebuildOnCoreRegionCompletion |
1 | 1 |
voxel.StreamingCoreDesiredCacheByCenter |
0 | 0 |
voxel.StreamingIncrementalDesiredAuditEvery |
0 | 0 |
voxel.StreamingIncrementalDesiredMaterializationAuditEvery |
0 | 0 |
voxel.StreamingIncrementalDesiredAuditInjectMismatch |
0 | 0 |
- Final VFHost Linux Development build passed with
-NoUBA -MaxParallelActions=4; three existing deprecated RealtimeMesh API warnings remain. - Final-source
verify.py fastpassed in 289.8 s: 268 passes, 0 failures, 5 diagnostics. Clang and GCC geometry hashes and W1/W8/W12 determinism passed. git diff --checkand the runner AST syntax check passed. The direct liveTileHashDumphook returned zero records for the Core path on both binaries and is inconclusive; the fast-tier geometry and determinism checks passed.- UE W12 movement was not run: this VFHost procedure exposed eight effective tile slots. Fast-tier W12 determinism was run.
Remaining risk: desired rebuilds still reach 7.260 ms in the candidate, and the apply estimate cannot bound an atomic RMC upload. Most importantly, the arrival gate failed, so early admission remains opt-in.
Changed Unreal Source/ files:
Source/VoxelForge/Private/VoxelWorld.cppSource/VoxelForge/Public/VoxelWorld.h