Skip to content

Saved Blueprint customization — 2026-10-06 ​

This slice proves a different usable screen, nested entry, entirely Blueprint local data source and Designer-built root through public InterfaceForge/engine features. Game Master's exclusive visual design, source and assets are absent. The mock survey rules belong to ForgeExamples, outside the UI plugin. This is development evidence, not full-product or physical-device acceptance.

Implementation and authoring ​

Four new saved assets: WBP_WatchpostSurvey, WBP_WatchpostEntry, BP_WatchpostSource and WBP_ForgeFlowRoot. The journal's actual SurveyChoice Blueprint click constructs the source and pushes the screen. Observe ridge updates count, prose, four progress segments and availability through the public IFDataSource/IFPresentationData/IFEntry contracts. The source rejects unknown keys/actions, unrelated context and actions after completion. Returning releases model subscriptions and restores the journal. The source object is local session state, not a replicated/authoritative gameplay backend.

The alternative root's Designer chooses engine Horizontal menu and Fade Only HUD/modal transitions, keeps CommonUI pooling/focus and registers three stacks. New public IFRootLayout.Register Notification Layer retains a Designer presenter, validates local-player ownership, supports explicit clear/rebind and unregisters/clears on root removal. A removed root rejects stale registration. This fills a genuine public Blueprint authoring gap; no example-only registration code is needed. Existing roots and the default maps retain their previous configuration. Actual node recipes explain choosing the alternative root through public Create Root or a Blueprint controller/GameMode.

Create-CustomizationRoot-Blueprints-UE56.log and Create-CustomizationReady-Blueprints-UE56.log record successful asset authoring. The final engine CompileAllBlueprints run is Compile-Customization-AllBlueprints-UE56.log: exactly27 distinct own Blueprint paths, 0 errors, 0 warnings, 0 failed own loads. Its quoted AllowListFile argument points to Saved/BlueprintChecks/CustomizationAllowList.txt. The runtime Primary Asset Label explicitly cooks all27 owned classes. Latest sample Editor build Build-Example-UE56-CustomizationTransitionEvidence.log passes in5.10s.

Actual runtime checks ​

UE5.6.1 CL44394996, Win64 DX11. Customization-TransitionSource-{Normal,Enlarged}-UE56.log and Customization-Cooked-{Normal,Enlarged}-UE56.log all pass the current verifier at measured1280×720/defaults and800×600/150%UI and text. Runs use RenderOffscreen, synthetic Slate key/pointer events and explicit programmatic preference/class/lifetime setup. Preferences are previewed then canceled, never Applied; all newly launched processes exit. No desktop input or reference editor session was operated.

The fixture replaces the root through public Create Root, runs the saved main menu → asynchronous playable HUD → Pause → journal → theme change → survey flow, activates the real saved Blueprint buttons with Slate Enter, checks nested initial focus and actual geometry, advances1/.25 through4/1 and verifies the completed action remains rejected. The actual saved journal theme click refreshes pooled rows. A separate fixture assignment changes only the survey title's public Theme Override; this is property/API proof, not a claim that an override Blueprint graph was clicked.

While a saved confirmation popup is open, synthetic gamepad input updates the custom Blueprint presentation event without stealing modal focus; half-pixel mouse motion keeps Gamepad, meaningful20-pixel movement restores Pointer, and keyboard input restores Keyboard. Back returns to the nested entry; closing the survey releases its data and restores journal focus. Six real menu-transition starts and six settles are observed in each final source/cooked run. Reduced motion makes all registered custom stack durations zero. Presenter clear/rebind, saved notification body rendering, root cleanup and stale-root rejection pass. These checks do not certify physical controller, touch, disconnection, stick drift or native mouse behavior.

Tools/run_customization_reviews.ps1 takes a unique Prefix and optional exact PackagedExecutable/EngineVersion/ProjectPath. Tools/verify_customization_review.py requires the actual engine/version/viewport and every current assertion, one PASS marker and no errors/ensures/Accessed None. Customization-VerificationSummary.json records all four accepted results plus a rejected retained failure; exit0 alone is not sufficient.

Failures and repairs retained ​

  • Initial authoring build incorrectly iterated TObjectPtr graphs as raw pointers; repaired Get usage. The next graph used SetFraction's wrong pin name; actual Value pin fixed before saving that entry.
  • Parent-widget lookup lacked execution wiring; repaired the real Blueprint path before full compile. Designer root widget variables needed compilation before getter node creation. These failed commandlet/build logs remain under Create-Customization*/Build-Example-UE56-Customization*.
  • First runtime fixture used the wrong native dialog control name and assumed Blueprint presentation storage was a byte rather than FEnumProperty. Inspecting the actual saved widget/reflection repaired the fixture.
  • Offscreen virtual-cursor coordinates made the pointer event delta zero through floating-point precision. Finite coordinates anchored to actual root geometry exercise the intended half-pixel/20-pixel events. This was fixture input construction, not evidence of a physical pointer defect. VeryVerbose core diagnostics remain disabled normally. Customization-Pointer* failures are retained.
  • Count suffix auto-wrap produced an unwanted split; disabled it on the numeric/count text. Completion capture initially ran after Back/release; the final fixture captures the settled completion before leaving. Rebuilt/re-authored/retested results replace neither the old logs nor archives.

Packaging, regressions and visual review ​

Fresh Packages/BlueprintCustomizationSlice, both maps, Win64 Development: BuildCookRun23.74s, cook7.89s,485 saved packages/478 IoStore packages,0 cook errors/warnings. Command: installed UE5.6 RunUAT BuildCookRun with -project=<canonical ForgeExamples.uproject> -noP4 -platform=Win64 -clientconfig=Development -build -cook -stage -pak -archive -archivedirectory=<fresh internal archive> -map=/Game/Maps/ForgeOutpost+/Game/Maps/ForgePilgrimage -ubtargs=-NoHotReloadFromIDE -ddc=InstalledNoZenLocalFallback -utf8output. Package-BlueprintCustomization-UE56.log records success. Exact UAT Log.txt copied as archive AutomationToolLog.txt; exact FinalCopyWin64_UFSFiles.txt preserved. The first attempted copy used a nonexistent source filename and was corrected by inspecting the UAT directory; no other manifest format was substituted.

The exact inner Windows/ForgeExamples/Binaries/Win64/ForgeExamples.exe passes both customization flows and all four current RTS/RPG normal/enlarged loading regressions (Customization-Cooked-Loading-*-UE56.log). Current journal footer regression also passes Customization-Cooked-Entries-{Normal,Enlarged}-UE56.log:1000 models,3/2 displayed,6/4 observed pooled rows, live refresh, selection, scroll/stale-source isolation, release/reset/repopulation and final close. Frame samples3403/3354, median1.684/1.707ms and P95 2.348/2.461ms are uncapped local mock-scene tick observations, not a gameplay or device performance guarantee. Earlier journal4/3-row results describe its older footer.

Source and exact cooked completion, actual transition and enlarged journal captures reviewed; ten selected copies preserved as Visual/Customization-{Source,Cooked}-*.png. Final prose/count/segments/return controls fit at both sizes, including completion's two-line enlarged prose. Transitions genuinely animate; captures show outgoing surfaces during movement/fade and do not establish final choreography polish. Primitive scenes, broad HUD layouts and default presentation remain development work.

Customization-Boundary.json passes134 authored files/45 own packages/2647 exact staging targets against5546 reference hashes. Customization-ReferencePreservation.json confirms reference HEAD/status/changed-file and all5546 UI hashes unchanged. Hash/membership checks detect exact copies, not transformed visual designs or legal clearance. The original-design ownership policy remains mandatory. No commit/publication or release assembled.

Independent compatibility and open gates ​

Fresh UE56/57/58-DesignerRoot strict Editor Development/Game Development/Shipping builds pass43.16/46.47/44.53s. Each isolated host loads22 reflected types/all10 original plugin assets and checks RegisterNotificationLayer plus the existing APIs, with0 errors/warnings. Only InterfaceForge is present; inventory/Mass/example absent. Earlier settings automation was not rerun for this registration-only change. See ENGINE_COMPATIBILITY.md.

Revised isolated UE57-C/UE58-C sample Editor builds pass37.14/41.00s. UE5.8 emits22 compiler warnings:20 C++ narrowing warnings in existing fixture/presentation code plus2 target include-order deprecations. Both engines compile exactly27 distinct saved own Blueprints with0 errors/warnings/failed own loads (Compile-Customization-UE57/58-AllBlueprints.log). Customization-Source57-{Normal,Enlarged}-UE57.log and Customization-Source58-{Normal,Enlarged}-UE58.log pass all current runtime assertions and actual-engine/viewport verifiers. Actual enlarged completion captures reviewed and copied Visual/Customization-Source-UE57/58-Complete-Enlarged00000.png. Customization-NewerEngineSummary.json verifies all134 canonical source files and copied authored files unchanged; only the isolated .uproject EngineAssociation deliberately differs. Generated caches/logs are excluded. These are source runtime checks; no fresh5.7/5.8 customization package was cooked, and the older WorldEntries archives remain scoped to their revision.

Full arbitrary custom UMG timelines/interruption, additional entry classes/tree/tile replacement, remapped glyphs in custom widgets, physical/native controller/touch/drift/disconnection, audio audibility, long localization, safe-area variations, split-screen, broader original presentation polish,10kentity/optional Mass and other newer-engine full-feature/cooked gates remain open. All newly launched processes exited and reversible preference previews canceled. Goal ACTIVE; this checkpoint is not completion.

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

Enlarged documentation image

Enlarged documentation image