This runbook covers TODOS.phase-72.72.13.2.3: configurable auto-aim assist
with Off, Low, Medium, High, and LockOn strengths, controlled
separately for camera and aim.
Runtime Surface#
Auto-aim assist extends the V2Input accessibility profile model:
- profile:
FV2AutoAimAssistProfile - strength enum:
EV2AutoAimAssistStrength - tuning row:
FV2AutoAimAssistStrengthTuning - resolved assist:
FV2ResolvedAutoAimAssist - source library:
UV2InputBlueprintLibrary - config asset:
UV2InputConfigAsset - UI config:
FV2AccessibilityMotorAssistConfig - persistence snapshot:
FV2PlayerSettingsSnapshot - save game:
UV2SaveGame - persistence subsystem:
UV2PersistenceSubsystem - contract:
V2/ue/Content/V2/Input/Accessibility/AutoAimAssist_V2_Contract.json - focused checker:
V2/ue/Tools/check-v2-auto-aim-assist.py
Behavior#
Profiles default both aim and camera assist to Off. Players can choose
separate strengths for aim and camera. Low, Medium, and High resolve to
bounded magnetism, camera friction, and target-cone tuning. LockOn is a
distinct opt-in strength with an explicit lock-on cone and resolved lock-on
flags for aim and camera independently.
Validation#
The tuning table must contain exactly the supported strength family: Off,
Low, Medium, High, and LockOn. The Off tuning has no magnetism, camera
friction, target cone, or lock-on. Enabled strengths must have positive aim,
camera, and cone values. Only the LockOn strength may enable lock-on.
Persistence#
FV2PlayerSettingsSnapshot stores AutoAimAssistProfile with startup flags.
UV2SaveGame::SaveAutoAimAssistProfile persists a validated profile per player,
GetStartupAutoAimAssistProfile resolves it on startup, and
MarkAutoAimAssistAppliedOnStartup records the before-gameplay apply time.
ValidateSave rejects profiles whose account id does not match the save header.
Verification#
Run these checks after changing auto-aim assist:
python3 V2/ue/Tools/check-v2-auto-aim-assist.py
python3 V2/ue/Tools/check-v2-input-module.py
python3 V2/ue/Tools/check-v2-profile-save-game.py
python3 V2/ue/Tools/check-v2-persistence-module.py
python3 V2/ue/Tools/check-v2-accessibility-feature-set.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-auto-aim-assist.py V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/Input/Accessibility/AutoAimAssist_V2_Contract.json
Automation coverage:
V2.Input.ModuleV2.Persistence.ModuleV2.Persistence.ProfileSave.AssetContractV2.UI.Module
Horde Gates#
auto-aim-sourceauto-aim-strength-tuningsauto-aim-separate-camera-aimauto-aim-lock-onauto-aim-per-player-persistenceauto-aim-startup-applyauto-aim-ci-wired