Skip to content

Themed HUD reading regions — October 12 ​

This is scoped UI progress, not product completion. Inventory remains excluded; Game Master's design stays exclusive. No reference source/assets were copied or modified. Sakura's independently reproduced center-origin cooldown tint/icon/countdown/timing are unchanged.

Product change ​

InterfaceForge Scroll Box (IFScrollBox) inherits UMG ScrollBox and adds automatic local-player theme styling with symmetric weak subscription cleanup. Existing children, navigation, scrolling and focus remain engine behavior. Apply Theme to Scroll Box provides the same styling to ordinary ScrollBoxes without requiring a subclass; that node is one-shot, so the caller owns reapplication. Theme Override / Refresh Appearance provide per-panel customization. The theme's Scroll Bar Thickness defaults to6Slate units, runtime-clamped4–32 with nonfinite fallback. MutedText/Accent/Outline produce normal/hover-drag/track colors. Rounded vector brushes need no copied art or new content packages. Default edge shadows are removed to keep enlarged reading regions clear.

Seven saved own Widget Blueprints adopt the public component: main menu (2scrollboxes), controls1, settings1, pause1, confirmation1, RPG HUD4 and RTS HUD3: 13total. Native fallback dialog also uses it. Existing names/content/slots and navigation/data/action graphs were retained by the own-project conversion; thirty compiled Blueprint classes and actual source/cooked flows verify the converted examples. This helper is internal authoring, not a promised migration utility for arbitrary external projects. Backups are in AssetSnapshots/Before-ScrollTheme; the example generator includes the helper. A full destructive regeneration was not performed.

Blueprint workflow documents palette use, public node names, global/local styling, standard ScrollBox choice and inherited navigation. Installed engine headers/Slate implementation and Epic's current ScrollBox API informed the implementation. ScrollBox remains nonvirtualized; the existing journal uses ListView for large collections.

Failures repaired ​

Build-Example-UE56-ScrollTheme.log failed on deducing auto* from a TObjectPtr panel slot in the authoring helper; explicit Get() repaired it (ScrollThemeTypes). Create-ScrollTheme-UE56.log then crashed after saving main/controls: identically named retired ScrollBox objects collided in the transient package while converting settings. MakeUniqueObjectName repaired the helper; Create-ScrollThemeNames-UE56.log resumes idempotently, skips already converted components and saves the remaining five assets with IF_SCROLL_THEME_EXAMPLES_SAVED. Failed logs/crash remain preserved. Pre-conversion backups were not overwritten. No reference-project conversion occurred.

Builds and Blueprint compilation ​

Final editor Build-Example-UE56-ScrollThemeOverrideReview.log succeeds4.51s. Compile-ScrollTheme-AllBlueprints-UE56.log compiles30classes (29sample +1core controller-data BP),0errors/0warnings/0failed loads. This compilation precedes the final sample-only theme-rebroadcast assertion; shipping UI/core/asset definitions are unchanged by that strengthening.

Fresh independent BuildPlugin -StrictIncludes -NoDeleteHostProject, Win64 Editor Development/Game Development/Shipping:

Actual engineTool wall timeIsolated load
5.6.1 CL4439499647.52s23native types /16unique packages
5.7.4 CL5149498246.18s23native types /16unique packages /17registry entries
5.8.3 CL5821070948.30s23native types /16unique packages

BuildPlugin-UE*-ScrollTheme.log / UE*-ScrollTheme-CoreLoad.json and terminal tool output record success. No native compiler warning/error lines found. Each test host contains InterfaceForge and test-only PythonScriptPlugin; no examples, inventory or MassForge. All63candidate core files match each host. Reflection/headless loading is not newer-engine UI runtime acceptance.

Actual interaction and visual verification ​

28source/final archive verifiers pass,14each, Win64 DX11 offscreen at1280×720/default and800×600/150%UI+text:

  • Four complete menu/settings-preview/cancel/loading/HUD/pause/resume/return flows, with actual synthetic arrow/Accept/Back, modal focus restoration, menu animation/reduced-motion/cursor/device cues and measured layout/gap assertions.
  • Four prompt/theme/scroll flows: controller west→staging/cancel→Apply north→modal→pointer/keyboard→Back→original mapping restored. Actual saved HUD scrollbars resolve owning theme; replacement changes existing colors/thickness; one local override persists across a subsequent global theme broadcast. A temporary40-line text fixture creates measured overflow in the actual reading viewport, then synthetic Slate mouse-wheel input changes its real scroll offset and restores Pointer presentation. The text is removed before return, never saved into the example. Existing remap/custom prompt/body/geometry assertions remain. Prefix ScrollTheme-OverrideSource / ScrollTheme-PromptCooked includes the stronger override-broadcast check; earlier PromptSource is intermediate.
  • Two RPG world/Ward/center-tint/status/result/pointer/lifetime flows, two RTS group/commands/production flows and two saved custom Blueprint screen/entry/input/focus flows. Source FlowSource/WorldSource/RTSSource/CustomSource and cooked FlowCooked/WorldCooked/RTSCooked/CustomCooked prefixes. Those source regressions precede the final sample-only fixture rebroadcast; shipping UI/core/assets are unchanged.

Source enlarged Ward/production and final cooked controller RTS renders were inspected and copied to Evidence/Visual/ScrollTheme-*. Scrollbars are narrower, rounded and theme-colored; opaque engine shadows no longer darken prose. Actual long-text viewport scrolling is verified, not just screenshots. Other translated text/aspect ratios, physical controller/touch/thumb drag, audible audio and native disconnection/drift remain unverified. The user explicitly deferred controller hardware testing. Synthetic input does not certify devices. No multiplayer claim is made for the mock backend.

Final archive and preservation ​

Installed5.6 RunUAT BuildCookRun, both ForgeOutpost/ForgePilgrimage maps, Win64 Development cook/stage/pak/archive: 24.59s, cook8.41s,486cooked+7platform-skipped=493total. Exact AutomationToolLog.txt/FinalCopyWin64_UFSFiles.txt are preserved beside ScrollThemeSlice/Windows/ForgeExamples/Binaries/Win64/ForgeExamples.exe. Every cooked fixture exits0.

Boundary149approved source files/53own packages/2663staging targets/5546reference UIpackage hashes passes. All149pre-archive candidate hashes still match; all63core files match independent hosts. Reference HEAD/prior changed-file/UIpackage hashes preserved. GameMaster/Sakura status unchanged; MassForge retains the four external DiscordBot status additions and their separately observed October12 hashes, so its full status is not unchanged. Nothing reset, committed or published. Native desktop/reference sessions were untouched. All milestone processes terminal.

Summary (local verification record), source receipt (local verification record), boundary (local verification record), references (local verification record). collect_scroll_theme.py reruns the current28scoped log verifiers and receipt comparisons; historical receipts retain their own code/verifier revision scope.

Current30-class full example revision is verified5.6 only; older28-class newer-engine sample proof predates these changes. Core independently passes all three current engines. Broader HUD/scene polish, long/localized labels, responsive/safe-area/split-screen/accessibility, audio/remap I/O reporting, true world-pause/concurrent/exit animations, realistic performance and optional serial-safe Mass integration remain open. The persistent goal stays active.

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

Enlarged documentation image

Enlarged documentation image