Files
VoxelForge/Standalone/Research/WorldAssemblerM3/Linux2/WindowsReplay.ps1
T
Fr0zkaandClaude Opus 5.5 303b7b9f24 wip(assembler): round L2 -- the cross-platform hash check can fail; FP contraction changes the world
Clang -ffp-contract=on/fast and GCC's default (fast) all change the density hash on the L1 view;
contraction off reproduces L1 (= Windows S13) at W1/W12. Seed sweep: 48 FloatingIslands seeds and
14 effective SurfaceWorld seeds (34 of 48 fell on a seed-independent cube) match across Clang/GCC
and W1/W12. Standalone gains --seed/--recipe/--render-distance-chunks (viewer + headless) and a
Windows replay script. Linux standalone workers get 32 MiB pthread stacks (TLS is 17.3 MiB/thread),
so no external stack limit is needed. No Core or world-output change; MSVC compile unverified.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 18:18:34 +02:00

47 lines
1.9 KiB
PowerShell

$ErrorActionPreference = 'Stop'
$Root = [IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..\..\..'))
$Viewer = Join-Path $Root 'Standalone\bin\VoxelForgeCoreStandalone.exe'
$Data = Join-Path $Root 'Standalone\data\owner_world.json'
$SeedFile = Join-Path $PSScriptRoot 'seeds.txt'
$LogDir = Join-Path $Root 'Saved\Linux'
[IO.Directory]::CreateDirectory($LogDir) | Out-Null
$Recipes = @(
@{ Name = 'surface-world'; Camera = '0,-35,-487.94,0,-22' },
@{ Name = 'floating-islands'; Camera = '0,0,-32,0,-22' }
)
$Seeds = @(Get-Content -LiteralPath $SeedFile | ForEach-Object { [int]$_.Trim() })
if ($Seeds.Count -ne 48) { throw "Expected 48 seeds in $SeedFile" }
if (-not (Test-Path -LiteralPath $Viewer -PathType Leaf)) { throw "Viewer not found: $Viewer" }
foreach ($Recipe in $Recipes) {
foreach ($Seed in $Seeds) {
foreach ($Workers in @(1, 12)) {
$Arguments = @(
$Data,
"--seed=$Seed",
"--recipe=$($Recipe.Name)",
'--render-distance-chunks=0',
"--workers=$Workers",
'--world-assembler-prototype',
'--stream-benchmark',
'--stream-pipeline',
'--stream-hash',
'--force-generate',
'--clip-radius=1',
'--max-clip-level=0',
"--camera=$($Recipe.Camera)",
'--far-horizon-lod8-step=0',
'--process-affinity=4095',
'--process-priority=Normal',
'--frame-limit=60'
)
$Stem = "windows2-seed-$Seed-$($Recipe.Name)-w$Workers"
$Log = Join-Path $LogDir "$Stem.log"
Write-Host "& `"$Viewer`" $($Arguments -join ' ')"
& $Viewer @Arguments *> $Log
if ($LASTEXITCODE -ne 0) { throw "Viewer failed ($LASTEXITCODE); see $Log" }
}
}
}