standalone: the owner's world outside Unreal -- bit-identical density, D3D11 fly-through viewer
Standalone/ (C++20, MSVC /O2 /arch:AVX2 /fp:precise, Build.ps1): copied density pipeline, op stack, cave morphology, passages, strate manager/composer, noise, DetSinCos, mesher, clipmap selection, with a UE compatibility layer (Compat/). Owner data exported once to Standalone/data/owner_world.json by a default-off explore-commandlet exporter (the only plugin-source change). 25 cm voxels. Parity: seed 0, 3,436 samples (strate edges, negative/far coords, rooms, tunnels, passages, landings): bit-identical. Viewer: full 7-level clipmap, per-level toggles 1-7, T = round winding tunnels (standalone option), N/P seed, F wireframe. Timing NOT yet a baseline: 515 s for 12,054 tiles (L0 70 s, L6 296 s); the compat TMap/TSet are vector-backed with linear lookup, which the plugin's caches do not expect. 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
a443eb8546
commit
05f62cff36
114 files changed
+68206
-3
No files matched your search
@@ -1,6 +1,6 @@
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[ValidateSet('canonical', 'owner', 'probe', 'perf', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'parity', 'horizon', 'horizon-render', 'determinism', 'symbolize-stacks', 'region-eval', 'step2d', 'step2e', 'step2f', 'step3-scale', 'step2f-capture', 'step3-game')]
|
||||
[ValidateSet('canonical', 'owner', 'probe', 'perf', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'parity', 'horizon', 'horizon-render', 'determinism', 'symbolize-stacks', 'region-eval', 'standalone-export', 'compile-only', 'step2d', 'step2e', 'step2f', 'step3-scale', 'step2f-capture', 'step3-game')]
|
||||
[string]$Scenario = 'canonical',
|
||||
[switch]$Build,
|
||||
[switch]$EnableRender,
|
||||
@@ -634,7 +634,7 @@ function Sync-OwnerAssets {
|
||||
$null = Copy-Item -LiteralPath $source -Destination $target -Force -PassThru
|
||||
[void]$rows.Add([ordered]@{
|
||||
name = $assetName
|
||||
used_by_scenario = $Scenario -in @('owner', 'probe', 'parity', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'horizon', 'horizon-render', 'determinism', 'region-eval', 'step2d', 'step2e', 'step2f', 'step3-scale', 'step2f-capture', 'step3-game')
|
||||
used_by_scenario = $Scenario -in @('owner', 'probe', 'parity', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'horizon', 'horizon-render', 'determinism', 'region-eval', 'standalone-export', 'step2d', 'step2e', 'step2f', 'step3-scale', 'step2f-capture', 'step3-game')
|
||||
source_path = $source
|
||||
source_sha256 = Get-Sha256 $source
|
||||
staged_path = $target
|
||||
@@ -729,7 +729,7 @@ function Get-AssetEvidence {
|
||||
$target = Join-Path $HostRoot "Content\VoxelForge\$assetName.uasset"
|
||||
[void]$rows.Add([ordered]@{
|
||||
name = $assetName
|
||||
used_by_scenario = $Scenario -in @('owner', 'probe', 'parity', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'horizon', 'horizon-render', 'determinism', 'region-eval', 'step2d', 'step2e', 'step2f', 'step3-scale', 'step2f-capture', 'step3-game')
|
||||
used_by_scenario = $Scenario -in @('owner', 'probe', 'parity', 'tests', 'surface-fall', 'crossing', 'gate-stress', 'visual-edit', 'visual-lod', 'visual-gap-walk', 'visual-gap-inject', 'dig-motion', 'horizon', 'horizon-render', 'determinism', 'region-eval', 'standalone-export', 'step2d', 'step2e', 'step2f', 'step3-scale', 'step2f-capture', 'step3-game')
|
||||
source_path = $source
|
||||
source_sha256 = Get-Sha256 $source
|
||||
staged_path = $target
|
||||
@@ -1660,6 +1660,7 @@ try {
|
||||
$commandletLedger = $null
|
||||
$gameLedger = $null
|
||||
switch ($Scenario) {
|
||||
'compile-only' { }
|
||||
'canonical' {
|
||||
$baseCvars['voxel.OuterClassifierMode'] = 0
|
||||
$args = New-CommonArguments 'commandlet' (Join-Path $RunRoot 'Logs\canonical.log') (Merge-Cvars $baseCvars)
|
||||
@@ -1679,6 +1680,40 @@ try {
|
||||
(Join-Path $RunRoot 'Logs\owner.log') (Join-Path $RunRoot 'Logs\owner.stdout.log') (Join-Path $RunRoot 'Logs\owner.stderr.log')
|
||||
$CommandletMetrics = Get-CommandletMetrics $commandletOut 'owner assets'
|
||||
}
|
||||
'standalone-export' {
|
||||
$exportLog = Join-Path $RunRoot 'Logs\standalone-export.log'
|
||||
$args = New-CommonArguments 'commandlet' $exportLog (Merge-Cvars $baseCvars)
|
||||
$args += @(
|
||||
'-seed=0', '-archetype=TunnelNetwork', '-slot=0', '-modes=export',
|
||||
'-blockearlyout=0', '-gameconfig=1', '-standaloneworldexport=1',
|
||||
'-settingsref=/Game/VoxelForge/DA_Settings.DA_Settings',
|
||||
('-out="{0}"' -f $commandletOut)
|
||||
)
|
||||
$commandletLedger = Invoke-UnrealLaunch 'standalone-export-commandlet' $args `
|
||||
$exportLog (Join-Path $RunRoot 'Logs\standalone-export.stdout.log') `
|
||||
(Join-Path $RunRoot 'Logs\standalone-export.stderr.log')
|
||||
$ownerWorldPath = Join-Path $commandletOut 'owner_world.json'
|
||||
if ($commandletLedger.status -eq 'passed' -and (Test-Path -LiteralPath $ownerWorldPath -PathType Leaf)) {
|
||||
$standaloneData = Join-Path $PluginRoot 'Standalone\data'
|
||||
Ensure-Directory $standaloneData
|
||||
Copy-Item -LiteralPath $ownerWorldPath -Destination (Join-Path $standaloneData 'owner_world.json') -Force
|
||||
$exported = Read-JsonFile $ownerWorldPath
|
||||
$CommandletMetrics = [ordered]@{
|
||||
status = 'exported'
|
||||
output = $ownerWorldPath
|
||||
standalone_data = Join-Path $standaloneData 'owner_world.json'
|
||||
seed = Get-JsonValue $exported 'seed'
|
||||
voxel_size_cm = Get-JsonValue $exported 'voxel_size_cm'
|
||||
strate_count = @((Get-JsonValue $exported 'strates')).Count
|
||||
passage_count = @((Get-JsonValue $exported 'passages')).Count
|
||||
density_sample_count = @((Get-JsonValue $exported 'density_samples')).Count
|
||||
viewer_start = Get-JsonValue $exported 'viewer_start'
|
||||
}
|
||||
} else {
|
||||
Add-Failure "standalone exporter did not produce $ownerWorldPath"
|
||||
$CommandletMetrics = [ordered]@{ status = 'missing'; output = $ownerWorldPath }
|
||||
}
|
||||
}
|
||||
'probe' {
|
||||
$args = New-CommonArguments 'commandlet' (Join-Path $RunRoot 'Logs\probe.log') (Merge-Cvars $baseCvars)
|
||||
$args += New-CommandletArguments $commandletOut 'tunnelcoreprobe' ($Assets -eq 'owner') $false 128
|
||||
|
||||
Reference in new issue
Block a user