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
3.6 KiB
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