Skip to content

Author screen motion in Blueprint ​

Open WBP_WatchpostSurvey and select SurveyArrive in its Animations panel. This is an ordinary editable UMG timeline, not a plugin-owned animation format. It animates SurveySurface → Render Opacity from0.35 at0s, through0.86 at0.12s, to1 at0.24s. The short reveal introduces the contextual card without delaying navigation or action execution. The full-screen scrim and gameplay data are separate from that animated surface. Game Master's animations/design are not included.

The same screen also contains SurveyHeadingArrive, targeting SurveyHeading → Render Opacity:0.82 at0s,0.94 at0.16s,1 at0.32s. This subtle independent reveal demonstrates two editable timelines with one accessibility/lifecycle policy. Their different durations are intentional. Both targets have a normal opacity baseline of1; their playback does not gate input or mutate gameplay data.

In the playable example, Begin expedition → Pause → Field journal → Watchpost survey uses this saved Blueprint. Observe ridge remains the real local adapter action; no explanatory labels were added to the interface. Duplicate the screen and change the timeline keys/target or choose your own animation variable in its graph. Select the copied class on Push Screen. No InterfaceForge source edits are needed.

Actual graph ​

  1. Event On Activated → Stop Animation (SurveyArrive) → Set Render Opacity (SurveySurface,1) → Stop Animation(SurveyHeadingArrive) → Set Render Opacity(SurveyHeading,1) → Branch (ReduceSurveyMotion). False → Play Animation(SurveyArrive) → Play Animation(SurveyHeadingArrive). Each uses Start At Time0, Num Loops To Play1, Forward, Playback Speed1, Restore State true. Ordinary execution pins start both in the same frame; they do not wait for completion. True leaves both targets fully visible.
  2. Event On Preferences Updated → Break FIFUIPreferences → set ReduceSurveyMotion from Reduced Motion. Branch on that value. True → stop/reset both named animations/targets using the same pairs. False does not replay an already visible screen. This event supplies the presented preferences, including initial settings and reversible live previews.
  3. Event On Deactivated → stop/reset both pairs → the existing Release Entry on SurveyRecord. The entry unbinds its data immediately. Do not wait for decoration to finish before allowing Back. Stop the animations you own, preserving unrelated child behavior.
flowchart LR
    A[On Activated] --> S[Stop own animation / opacity 1]
    S --> R{Reduced Motion?}
    R -->|No| P[Play SurveyArrive then SurveyHeadingArrive / both Restore State]
    R -->|Yes| V[Visible without motion]
    C[Presented preferences change] -->|Reduced Motion enabled| S
    D[On Deactivated] --> E[Stop / reset / Release Entry]

Why Restore State matters ​

The visible baseline is1 before playback. This animation's final state is also1. Restore State ensures an interrupted timeline returns to that baseline after the engine finishes its queued sequence update. Installed UE5.6 FWidgetAnimationState::Stop resets its playback cursor to zero and queues evaluation before stopping; without restoration, a same-graph Set Render Opacity can be overwritten by that zero-frame update, leaving the card dimmed. The actual runtime test exposed and repaired this issue.

The public engine Play Animation API supplies Restore State; use the setting appropriate to your own final state. The linked API reference is5.5; this recipe's exact behavior and node pins were inspected and tested in installed5.6.1. An animation intentionally ending in a different retained state needs its own completion/reset policy. This recipe does not claim that every timeline can use the survey's settings unchanged.

When gameplay is paused ​

Keep menu motion on normal UMG Play Animation, with the widget's Tick Frequency=Auto. Do not drive decorative UI with a gameplay timer or manually call Native Tick. Your gameplay adapter owns Set Game Paused and resume policy; InterfaceForge does not impose global world pause on multiplayer or other games. The small playable adapters pause their own demonstration state. A separate runtime fixture pauses the actual Unreal world and operates this same saved screen.

Expected: both timelines advance while world time is frozen; live Reduced Motion stops both at opacity1, Observe ridge remains usable, Back releases the model immediately, and reopening begins a fresh pair. Restore State and explicit resets prevent queued engine evaluations from leaving an old fade on a reopened screen. A gameplay-owned cooldown may intentionally use game time and stop during pause, independently of menu presentation.

Customization and lifecycle ​

Keep decorative motion independent of your gameplay adapter and stable model. CommonUI still owns screen activation, stacks, focus and Back. Its root Designer transition presets are documented in Blueprint customization. UMG timelines can complement those presets without replacing action routing.

Animate a heading, accent or image instead of the entire surface if that suits your layout. Keep opacity baseline/reset explicit. Avoid a delayed cleanup callback that might affect a later pooled activation. Stop only the animation you own; unrelated child animations have their own lifecycle. For an entry's own animation, start/update it through On Entry Initialized / On Entry Refreshed and stop/release through On Entry Released, since recycling does not require Destruct.

Reduced Motion should suppress nonessential motion and leave all controls readable and usable. The survey uses the real On Preferences Updated event rather than an independent preference variable or per-frame settings poll. It does not replay motion when the setting is disabled on an existing screen.

Verification and limits ​

Current paused/concurrent evidence records source/exact packaged checks on5.6.1/5.7.4/5.8.3. The fixture freezes actual world time, observes both timeline times and changing independent opacities, enables Reduced Motion during playback, uses synthetic Slate actions/Back, reopens the screen, waits for both natural completions, and removes the root during playback. Capture readback can stall rendering, so completion is based on UMG's playback state rather than a fixed wall-clock guess. Earlier animation evidence preserves the original renderer/queued-stop repairs and their narrower revision.

Current evidence is Win64 DX11 with synthetic Slate input and programmatic preference/root/pause setup. Two named timelines on independent targets are tested; arbitrary concurrent timelines, custom exit choreography, physical controllers/touch, other platforms and complete product visual polish remain separate gates. The original sample scene remains a development scene.

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

Enlarged documentation image

Enlarged documentation image