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:
1 parent
8440adc742
commit
e7586a1256
7 files changed
+507
-70
No files matched your search
@@ -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."
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user