wip(assembler): round S9 -- collision look-ahead: ground ring ready on arrival up to 40 m/s and 50 m/s falls

voxel.StreamingCollisionLookahead (default on) predicts the support tile 350 ms
ahead along full 3D velocity and prioritises its 9-tile collision ring. Owner
plan, BuildHost actor: 40 m/s arrival-ready 25/74 -> 74/74 (CVar-off control
15/74); 6/12/25 m/s stay 100%; -Z 50 m/s 93/93. Spawn unchanged (~7.7 s).
Critical LOD0 path at 40 m/s: generation 67 ms p50, RMC body update 38 ms p50.
LOD8 cost counted (native horizon 48 ms of 60), optimisation deferred.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-10-19 10:56:54 +02:00
1 parent 8440adc742
commit e7586a1256
7 files changed
+507 -70

No files matched your search

+20 -3
View File
@@ -9,6 +9,8 @@ param(
[ValidateRange(0, 1)][int]$StartupApplyBoost = 0,
[switch]$StreamingTraceOnly,
[ValidateRange(1, 6000)][int]$TestMoveSpeedCmPerSecond = 600,
[ValidateRange(0, 1)][int]$StreamingCollisionLookahead = 1,
[string]$TestMoveDirection = '0,1,0',
[ValidateRange(0, 1)][int]$CoreRegionConcurrentAdmission = 1,
[ValidateRange(0, 4096)][int]$StreamingResultBacklogCap = 256,
[ValidateRange(0, 900)][int]$Step1MaxMeshApplies = 0,
@@ -79,7 +81,18 @@ if ($StreamingTraceOnly -and ($SharedFeatureAuditOnly -or $EnableHybridFixturePl
$HybridCliffOnly -or $HybridFixturesOnly -or $WorldAssemblyManifestPath)) {
throw '-StreamingTraceOnly uses the staged owner plan without additional fixture or manifest overrides.'
}
if ($TestMoveDirection -notmatch '^[+-]?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+),[+-]?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+),[+-]?(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)$') {
throw '-TestMoveDirection must be three comma-separated invariant-culture numbers without spaces.'
}
$MoveDirectionComponents = @($TestMoveDirection.Split(',') | ForEach-Object {
[double]::Parse($_, [Globalization.CultureInfo]::InvariantCulture)
})
if ($MoveDirectionComponents[0] -eq 0 -and $MoveDirectionComponents[1] -eq 0 -and
$MoveDirectionComponents[2] -eq 0) {
throw '-TestMoveDirection must not be the zero vector.'
}
if (-not $StreamingTraceOnly -and ($TestMoveSpeedCmPerSecond -ne 600 -or
$StreamingCollisionLookahead -ne 1 -or $TestMoveDirection -ne '0,1,0' -or
$CoreRegionConcurrentAdmission -ne 1 -or $StreamingResultBacklogCap -ne 256 -or
$Step1MaxMeshApplies -ne 0 -or $TestTeleportAfterSeconds -ne 0 -or
$TestTeleportDistanceCm -ne 0)) {
@@ -169,7 +182,8 @@ $RunName += switch ($NearReserveMode) {
if ($EnforceCollisionGate) { $RunName += '_collision_gate' }
if ($StartupTrace -or $StreamingTraceOnly) { $RunName += '_trace' }
if ($StreamingTraceOnly) {
$RunName += "_move_${TestMoveSpeedCmPerSecond}_region_${CoreRegionConcurrentAdmission}_backlog_${StreamingResultBacklogCap}"
$DirectionTag = $TestMoveDirection.Replace(',', '_').Replace('-', 'm').Replace('+', 'p').Replace('.', 'p')
$RunName += "_move_${TestMoveSpeedCmPerSecond}_lookahead_${StreamingCollisionLookahead}_dir_${DirectionTag}_region_${CoreRegionConcurrentAdmission}_backlog_${StreamingResultBacklogCap}"
if ($Step1MaxMeshApplies -gt 0) { $RunName += "_applymax_$Step1MaxMeshApplies" }
if ($TestTeleportAfterSeconds -gt 0) {
$RunName += "_teleport_${TestTeleportAfterSeconds}s_${TestTeleportDistanceCm}cm"
@@ -310,7 +324,8 @@ if ($StreamingTraceOnly) {
$BaseArguments += '-voxel.TestMove=1'
$BaseArguments += "-voxel.TestMoveSpeedCmPerSecond=$TestMoveSpeedCmPerSecond"
$BaseArguments += '-voxel.TestMoveStartSeconds=30'
$BaseArguments += '-voxel.TestMoveDirection=0,1,0'
$BaseArguments += "-voxel.TestMoveDirection=$TestMoveDirection"
$BaseArguments += "-voxel.StreamingCollisionLookahead=$StreamingCollisionLookahead"
if ($TestTeleportAfterSeconds -gt 0) {
$BaseArguments += "-voxel.TestTeleportAfterSeconds=$TestTeleportAfterSeconds"
$BaseArguments += "-voxel.TestTeleportDistanceCm=$TestTeleportDistanceCm"
@@ -447,8 +462,10 @@ if ($SharedFeatureAuditOnly) {
return
}
if ($StreamingTraceOnly) {
$ExpectedWalkDirection = "walk_direction=$TestMoveDirection"
if ($Text -notmatch '\[VoxelForgeCoreWorldStreamTrace\] initial_ready=1 .*walk_tick_ms_p95=.*walk_tick_ms_max=' -or
$Text -notmatch ("\[VoxelForgeCoreWorldStreamTrace\] pass complete=1 .*walk_speed_cm_s=$TestMoveSpeedCmPerSecond walk_direction=\+Y") -or
$Text -notmatch ("\[VoxelForgeCoreWorldStreamTrace\] pass complete=1 .*walk_speed_cm_s=$TestMoveSpeedCmPerSecond") -or
-not $Text.Contains($ExpectedWalkDirection) -or
$Text -notmatch '\[VoxelForgeCoreWorldTest\] pass complete=1') {
throw "BuildHost actor-only stream trace did not prove initial readiness and a completed walk sample. See $FinalLog."
}