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:
- 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,
JumpAnimEventHandlertriggers the physical jump. The setting[Havok] bForceJumpingFromGraph=0indicates that graph-driven jumping is the non-default path. - Liftoff: the controller stores a height (
bhkCharacterControllerfieldjumpHeight, 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. - Rise: integrates full gravity. Time to apex =
v0 / g~ 0.512 s ~ 31 frames. - 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. - 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
AnimationChangeThresholdsFloatHeight
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.