30 m/s UE, 5 pairs: near coverage 36.1 -> 48.6% but 2/5 runs had p99 15.8/18.2 ms (worst 19.9 ms), so controls stay off. Measured: only ~23% of desired LOD0-2 tiles lie in the 55 deg forward cone; forward readiness is 12.1% (base) / 16.9%, vs 50.9/68.5% behind. Slow frames are dominated by desired-set rebuild/UpdateChunks, not apply. Source/: VoxelWorld.cpp (default behaviour unchanged). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
4.2 KiB
L157 — near terrain at 30 m/s
Result: Early admission raised moving near coverage, but the W8 experiment did not meet the full latency and worst-tick bar. Keep both experiment controls disabled by default. The UE host was built from /home/jahni/VoxelM/Plugins/VoxelForge/Saved/Linux/l157-tree/Source; the VFHost source symlink has since been restored.
Measurements
Five interleaved pairs used the same 30 m/s, 12 s movement plus 5 s dwell, 8 effective tile slots, and four-strate owner plan. Each run had 45–46 moving samples. The uncounted candidate smoke run warmed the same UE binary. The machine was quiet before the matrix (uptime load averages 1.09/1.40/1.22).
| Moving metric | assembler/world median |
Early admission + 1 ms cap median | Paired median delta |
|---|---|---|---|
| LOD0–2 ready | 36.06% | 48.64% | +10.76 pp |
| 55° forward-cone ready | 12.12% | 16.86% | +5.95 pp |
| Game-thread tick p99 | 12.51 ms | 10.93 ms | +0.07 ms |
| Worst tick per run, median | 14.67 ms | 14.52 ms | +0.18 ms |
| Far holes | 4.00% | 5.82% | −0.13 pp |
| Initial near-set arrival | 2.80 s | 3.21 s | +0.01 s |
The p99 median is under 11 ms, but only three candidate runs were under that limit; the other two were 15.75 and 18.17 ms. The worst observed candidate tick was 19.88 ms versus 17.75 ms for baseline. Far-hole results were mixed: the paired median improved slightly, while two candidate pairs regressed and the worst candidate run had 12.48% holes versus a 7.08% baseline worst. Arrival was effectively tied by paired median, with one candidate pair 0.88 s slower. The combined bar therefore fails on repeatability and worst tick; far holes are not robustly no-worse.
The apply cap lowered median apply p99 from 2.11 to 1.40 ms, but it is not a hard per-frame ceiling: candidate apply p99 reached 6.61 ms and the maximum was 7.58 ms. The loop checks elapsed time after finishing a result. Candidate stream-update p99 reached 15.07 and 13.52 ms in the same two outlier runs. Historical L122 frame joins likewise show that applying extra results adds work on candidate tail frames (about 1.0–1.5 ms), while UpdateChunks/desired-set work forms the larger tail; level_admit and submit_tiles p99 were not consistently higher. The cap cannot make the whole tick fit when update work already exceeds the frame budget.
Direction and next lever
The old metric counts every desired LOD0–2 tile equally, including tiles behind the player. Desired tiles split about 50.44% ahead and 49.56% behind; only 23.20% fell inside the 55° forward cone. Behind readiness was 50.93% baseline / 68.49% candidate, versus 21.71% / 30.60% ahead. The all-around count therefore overstates what is ready in the direction of travel.
For VR, readiness against the HMD/camera frustum is the useful visibility metric. The velocity-forward cone measured here is a movement proxy, not a head-pose measurement. Report it beside the old all-around residency count. No additional speed fix is validated; a narrow forward-cone admission probe is the next cheap experiment, while desired-set rebuild/update work remains the measured latency target.
Checks and limits
- UBT built
VFHostEditorsuccessfully, 98/98 actions, using-NoUBA -MaxParallelActions=4. It compiledSource/VoxelForge/Private/VoxelWorld.cppfrom the L157 worktree. Three existing RealtimeMesh deprecation warnings remained. - Fast tier: 268 PASS, 0 FAIL, 5 older-baseline diagnostics. Current canonical owner hashes match L130; W1/W12 hashes match for both pinned owners. Random-camera tile hashes also match across W1/W8/W12.
- UE
TileHashDumpcomparison was inconclusive: both runs loggedrecords=0, despite streamed meshes. No direct UE tile-hash claim is made. The L157 changes are limited to admission/apply controls and trace accounting; no generator or mesher source changed. - W12 movement timing and HMD-pose visibility were not run. W12 was skipped after W8 failed the worst-tick bar; direct UE hash capture emitted no records.
RunL157Movement.pypassedpy_compile;git diff --checkpassed.
Logs and paired data are in Saved/Linux/l157/; movement traces and summary are in Saved/Linux/l157/ue/movement/.
Changed Unreal source: Source/VoxelForge/Private/VoxelWorld.cpp.