Files
VoxelForge/Standalone/Research/WorldAssemblerM3/Linux168/REPORT.md
T
Fr0zkaandClaude Opus 5.5 ca0bf767ca streaming: incremental desired set on by default (L168)
Defaults after this commit: StreamingIncrementalDesiredSet=1 (Core delta, overlay, priority merge);
StreamingCoreDesiredCacheByCenter=0, StreamingRebuildOnCoreRegionCompletion=1, StreamingFastTravelForwardFirst=0,
StreamingFastTravelWaitForAllCriticalTiles=1, StreamingFastTravelApplyBudgetMilliseconds=0 (L157/L160 stay off);
audits 0. Default-only 30 m/s UE, 5 pairs vs c6357b5: p99 10.07 -> 7.01 ms (all pairs), worst tick 13.24 -> 11.63 ms
(4/5), near +1.4 pp, far holes -0.19 pp, arrival flat. Audit run 307/307/302 equal. Source/: VoxelWorld.cpp.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
2026-11-02 14:34:39 +01:00

3.6 KiB
Raw Blame History

L168 — Default the incremental desired set

Result: voxel.StreamingIncrementalDesiredSet now defaults to 1. In five interleaved 30 m/s UE pairs against assembler/world c6357b5, candidate tick p99 fell from 10.07 to 7.01 ms and median worst tick from 13.24 to 11.63 ms. P99 was lower in all five pairs; worst tick was lower in four, with one +0.06 ms pair.

Defaults and trace

The main switch gates the Core clipmap delta, overlay membership updates, priority-order merge/reuse, and the incremental path's same-center Core-key cache. Overlay and priority updates have no separate switches. Defaults after the change:

CVar Default Meaning
StreamingIncrementalDesiredSet 1 Core, overlay, and priority updates are incremental.
StreamingCoreDesiredCacheByCenter 0 Separate L160 cache stays off; the incremental path has its own cache.
StreamingRebuildOnCoreRegionCompletion 1 L160 same-center rebuild suppression stays off.
StreamingFastTravelForwardFirst 0 L160 ahead-first stays off.
StreamingFastTravelWaitForAllCriticalTiles 1 L157 early admission stays off.
StreamingFastTravelApplyBudgetMilliseconds 0 L157 fast-travel apply cap stays off.
StreamingIncrementalDesiredAuditEvery 0 Set/order audit stays off.
StreamingIncrementalDesiredMaterializationAuditEvery 0 Materialization audit stays off.
StreamingIncrementalDesiredAuditInjectMismatch 0 Negative-control injection stays off.

The candidate warm-up was a default 30 m/s run with no streaming-configuration CVar overrides. Readback showed incremental_desired_set=1; its 12-second movement trace recorded 40 Core deltas, 313 incremental materialization updates, 168 priority-order updates, and 105 priority-order reuses. Baseline readback was incremental_desired_set=0. Every timing run also read back the L157/L160 and audit defaults in the table; only the VFHost movement and trace harness arguments were supplied.

Measurement and checks

Five interleaved W8 pairs used the four-strata owner plan, a 12-second move plus 5-second dwell, and eight effective streaming slots. Tick metrics below are medians of per-run values over the 12-second movement window. One warm-up per binary was excluded. I discarded an initial provisional matrix because the longer load averages exceeded the quiet gate; the reported matrix began at 0.45 / 0.69 / 1.47 (1/5/15-minute averages), with no build running.

Metric c6357b5 Default-on Paired result
Tick p99 10.07 ms 7.01 ms Lower in all 5 pairs
Worst tick 13.24 ms 11.63 ms Lower in 4/5; one +0.06 ms pair
Near LOD0–2 readiness 42.33% 43.73% +1.40 pp median
Moving far holes 2.04% 1.85% −0.19 pp median
First settled LOD0–2 1.677 s 1.672 s 5 ms earlier median

The separate audit run enabled both audit intervals at 1: 307 desired-set/collision-only comparisons, 307 priority-order comparisons, and 302 materialization comparisons passed; there were zero mismatches. Audit-run metrics are excluded from timing.

verify.py fast passed in 301.7 s (268 pass, 0 fail, 5 diagnostics; 84 binary runs). VFHost Linux Development builds succeeded for the baseline and candidate with -NoUBA -MaxParallelActions=4. Runner py_compile and git diff --check passed. Fast-tier determinism covers W1/W8/W12. UE W12 movement was not run because the same 12-core VFHost affinity exposes eight TaskGraph background workers/effective streaming slots; movement used W8.

Changed Unreal Source/ files:

  • Source/VoxelForge/Private/VoxelWorld.cpp