standalone: VoxelForgeCore library -- the fast generator behind a clean C++20 API, output unchanged

- Standalone/Core: public header VoxelForgeCore.h (no Unreal types), static library target,
  ResolvedWorldSnapshot (from the schema-v1 JSON), World (compile, generateTile, density/sign,
  point/segment solid, classifyBox), host-supplied JobScheduler (the core starts no threads),
  sequenced, idempotent EditTransaction returning affected tiles per LOD.
- The viewer, benchmarks, edits and audits run on Core; StreamingWorld stays host code.
- Same as round 11: 11 hash rows at W1 and W8, routes 5642/5642, look/passage/far audits pass,
  bad-shell control fails, six fixed captures byte-identical; cold W8 1.025 s vs 1.041 s reference.
- SHARED_CPP_LIBRARY_PLAN.md rewritten for a UBT module compiling the same sources via shims.
Open issue before Unreal: Core's implementation still compiles the Compat stand-ins named like
Unreal types (TArray, FVector...); inside a UE binary that is an ODR clash. Must be namespaced.

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-05 11:39:02 +02:00
1 parent 631dd57eb4
commit 557f6aac30
22 files changed
+6185 -5063

No files matched your search

+17 -15
View File
@@ -1,31 +1,33 @@
# VoxelForge standalone world
This C++20 program loads the owner snapshot from `data/owner_world.json`, runs the copied
VoxelForge density pipeline and marching-cubes mesher, streams the clipmap with eight worker threads
by default, and displays it through Direct3D 11. Unreal is not linked or needed at run time.
This C++20 program loads the owner snapshot from `data/owner_world.json`, runs the VoxelForge CPU
pipeline, streams the clipmap with up to eight host worker threads, and displays it through Direct3D
11. `Core/` contains the Unreal-free `VoxelForgeCore` API and static-library target used by the
standalone shape-world path. Unreal is not linked or needed at run time.
## Build and launch
From the plugin root, run:
```powershell
.\Standalone\Build.ps1
.\Standalone\bin\VoxelForgeStandalone.exe
.\Standalone\Build.ps1 -Target All
.\Standalone\bin\VoxelForgeCoreStandalone.exe --shape-world
```
The build uses the configured VS 2022 `vcvars64.bat`, MSVC `/std:c++20 /O2 /arch:AVX2 /fp:precise`.
`Build.ps1` starts MSVC at BelowNormal priority and does not enable `/MP`.
Pass another executable name to build beside any viewer that may be open:
`.\Standalone\Build.ps1 -OutputName VoxelForgeStandalone_test.exe`. The executable finds the
JSON beside itself under `Standalone\data\`.
`Build.ps1 -Target Core` builds only `Build\VoxelForgeCore\VoxelForgeCore.lib`; `-Target All`
builds that library and the viewer. `Core\core_sources.txt` is the shared translation-unit
manifest. The build uses the configured VS 2022 `vcvars64.bat`, MSVC `/std:c++20`, `/O2`,
`/arch:AVX2`, `/fp:precise` and `/MP8`, BelowNormal priority and affinity `0xFF00`. Pass another
executable name to build beside any viewer that may be open by setting `-OutputName`, for example
`VoxelForgeCoreStandalone_test.exe`. The executable finds the JSON under `Standalone\data\`.
### Daytime resource limit
Run tests and benchmarks at Idle or BelowNormal priority and use no more than 8 of this PC's 16
logical CPUs. The default viewer uses eight workers. Use `Build\LaunchBelowNormal.ps1` for any test or
benchmark process; it starts the child at BelowNormal, applies affinity `0xFF00`, and verifies both.
Builds use no more than four compiler processes (the current build is serial) and retain
`/fp:precise`. The all-core 16-worker runs documented below were the owner's one-night exception.
Run audits and benchmarks at BelowNormal priority and use no more than 8 of this PC's 16 logical
CPUs. The viewer clamps worker requests to eight. `Build.ps1` bounds MSVC with `/MP8`, sets the
build process to BelowNormal and affinity `0xFF00`, and retains `/fp:precise`. The verification
runner in `Core\verification\RunMachine.ps1` applies the same limits to viewer runs and refuses to
overwrite an existing log stem.
## Controls