Unreal Engine acceptance

September 20, 2026 · View on GitHub

The River Oaks Editor and Game Development targets build on Unreal Engine 5.8.2. This records the September 20, 2026 compatibility run, not production visual acceptance.

The subsequent street-level acceptance supersedes the original residential scene below with the compact shopping district.

Environment

  • Apple M3 Max, 48 GB RAM, macOS 26.6.2.
  • Epic Launcher engine 5.8.2, changelist 56702186.
  • Xcode 26.6, Clang 21.1.6, Mac SDK 26.5.
  • Engine location: /Users/Shared/Epic Games/UE_5.8.

Build evidence

Both commands ended with Result: Succeeded:

"$UE_ROOT/Engine/Build/BatchFiles/Mac/Build.sh" RiverOaksEditor Mac Development \
  -Project="$PWD/unreal/RiverOaks.uproject" -WaitMutex -NoUBA -NoUBALocal -MaxParallelActions=4
"$UE_ROOT/Engine/Build/BatchFiles/Mac/Build.sh" RiverOaks Mac Development \
  -Project="$PWD/unreal/RiverOaks.uproject" -WaitMutex -NoUBA -NoUBALocal -MaxParallelActions=4

The original 5.6/V5 target settings conflicted with the installed 5.8 editor's shared build settings. The targets now use BuildSettingsVersion.V7 and the Unreal5_8 include order. The project association is 5.8. An initial Unreal Build Accelerator run crashed after compilation; its zero shell exit status was not accepted as success. The bounded retry linked and deployed.

Native automation and persisted map

The RiverOaks automation group finished with 8 succeeded, 0 failed, 0 not run: Coordinates, HumanAuthority, HumanBackendSelection, HumanPoseSequence, Locomotion, PortrayalRecipe, Safety and ScheduleAuthority.

"$UE_ROOT/Engine/Binaries/Mac/UnrealEditor-Cmd" "$PWD/unreal/RiverOaks.uproject" \
  -unattended -NullRHI -ExecCmds="Automation RunTests RiverOaks" \
  -TestExit="Automation Test Queue Empty" -ReportExportPath=/tmp/river-oaks-engine-tests

The native Python run created the map, ran global-volume setup twice, saved, opened a blank map, and reopened /Game/Maps/RiverOaks. It verified exactly one River Oaks Global Post Process volume, enabled and unbound, with blend weight 1. AO intensity, radius and quality were 0.6, 100 and 100, with their override flags set. It also checked the four SSAO console variables against DefaultEngine.ini. The world fixture contains 940 road features and 2,605 buildings; the rendered runtime loaded those counts. This does not establish survey accuracy.

An initial harness requested immediate shutdown after asset work and crashed while destroying an ICU text object through a Slate notification ticker. The saved-map assertions had passed, but the process failed. A rerun that allowed notifications to settle before quitting passed and exited zero. A normal rendered game session also exited zero. The stack identifies the shutdown path; it does not establish a general engine root cause or prove the crash can never recur. The shipped setup script does not request editor shutdown.

Rendered SSAO and Lumen

The first rendered run reported that Lumen had no ray tracing data. Enabling r.GenerateMeshDistanceFields=True and restarting removed the warning. This is the prerequisite for Lumen software ray tracing described in Epic's technical documentation. The project also enables instanced-static-mesh usage on the generated blockout material so runtime instances can use it instead of the default material.

At 1280×720 on the M3 Max, a GPU capture of paused frame 24522 recorded:

PassGPU time
AmbientOcclusionSetup 640×3600.020 ms
AmbientOcclusionSetup 320×1800.009 ms
AmbientOcclusionPS 320×1800.030 ms
AmbientOcclusionPS 640×3600.071 ms
AmbientOcclusionPS 1280×7200.174 ms

These passes establish that SSAO executes. Their sum, 0.304 ms, is one sampled frame, not a benchmark or a 4K/60 fps result. Same-camera screenshots with r.Lumen.DiffuseIndirect.SSAO set to 1, 0 and then 1 showed small differences, but temporal variation exceeded the on/off difference. They are illustrative, not an isolated image-quality measurement. SSAO was restored to 1 afterward.

Evidence and limits

The checked-in result summary records the native test, volume and GPU results without account identifiers. Local artifacts from this run:

  • /tmp/river-oaks-game-build.log: successful Game target build.
  • /tmp/river-oaks-engine-tests/index.json: native automation results.
  • /tmp/river-oaks-bootstrap-acceptance.json: persisted global-volume assertions.
  • /tmp/river-oaks-bootstrap-recheck.log: clean repeated setup and shutdown.
  • /tmp/river-oaks-material-acceptance.log: material usage assertion and clean shutdown.
  • /tmp/river-oaks-render-fixed.log: loaded scene, distance fields and GPU capture.
  • /tmp/river-oaks-ssao-on.png, /tmp/river-oaks-ssao-off.png, and /tmp/river-oaks-ssao-restored.png: illustrative captures before material repair.

The generated map and material remain local Unreal assets and are not committed. Packaging/JSON staging, target-scale performance, production GIS accuracy and finished art are not verified by this run. See the production checklist.