Appearance
Menu action cues and a saved Blueprint prompt — October 12
This is a scoped working UI milestone, not release readiness. Inventory remains excluded. Game Master's design is reference-only; these independently authored menus/HUDs do not ship its design. Sakura's independently reproduced center-origin angular tint, timing and layering are unchanged.
Public features and usable examples
IFNavigationInputData exposes Get Default Accept Action, Get Default Back Action and Get Navigation Action Key. They read the project's configured CommonInput defaults, including replacement input-data classes, and resolve the owning local player's input type/gamepad name. They do not execute or remap actions. Saved main/pause Blueprint identity bands use engine CommonActionWidget, actual action labels/keys and Blueprint visibility/fallback rules. CommonUI retains routing, focus, stacks and Back. Controller intent shows neutral face-position cues; meaningful pointer hides the band; keyboard restores actual-key text. There is no separate key/icon manager or widget input detector.
WBP_ForgeAppliedPrompt, a saved Widget Blueprint derived from IFActionPrompt, replaces the RTS footer's native prompt without changing its mapping, action label, parent slot or gameplay adapter. Its Image/IFText body uses public resolved brush/text properties and the current theme Accent. The base now refreshes On Prompt Updated on local-player theme replacement, with symmetric subscription cleanup. The RPG still uses the native minimal prompt. The custom-body proof applies to RTS, not RPG.
Actual Blueprint nodes and expected behavior are in menu cues and gameplay prompts. The examples use the same public features available to plugin users.
Builds and authored assets
UE5.6.1 CL44394996 final editor build: Build-Example-UE56-MenuCuesSpacingReview.log, successful4.54s. Own-project authoring saved both corrected menu assets; Create-MenuCuesSpacing-UE56.log contains IF_MENU_NAVIGATION_CUES_SAVED. CompileAllBlueprints -AllowListFile=Saved/BlueprintChecks/PromptAllowList.txt compiled30classes (29sample +1core controller-data BP),0errors/0warnings/0failed loads. Saved custom prompt creation and its explicit cooking-label addition are recorded in Create-AppliedPrompt-UE56.log. Authoring helpers and the ordinary example-generation pipeline now include the prompt/menu cues; a full destructive regeneration of the existing example assets was not performed.
Fresh BuildPlugin -StrictIncludes -NoDeleteHostProject builds Editor Development/Game Development/Shipping independently on:
| Installed engine from actual load | UAT elapsed | Isolated content/reflection load |
|---|---|---|
| 5.6.1 CL44394996 | 58s | 22native types /16unique packages |
| 5.7.4 CL51494982 | 59s | 22native types /16unique packages /17registry entries |
| 5.8.3 CL58210709 | 57s | 22native types /16unique packages |
Current installed5.7 is 5.7.4, confirmed by Build.version and this load; earlier5.7.1 receipts remain historical. BuildPlugin-UE*-MenuCues.log and UE*-MenuCues-CoreLoad.json record the current matrix. Core hosts contain InterfaceForge and test-only PythonScriptPlugin, without examples, MassForge or inventory. All61candidate core files match each host. No native compiler warning/error lines were found in these builds. Reflection/headless asset loading does not establish visual or physical-input acceptance on those engines.
Real-RHI interaction checks
28 scoped verifiers pass,14source and14final cooked, Win64 DX11 at1280×720/default and800×600/150%UI+text:
- Four main→settings/preview/cancel→loading→playable HUD→pause/resume→return flows per source/archive. Actual synthetic Down/Up/Accept/Back, dialog Cancel focus/return, reduced-motion and menu timeline assertions remain. New checks verify controller→meaningful pointer→keyboard presentation/cursor, configured CommonActionWidget labels/keys/glyphs, identity geometry and measured group spacing when glyphs collapse. FinalSource/FinalCooked prefixes include the repaired spacing check.
- Four prompt flows per source/archive: Begin→west glyph→stage/cancel→Apply north glyph→modal→pointer fallback→keyboard/Back→original controller-key restore→return. RTS saved custom Blueprint Image/caption/theme agree with the public properties, update after Apply, repaint immediately on theme replacement and fall back behind a modal. Source prefix AppliedPrompt-ReviewSource; final cooked prefix MenuCues-FinalPromptCooked.
- Two RPG world/Ward/center-tint/readout/result/hover/lifetime checks per source/archive; two RTS group/commands/production/result checks; two saved custom Blueprint screen/entry/focus/input checks. Source prefixes MenuCues-WorldSource, MenuCues-RTSSource, MenuCues-CustomSource; cooked WorldCooked, RTSCooked, CustomCooked.
Source glyph/world/RTS logs precede the final menu-only spacing and loading-fixture gap changes; the tested prompt/HUD/core assets are unchanged. The accepted archive contains the final source. Checks use synthetic Slate input and public programmatic settings/theme/remap fixtures. Physical controller/touch/native input/disconnection/drift and audible audio are unverified; the user explicitly deferred controller hardware tests. EnhancedInput SaveSettings does not return a disk-I/O result. No multiplayer readiness is implied for the example backend.
Visual failures found and repaired
The first custom-prompt authoring build failed because the subsystem graph node header was missing and GeneratedClass needed an explicit class pointer; both were repaired before asset creation. Initial controller screenshots accidentally showed pointer presentation: the fixture changed state in the same ticker before Unreal captured the frame. Controller/pointer/keyboard steps now have separate settled frames. Those earlier images are retained and rejected as visual evidence.
Final visual review found AcceptEsc Back running together when CommonActionWidget collapsed an unsupported keyboard icon: spacing belonged to that collapsed icon. The fixed saved trees put group separation on the always-visible Accept label. A real geometry assertion now checks the gap in both keyboard/controller modes. MenuCuesSlice and earlier images remain intermediate; MenuCuesPolishSlice is the accepted archive. Final source/cooked controller and keyboard menu captures were reviewed; glyphs, group spacing and menu labels fit at the tested scales. The cooked RTS custom prompt was also reviewed for square glyph/aligned caption. Three reviewed final images are copied to Evidence/Visual/MenuCues-Cooked-*.
Packaging and preservation
Installed5.6 RunUAT BuildCookRun, both ForgeOutpost/ForgePilgrimage maps, Win64 Development, cook/stage/pak/archive: 23.67s, cook command8.90s,486cooked+7platform-skipped=493total. Exact AutomationToolLog.txt and FinalCopyWin64_UFSFiles.txt are preserved beside MenuCuesPolishSlice/Windows/ForgeExamples/Binaries/Win64/ForgeExamples.exe. Every cooked fixture exits0. The explicit asset label includes WBP_ForgeAppliedPrompt.
Boundary:147approved source files,53own asset packages,2663staging targets,5546reference-package hashes, no violations. All147candidate hashes still match the pre-archive source receipt. All reference HEAD/prior changed-file/UIpackage hashes remain preserved; GameMaster/Sakura Git status unchanged. MassForge retains the four unrelated DiscordBot status additions and their separately observed October12 hashes; its full status does not match October6. Nothing reset, committed or published. Native desktop/reference sessions were not automated. All milestone processes are terminal.
Verification summary (local verification record), source receipt (local verification record), boundary (local verification record), reference report (local verification record). collect_menu_cues.py reproduces the28log checks and receipt comparisons.
Remaining work
Current30-class complete sample revision is verified on5.6 only; earlier28-class newer-engine sample proof predates these changes. Core independently passes the current matrix above. Broad HUD/scene visual polish, coherent themed scrollbars, long/localized labels/remapped names, safe areas/aspects/split-screen, accessibility, audible audio/remap I/O reporting, true world-pause/concurrent/exit timelines, realistic performance and optional serial-safe Mass adapters remain open. A keyboard/brand glyph pack is not supplied. The persistent UI goal remains active.