This runbook covers TODOS.phase-72.72.13.1.12: reduced motion mode for motion
sensitivity, including disabled screen shake, reduced particle effects, and
slower camera transitions.
Runtime Surface#
The reduced motion mode profile lives in V2UI:
- C++ header:
V2/ue/Source/V2UI/Public/V2ReducedMotionMode.h - C++ source:
V2/ue/Source/V2UI/Private/V2ReducedMotionMode.cpp - automation spec:
V2/ue/Source/V2Tests/Private/UI/ReducedMotionMode.spec.cpp - contract:
V2/ue/Content/V2/UI/Accessibility/ReducedMotionMode_V2_Contract.json - focused checker:
V2/ue/Tools/check-v2-reduced-motion-mode.py
FV2ReducedMotionMode::BuildDefaultProfile returns
Accessibility.ReducedMotionMode.V2 for the
Settings.Accessibility.ReducedMotion settings row.
Mode Policy#
The mode uses FV2UIAccessibilitySettings::bReducedMotion as the source of
truth. When enabled, FV2ReducedMotionModeProfile::ResolveState returns a state
that:
- disables screen shake;
- reduces particle effects to 50 percent or lower;
- slows camera transitions with a longer duration multiplier and lower speed scale;
- suppresses looping HUD motion;
- suppresses hard cinematic camera cuts;
- remains deterministic and frame-data inert through
doesNotAlterFrameData.
When disabled, the resolved state preserves authored motion: screen shake stays enabled, particle intensity stays at 1.0, and camera transition speed and duration stay at authored values.
Settings Surface#
The default Settings Accessibility section exposes Reduced motion as a toggle
with this description: "Disable screen shake, reduce particle effects, and slow
camera transitions."
UV2UISubsystem::SetReducedMotionModeEnabled updates the shared accessibility
setting, broadcasts OnAccessibilitySettingsChanged, and refreshes HUD slots so
HUD presentation and broader reduced-motion state remain synchronized.
Verification#
Run these checks after changing reduced motion mode behavior:
python3 V2/ue/Tools/check-v2-reduced-motion-mode.py
python3 V2/ue/Tools/check-v2-hud-accessibility-presentation.py
python3 V2/ue/Tools/check-v2-settings-ui.py
python3 V2/ue/Tools/check-v2-ui-module.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 V2/tools/validate-v2-docs.py
python3 -m py_compile V2/ue/Tools/check-v2-reduced-motion-mode.py V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/UI/Accessibility/ReducedMotionMode_V2_Contract.json
Automation test name: V2.UI.Accessibility.ReducedMotionMode.AssetContract.
Horde Gates#
reduced-motion-mode-sourcereduced-motion-mode-screen-shakereduced-motion-mode-particlesreduced-motion-mode-camera-transitionsreduced-motion-mode-settingsreduced-motion-mode-automationreduced-motion-mode-ci-wired