Skip to content

Loading and return runtime checkpoint — 2026-10-06 ​

Accepted bounded slice: ScreenLoadingSlice-CookLabel. Four source and four exact packaged flows pass on UE5.6.1 CL44394996, Win64 Development, DX11 offscreen rendering. This does not complete the product or verify physical devices.

Public product behavior ​

Push Screen Async uses the engine streamable manager, a soft IFScreen class, local-player root, target layer, initial data and optional weak scope. Ready/Failed/Cancelled are exactly-once Blueprint outputs. Root Default Loading Class replaces presentation; saved WBP_ForgeLoading uses ordinary designer controls and public optional bindings. Native fallback remains usable. The main-menu Settings click contains the actual public async Blueprint node. Both example Begin adapters call the same public feature and start their separate demonstration providers only after Ready.

The request waits for settled CommonUI foreground before committing, retains the prior screen on cancel/failure, preserves unrelated dialogs, rejects competing/reentrant requests during clear/teardown and cancels invalid scopes/root lifetime. Core/UI time keeps cancellation and Back usable while gameplay is paused. No example gameplay, inventory or Mass dependency enters core. No reference asset, code or Game Master design is shipped.

Blueprint recipe records node pins, customization, lifecycle and cooking policy. All21 saved Widget Blueprints and the original asset label author with0errors/0warnings in Logs/Create-Loading-CookLabelReady-Blueprints-UE56.log. Source editor-game startup still reports two missing engine VisionOS icon warnings; these are not cook/core-host warnings.

Reproduction and scope ​

Source command: powershell -File Tools/run_loading_reviews.ps1 -Prefix LoadingReview-Ready-Source.

Exact package command: powershell -File Tools/run_loading_reviews.ps1 -Prefix Packaged-LoadingReview-CookLabel -PackagedExecutable <workspace>/Evidence/Packages/ScreenLoadingSlice-CookLabel/Windows/ForgeExamples/Binaries/Win64/ForgeExamples.exe.

The helper starts each own process hidden with /Game/Maps/ForgeOutpost or /Game/Maps/ForgePilgrimage, -RenderOffscreen -dx11 -ForceRes -Windowed -unattended -nosplash -IFVerifyLoading -abslog=<unique log>. Source adds its own uproject, -game -ddc=InstalledNoZenLocalFallback. Enlarged adds -IFVerifyLoadingEnlarged, previews150% UI/text and cancels preferences afterward. Normal requests1280×720; enlarged800×600. Actual viewport is verified, not assumed.

Current log prefix in LogsRTS normalRTS enlargedRPG normalRPG enlarged
LoadingReview-Ready-SourcePassPassPassPass
Packaged-LoadingReview-CookLabelPassPassPassPass

Each prefix has -{RTS|RPG}-{Normal|Enlarged}-UE56.log. Tools/verify_loading_review.py requires one exact complete result, all30 current flow/lifetime checks, two additional RPG geometry assertions and no engine errors/ensures/Accessed None. Engine exit0 is insufficient; LoadingReview-NegativeControl.json rejects a retained failed log.

Actual saved controls receive synthetic Slate keyboard intent and held Enter/Back; the saved scale graph receives a programmatic slider event. Checks cover Settings opening/cancel rollback/same-menu restoration; initially unloaded HUD soft class; custom loading title/progress/focus/bounds; duplicate rejection; competing node failure; exactly-once Cancel; abstract/null class failure; saved retry dialog; successful retry/initialization/data/provider commitment; pause/resume/return-confirmation Back/confirmed return; clear-layer reentrancy; destroyed scope; unrelated-dialog preservation; root teardown/new root; zero-delay engine callbacks; paused custom/native loaders; and loading a modal destination without removing it with its loader.

For deterministic cancellation the fixture temporarily sets the process-only engine s.StreamableDelegateDelayFrames=100000. It restores the default1 for normal retry and exercises0 on a recreated root. The product does not inject delay or fabricate progress. This tests pending completion/lifetime; it is not slow-disk or loading-time performance evidence. Progress1 can precede readiness; terminal Ready/Failed determines success. No map travel/MoviePlayer/download/shader/server-progress claim.

Defects repaired and visual review ​

Fast retry of a cached destination initially resurrected the old failure dialog over the new HUD. Completion now waits for the loader's activated, settled foreground through the engine stack transition. Retained LoadingReview-Initial-RTS-Normal-UE56.log records the failure; subsequent current flows pass without weakening the assertion.

Enlarged RPG arrival initially let scrolling prose overlap Interact/Pause. The saved Blueprint now puts prose in clipped ContextReading and keeps PinnedContextActions outside it. Local readout Base Size12/Refresh Appearance and compact KEEPER/HEARTH target names fit the context heading; story text remains in its actual dialogue/objective. A full-title assertion caught a remaining wrapped title after the first geometry repair, retained in LoadingReview-ReadableContext-Source-RPG-Enlarged-UE56.log. Current title ends at300 inside the reading viewport ending312.8; Interact starts320.8, ends378.4; Pause starts386.4. Normal title ends420.8 inside viewport ending572; Interact starts580, ends628; Pause starts636.

The latest exact packaged loading/failure/arrival captures were reviewed at800×600. The loading card's full title, progress and reachable Cancel fit; the failure dialog exposes Stay here/Try again; arrival shows the complete compact context heading and separate pinned controls. Evidence/Visual/Loading-Cooked-* preserves those captures. NativeLoading captures can show Loading cancelled during the removal transition because capture occurs after same-frame Back; they are not claimed as idle pending frames. Current primitive scenes and broader HUD/menu presentation still need product polish.

Packaging failure and verified repair ​

Initial Packages/ScreenLoadingSlice built/cooked/staged in23.86s with0cookerrors/warnings, but omitted the two HUDs: native C++ soft defaults do not establish serialized cooking dependencies. Its four Packaged-LoadingReview-Ready-* runs failed/incompletely exited and are rejected. That archive is preserved, not accepted.

The example now uses engine /Game/UI/DA_ForgeInterfaceAssets, runtime Primary Asset Label with explicit21 owned Blueprint classes, Always Cook, Priority1 and recursive dependency rules. The sample's Asset Manager scans its own /Game/UI labels with Is Editor Only=false. Core adds no buyer-project cooking override. Python's PrimaryAssetRules constructor failure is retained; repaired authoring instantiates empty rules and sets their editor properties.

Fresh Packages/ScreenLoadingSlice-CookLabel ran UE5.6 UAT BuildCookRun -project=<ForgeExamples.uproject> -noP4 -platform=Win64 -clientconfig=Development -build -cook -stage -pak -archive -archivedirectory=<fresh archive> -map=/Game/Maps/ForgeOutpost+/Game/Maps/ForgePilgrimage -ubtargs=-NoHotReloadFromIDE -ddc=InstalledNoZenLocalFallback -utf8output. Build/cook/stage12.33s; cook7.88s;472cooked/479totalpackages;0cookerrors/warnings. Its AutomationToolLog.txt and FinalCopyWin64_UFSFiles.txt are copied from this exact run. Manifest and actual cold soft-class runtime confirm both HUDs and custom loader are present.

Four further exact packaged800×600 enlarged regressions pass: Packaged-LoadingCookLabel-RTSNotice, RPGNotice, RTSSelection, RPGTooltip, each -Enlarged-UE56.log. They verify current result lanes/live Ward feedback, selection/production/movement/nav/lifetime, and narrower RPG Approach reason/party/objective/tooltip/modal behavior. The existing notification/RTS/tooltip verifiers accept each log. All new processes exited; unrelated desktop/native/reference sessions were left alone. No preference Apply or desktop input was used.

Independent core and boundaries ​

Fresh UE56/57/58-ScreenLoadingReady strict no-PCH/no-shared-PCH/no-unity Editor Development/Game Development/Shipping builds pass in40.33/43.75/45.90s. Isolated21-type/10-asset/current API loads pass0errors/0warnings with example/inventory/Mass absent. The initial5.7 strict build exposed a missing direct UObject/Package.h include, repaired before all three fresh runs. Engine record separates these checks from complete example5.7/5.8 runtime.

Logs/ScreenLoading-Boundary.json passes121sourcefiles/39ownpackages/2635exactstagingtargets against5546referencehashes. ScreenLoading-ReferencePreservation.json confirms HEAD/status/changed-file/UI hashes unchanged for GameMaster2488/Sakura3026/Mass32. This detects exact copies/membership errors, not legal clearance or transformed visual copying. DistributionPolicy excludes Evidence/Review/reference content. No release, commit or publication.

Physical controller/touch switching and disconnect/drift/jitter, latest complete native mouse/keyboard, audio audibility, arbitrary localization/safe areas/split-screen, slow-storage stress, full Blueprint theme/transition/provider replacement, world-space, broader polished playable interfaces, optional Mass adapter/performance and complete5.7/5.8 examples remain open. Goal ACTIVE.

Newer-engine extension: EXAMPLE_ENGINE_RUNTIME.md records complete isolated sample builds/23 BP compilations and scoped loading/world-entry source/cooked checks passing5.7.1 and5.8.3. Other full-feature/device/polish gates remain open.

UIForge v0.1.0 · Blueprint and C++ development documentation.

Enlarged documentation image

Enlarged documentation image