wip(assembler): round S6 -- in-game cold view counted; workers mostly idle, apply cap not the floor
Direct per-tile trace on the BuildHost actor (owner plan, 2,578 keys): full set 17.4 s legacy; gated coarse-first (after the 9-tile walkable ring) 11.7 s with the ring still at 0.63 s, but full LOD0 slips 2.3 -> 10.2 s. Startup apply boost changed nothing (0.4%). 37.6 worker-s over 17.4 s on 10 slots = ~3.3 busy: the floor is admission/work supply. S5's 251 ms staircase was the trace sampler. Fixed CVar parsing in headless BeginPlay and the 60 m/s crossing instrument. All three knobs stay opt-in. 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
c0596c5f24
commit
b9c13c37c0
11 files changed
+903
-31
No files matched your search
@@ -2,9 +2,11 @@
|
||||
param(
|
||||
[ValidateRange(60, 900)][int]$TimeoutSeconds = 900,
|
||||
[ValidateRange(12.5, 25.0)][double]$CoreVoxelSizeCm = 25.0,
|
||||
[ValidateSet('CoarseFirst', 'Legacy')][string]$StreamingOrder = 'CoarseFirst',
|
||||
[ValidateSet('CoarseFirst', 'Legacy')][string]$StreamingOrder = 'Legacy',
|
||||
[switch]$EnforceCollisionGate,
|
||||
[switch]$StartupTrace,
|
||||
[ValidateRange(0, 1)][int]$StartupApplyBoost = 0,
|
||||
[switch]$StreamingTraceOnly,
|
||||
[string]$WorldAssemblyManifestPath = '',
|
||||
[ValidateSet('MarchingCubesV1', 'WorldAssemblerHybridV1', 'WorldAssemblerHybridV2')][string]$CoreMesherRecipe = 'MarchingCubesV1',
|
||||
[switch]$EnableHybridFixturePlacement,
|
||||
@@ -50,11 +52,13 @@ $RunName = if ($FloatingIslandsOnly) { "floating_islands$CoreSizeSuffix" }
|
||||
elseif ($CoreOffTest) { "core_off$CoreSizeSuffix" }
|
||||
elseif ($CorePlanOnly) { if ($CoreTestSeed -ne [int]::MinValue) { "plan_seed_$CoreTestSeed$CoreSizeSuffix" } else { "plan_only$CoreSizeSuffix" } }
|
||||
else { "owner_surface$CoreSizeSuffix" }
|
||||
$RunName += $(if ($StreamingTraceOnly) { '_stream_trace_only' } else { '' })
|
||||
$RunName += "_applyboost_$StartupApplyBoost"
|
||||
|
||||
if ($MismatchedManifestFallback) { $CoreFallbackTest = $true }
|
||||
$SelectedModeFlags = @(
|
||||
[bool]$FloatingIslandsOnly, [bool]$CoreFallbackTest,
|
||||
[bool]$CoreOffTest, [bool]$CorePlanOnly
|
||||
[bool]$CoreOffTest, [bool]$CorePlanOnly, [bool]$StreamingTraceOnly
|
||||
)
|
||||
$SelectedModeCount = @($SelectedModeFlags | Where-Object { $_ }).Count
|
||||
if ($SelectedModeCount -gt 1) { throw 'Select one Core test mode per BuildHost launch.' }
|
||||
@@ -64,6 +68,10 @@ if ($CorePlanOnly -and $CoreTestSeed -eq [int]::MinValue) {
|
||||
if ($CoreTestSeed -ne [int]::MinValue -and -not $CorePlanOnly) {
|
||||
throw '-CoreTestSeed is valid only with -CorePlanOnly.'
|
||||
}
|
||||
if ($StreamingTraceOnly -and ($SharedFeatureAuditOnly -or $EnableHybridFixturePlacement -or
|
||||
$HybridCliffOnly -or $HybridFixturesOnly -or $WorldAssemblyManifestPath)) {
|
||||
throw '-StreamingTraceOnly uses the staged owner plan without additional fixture or manifest overrides.'
|
||||
}
|
||||
|
||||
function Assert-UnderPath([string]$Candidate, [string]$Root) {
|
||||
$candidateFull = [IO.Path]::GetFullPath($Candidate).TrimEnd('\', '/')
|
||||
@@ -138,7 +146,7 @@ if ($SharedFeatureAuditOnly) {
|
||||
}
|
||||
$RunName += if ($StreamingOrder -eq 'Legacy') { '_legacy_order' } else { '_coarse_first' }
|
||||
if ($EnforceCollisionGate) { $RunName += '_collision_gate' }
|
||||
if ($StartupTrace) { $RunName += '_trace' }
|
||||
if ($StartupTrace -or $StreamingTraceOnly) { $RunName += '_trace' }
|
||||
|
||||
$foreignEditors = @(Get-Process -ErrorAction SilentlyContinue |
|
||||
Where-Object { $_.ProcessName -like 'UnrealEditor*' })
|
||||
@@ -257,7 +265,15 @@ $CoarseFirstValue = if ($StreamingOrder -eq 'CoarseFirst') { 1 } else { 0 }
|
||||
$DynamicReserveValue = if ($StreamingOrder -eq 'CoarseFirst') { 1 } else { 0 }
|
||||
$BaseArguments += "-voxel.StreamingCoarseFirst=$CoarseFirstValue"
|
||||
$BaseArguments += "-voxel.StreamingDynamicNearReserve=$DynamicReserveValue"
|
||||
if ($StartupTrace) {
|
||||
$BaseArguments += "-voxel.StreamingStartupApplyBoost=$StartupApplyBoost"
|
||||
if ($StreamingTraceOnly) {
|
||||
$BaseArguments += '-coreworldstreamtrace=1'
|
||||
$BaseArguments += '-voxel.TestMove=1'
|
||||
$BaseArguments += '-voxel.TestMoveSpeedCmPerSecond=600'
|
||||
$BaseArguments += '-voxel.TestMoveStartSeconds=30'
|
||||
$BaseArguments += '-voxel.TestMoveDirection=0,1,0'
|
||||
}
|
||||
if ($StartupTrace -or $StreamingTraceOnly) {
|
||||
$TracePath = Join-Path $LogDirectory "CoreWorldValidation-$RunName.trace.jsonl"
|
||||
$BaseArguments += ('-voxel.StartupTraceFile="{0}"' -f $TracePath)
|
||||
$BaseArguments += '-voxel.StartupTraceUntilEndPlay=1'
|
||||
@@ -387,6 +403,22 @@ if ($SharedFeatureAuditOnly) {
|
||||
Write-Host "Peak commandlet private bytes sampled: $PeakPrivateBytes"
|
||||
return
|
||||
}
|
||||
if ($StreamingTraceOnly) {
|
||||
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=600 walk_direction=\+Y' -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."
|
||||
}
|
||||
$NewCrashes = @(Get-NewCrashFolders)
|
||||
if ($NewCrashes.Count -gt 0) {
|
||||
throw "New UECC crash folders appeared during the stream trace: $($NewCrashes -join '; ')"
|
||||
}
|
||||
Write-Host "VOXELFORGE_CORE_STREAM_TRACE_PASS boost=$StartupApplyBoost order=$StreamingOrder"
|
||||
Write-Host "Core actor log: $FinalLog"
|
||||
Write-Host "Startup trace: $TracePath"
|
||||
Write-Host "Peak commandlet private bytes sampled: $PeakPrivateBytes"
|
||||
return
|
||||
}
|
||||
if ($CoreFallbackTest) {
|
||||
foreach ($Marker in @(
|
||||
'[VoxelForgeCoreFallbackTest] fallback=PASS core_disabled=1 legacy_generator=1',
|
||||
|
||||
Reference in new issue
Block a user