Skip to content

Movement & Jump Physics

Fallout 4 movement data is spread across four sources with different levels of visibility:

Source What lives there
GMST records (ESM) Jump height, fall-damage curve, encumbrance factors
INI settings Fall gravity multiplier, behavior toggles (engine defaults are hardcoded in Fallout4.exe; only overrides appear in .ini files)
MOVT records (ESM) Per-state ground speeds and rotation rates
Havok character controller (code) The state machine, gravity integration, liftoff formula

GMSTs that Bethesda never overrode do not exist as ESM records because the engine has hardcoded defaults. Absence from the ESM therefore does not prove a setting does not exist.


Units

  • 1 Bethesda unit = 0.0142875 m (Havok world scale: 69.99 units/m)
  • Real gravity: 9.8 m/s^2 = 685.9 Bethesda units/s^2

Jump Physics

The jump arc is a result of a plain piecewise ballistics driven by a Havok character state machine (hknpCharacterStateType: OnGround -> Jumping -> InAir), with three parameters:

Parameter Source Default
Jump apex height h GMST fJumpHeightMin 90 units (~1.29 m)
Rise gravity Havok world gravity 9.8 m/s^2 (full gravity; the rise is not floaty)
Fall gravity multiplier INI
[Havok] fInAirFallingCharGravityMult
1.85

The sequence for a jump:

  1. Anticipation (~5 frames at 60 fps): jump input triggers the behavior graph to play the jump-start animation; the capsule does not move. At an animation event, JumpAnimEventHandler triggers the physical jump. The setting [Havok] bForceJumpingFromGraph=0 indicates that graph-driven jumping is the non-default path.
  2. Liftoff: the controller stores a height (bhkCharacterController field jumpHeight, offset 0x324 in CommonLibF4); the Jumping state converts it: v0 = sqrt(2 * g * h) = sqrt(2 * 685.9 * 90) ~ 351.4 units/s (~5.02 m/s). Holds one extra frame, then transitions to InAir.
  3. Rise: integrates full gravity. Time to apex = v0 / g ~ 0.512 s ~ 31 frames.
  4. Fall (vertical velocity <= 0): gravity * 1.85 ~ 1269 units/s^2. Apex to ground from 90 units ~ 0.377 s ~ 23 frames. The 1.85x multiplier engages at zero vertical velocity, so no kink is visible. No terminal-velocity clamp has been found.
  5. Landing: fall damage is a separate system, all GMSTs: fJumpFallHeightMin = 600 (units of fall before damage counts; NPC: 450), fJumpFallHeightMult = 0.1, fJumpFallHeightExponent = 1.45 (NPC: 1.65), fJumpFallVelocityMin = 700. Unused settings (statically unreferenced in the exe): fJumpDoubleMult, fJumpFallRiderMult, fJumpFallSkill*.

Per-race jump tuning does not exist: xEdit's FO4 RACE DATA has no jump/gravity fields, and RACE carries only AccelerationRate/DecelerationRate (1.0/1.0 for HumanRace) plus angular rates. Jump height is global.


Camera FOV

Base FOV is INI: [Display] fDefaultWorldFOV=70 (the world viewport) and fDefault1stPersonFOV=80 (the viewmodel-arms overlay). The value uses Bethesda's horizontal-at-16:9 convention (Hor+ scaling); to convert to vertical FOV: vertical = 2 * atan(tan(horizontal / 2) * 9 / 16), so 70 -> 43.0 deg vertical.

The sprint FOV widening is not data-driven. The engine ramps PlayerCamera::fovAdjustCurrent toward a hardcoded additive target while the behavior graph's CameraSprint node is active. The magnitude and ramp rate were never published and are hardcoded in the binary.


Movement Speeds

MOVT (Movement Type) Records

Ground speeds are stored in MOVT records, one per locomotion context (default, weapon drawn per-class, sneaking, power armor, etc.), selected via the race's MovementTypeNames list (WALK/RUN1/SNEK/BLDO/SWIM) and keyword overrides. Each MOVT stores:

  • Speeds: {Left, Right, Forward, Back} x {Standing, Walk, Run, Sprint} in units/s
  • Rotation rates: {Pitch, Roll, Yaw} in deg/s
  • AnimationChangeThresholds
  • FloatHeight

Player Movement Values (Fallout4.esm)

MOVT Walk Run Sprint (fwd only) Yaw (run/sprint)
Player_Default_MT (0A02B9) 92.55 372.98 500.0 180 / 90 deg/s
NPC_Default_MT ~80 370 (back 260) 500.0 --
PowerArmor_Player_Default_MT 112.48 311.66 497.06 --

In metric: player walk is 1.32 m/s (the toggle-walk crawl), run is 5.33 m/s (the default movement), and sprint is 7.14 m/s. Sprint is forward-only; the other sprint directions are 0.

Speed Modifiers (GMSTs)

A modifier chain applied on top of MOVT base values:

GMST Value Purpose
fMoveCharWalkBase 100 Base walk multiplier
fMoveEncumEffect 0.3 Encumbrance slowdown factor
fMoveEncumEffectNoWeapon 0.15 Encumbrance slowdown (unarmed)
fMoveWeightFactorSpeedPercentageMin 0.6 Minimum speed at max encumbrance
fMoveFlyRunMult 35 Flight speed multiplier

The race's AccelerationRate / DecelerationRate (1.0 = dimensionless ramp multipliers for HumanRace) control how quickly the character ramps to top speed.