wip(assembler): round S1 -- one Core voxel-size source; per-tile feature lists (islands)

AVoxelWorld::CoreVoxelSizeCm (default 25, 32 voxels/tile) flows through plan, field,
mesher, content, water, atmosphere, edits and collision. Staged-owner BuildHost passes at
20 cm (SurfaceWorld + islands, W1/W8/W16, anchors, BP edits, collision) with a fixed-25cm
negative control; default-size hashes match round 4; Core off stays legacy 12.5 cm.
Reusable BuildWorldAssemblyFeatureTileListV1; wired into FloatingIslands only so far.
256-island stress: tile p95 112.5 -> 2.0 ms, 0 mismatches, dropped-feature control fails.
Content placement measured (no populated cells): island ground search 7.25 ms/cell vs
legacy 0.29 ms -- open. Outside-review evaluation in Round5/REPORT.md.

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-18 18:48:38 +02:00
1 parent 111cf3d262
commit d6e69420e8
25 files changed
+2136 -250

No files matched your search

+3 -3
View File
@@ -1,6 +1,6 @@
[CmdletBinding()]
param(
[ValidateRange(1, 4)][int]$MaxParallelActions = 4,
[ValidateRange(1, 16)][int]$MaxParallelActions = 16,
[ValidateRange(60, 900)][int]$TimeoutSeconds = 900
)
@@ -166,7 +166,7 @@ $buildSucceeded = $false
for ($attempt = 1; $attempt -le 2 -and -not $buildSucceeded; ++$attempt) {
$attemptStdout = if ($attempt -eq 1) { $BuildStdout } else { Join-Path $LogRoot 'UBT-CoreIntegration.retry.stdout.log' }
$attemptStderr = if ($attempt -eq 1) { $BuildStderr } else { Join-Path $LogRoot 'UBT-CoreIntegration.retry.stderr.log' }
Write-Host "BuildHost UBT attempt $attempt of 2; max parallel actions=$MaxParallelActions; BelowNormal priority."
Write-Host "BuildHost UBT attempt $attempt of 2; max parallel actions=$MaxParallelActions; Normal priority."
Wait-ForLaunchMemory
$foreignEditors = @(Get-Process -ErrorAction SilentlyContinue |
Where-Object { $_.ProcessName -like 'UnrealEditor*' })
@@ -177,7 +177,7 @@ for ($attempt = 1; $attempt -le 2 -and -not $buildSucceeded; ++$attempt) {
$process = Start-Process -FilePath $dotnet -ArgumentList $argumentList -WorkingDirectory $PluginRoot `
-RedirectStandardOutput $attemptStdout -RedirectStandardError $attemptStderr `
-WindowStyle Hidden -PassThru
$process.PriorityClass = [Diagnostics.ProcessPriorityClass]::BelowNormal
$process.PriorityClass = [Diagnostics.ProcessPriorityClass]::Normal
$started = [datetime]::UtcNow
while (-not $process.HasExited) {
Start-Sleep -Seconds 5
+14 -7
View File
@@ -1,6 +1,7 @@
[CmdletBinding()]
param(
[ValidateRange(60, 900)][int]$TimeoutSeconds = 900,
[ValidateRange(12.5, 25.0)][double]$CoreVoxelSizeCm = 25.0,
[string]$WorldAssemblyManifestPath = '',
[ValidateSet('MarchingCubesV1', 'WorldAssemblerHybridV1', 'WorldAssemblerHybridV2')][string]$CoreMesherRecipe = 'MarchingCubesV1',
[switch]$EnableHybridFixturePlacement,
@@ -34,11 +35,16 @@ $ZenData = Join-Path $OutputRoot 'ZenData'
$EditorCmd = 'E:\Program Files\Epic Games\UE_5.7\Engine\Binaries\Win64\UnrealEditor-Cmd.exe'
$MemoryLimitBytes = 8GB
$CrashRoots = @((Join-Path $HostRoot 'Saved\Crashes'), (Join-Path $StagePlugin 'Saved\Crashes'))
$RunName = if ($FloatingIslandsOnly) { 'floating_islands' }
elseif ($CoreFallbackTest -or $MismatchedManifestFallback) { 'mismatched_fallback' }
elseif ($CoreOffTest) { 'core_off' }
elseif ($CorePlanOnly) { if ($CoreTestSeed -ne [int]::MinValue) { "plan_seed_$CoreTestSeed" } else { 'plan_only' } }
else { 'owner_surface' }
$CoreSizeSuffix = ''
if ([Math]::Abs($CoreVoxelSizeCm - 25.0) -gt 0.000001) {
$CoreSizeText = $CoreVoxelSizeCm.ToString('0.####', [Globalization.CultureInfo]::InvariantCulture)
$CoreSizeSuffix = "_voxel_$CoreSizeText"
}
$RunName = if ($FloatingIslandsOnly) { "floating_islands$CoreSizeSuffix" }
elseif ($CoreFallbackTest -or $MismatchedManifestFallback) { "mismatched_fallback$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" }
if ($MismatchedManifestFallback) { $CoreFallbackTest = $true }
$SelectedModeFlags = @(
@@ -223,6 +229,7 @@ $BaseArguments = @(
('-LocalDataCachePath="{0}"' -f $DerivedDataCache),
'-run=VoxelForgeExplore', '-seed=0', '-archetype=TunnelNetwork', '-slot=0',
'-modes=export', '-gameconfig=1', '-coreworldtest=1',
('-corevoxelsizecm={0}' -f $CoreVoxelSizeCm.ToString('0.####', [Globalization.CultureInfo]::InvariantCulture)),
("-coreislandtest=$FloatingIslandsOnlyFlag"),
("-corefallbacktest=$CoreFallbackTestFlag"),
("-coreofftest=$CoreOffTestFlag"),
@@ -273,11 +280,11 @@ try {
$ids = ($foreignEditors | ForEach-Object { "$($_.ProcessName):$($_.Id)" }) -join ', '
throw "UnrealEditor is already running; leaving it untouched: $ids"
}
Write-Host "BuildHost Core actor commandlet attempt $Attempt of 2; BelowNormal priority; run=$RunName."
Write-Host "BuildHost Core actor commandlet attempt $Attempt of 2; Normal priority; run=$RunName."
$Process = Start-Process -FilePath $EditorCmd -ArgumentList $Arguments -WorkingDirectory $HostRoot `
-RedirectStandardOutput $StdoutPath -RedirectStandardError $StderrPath `
-WindowStyle Hidden -PassThru
$Process.PriorityClass = [Diagnostics.ProcessPriorityClass]::BelowNormal
$Process.PriorityClass = [Diagnostics.ProcessPriorityClass]::Normal
$StartedUtc = [datetime]::UtcNow
$PeakPrivateBytes = [int64]0
while (-not $Process.HasExited) {