A FOSE plugin for Fallout 3 that reworks how the player moves, aims and looks. In third person the legs, body and camera move naturally. Shots go where the crosshair points. First person gets weapon inertia like modern games.
Everything is done in the engine at runtime: no custom skeleton, no animation replacers, no ESP and no scripts. Every feature can be switched off or tuned in FLOW.ini.
- Natural movement: your body faces the direction you're moving. Turning while moving makes you lean into turns and your body lags behind slightly to give a natural feeling to movement. With a weapon drawn, turning around while still only turns your torso, until you turn far enough at which your legs also turn.
- Vertical smoothness: the camera follows your height with a smooth delay, so on a jump you rise and drop ahead of it.
- Free look (weapon holstered): camera can be moved around freely, and your character moves his head to look at what you're aiming at. Camera now naturally orbits the player instead of orbiting the crosshair as in the vanilla game, finally fixing vanity camera.
- Acceleration: movement easing. Starting and stopping is smooth.
- No clunky movement: landing hard no longer locks you into a stumble animation. You're free to land and instantly move.
- Shoulder swap you can now swap shoulder for the camera in third person on a key (X by default).
- Gun sway system: this mod features a sway system for your first person viewmodels. Looking around moves the weapon like it actually weighs something, moving bobs the weapon using the same sway system, and jumping/landing dips the weapon to give a sense of weight. Automatic weapons fire through the same system too: every shot kicks the gun back and it glides forward in time for the next one, swaying side to side in rapid fire, while flame weapons slide back and hold. All of these combined using the same system make gunplay feel much more fluid than the base game.
- Dynamic crosshair: the game's own crosshair, split in two, opens up to show your gun's actual spread. The spread includes weapon accuracy, condition, skill, crippled limbs, aiming, crouching, moving and perks. Drawing a gun opens it out to your spread and fades in the centre dot; holstering closes it again. Every shot pulls it in toward the centre and back out to give a responsive feel.
- Shots follow the crosshair: now bullets actually hit what you're aiming at, New Vegas style. In the vanilla game bullets originated from the barrel of your gun, which resulted in bullets hitting walls, objects etc in front of your gun while your crosshair was clearly on a mutants head.
- POV: manupulating your POV is now smoother than ever.
Every patch site is checked byte for byte before anything is written. On a mismatch, FLOW logs the reason and leaves that feature vanilla.
- Fallout 3 / GOTY, patched to 1.7.0.3 without GFWL by the Fallout Anniversary Patcher
- FOSE 1.2 beta 2 or newer
- Recommended with TEMPO for high framerates. FLOW's smoothing is framerate-independent on its own.
Copy FLOW.dll and FLOW.ini into Data\FOSE\Plugins. Settings take effect the next time the game starts. bDebug=1 in [Debug] writes a detailed FLOW.log next to the DLL.
src/main.cpp the FOSE plugin (single file)
FLOW.ini default configuration, every setting documented
build.ps1 builds FLOW.dll and installs it into ..\Data\FOSE\Plugins
tools/package.py builds the release zips into dist/
README.txt player readme shipped in the release zip
nexus_description.txt Nexus page text (BBCode)
nexus_summary.txt Nexus brief overview and short description
build.ps1 expects this folder to sit inside the Fallout 3 install folder (Fallout 3 goty\FLOW\). It installs into ..\Data, and it never overwrites an existing FLOW.ini.
- Compiler: llvm-mingw, 32-bit target. For example:
winget install MartinStorsjo.LLVM-MinGW.UCRT - Build:
.\build.ps1 # build FLOW.dll and install it into Data\FOSE\Plugins
.\build.ps1 -NoInstall # build onlyAddresses are for Fallout3.exe 1.7.0.3.
- Bones:
NiAVObject::UpdateWorldData(vtable slot0xB8) is replaced in the NiNode vtable. Right after the engine computes the player's bone world transforms (after the animation, every frame), FLOW turns the pelvis, spine, head and the whole body. Nothing overwrites these changes, so no custom skeleton is needed. - Movement: the player's movement flags (
PlayerMover::SetMovementFlags, vtable+0x0C) pick the animation. The root-motion vector call at0x007E89EDandActor::Move(PlayerCharacter vtable+0x250) carry strafe-as-run, controller 360° movement and acceleration. - Landing: the player's landing animation (JumpLand and its directions) is started and its animation slot is ended at once with the game's own slot reset (
0x0045DB50). The game then starts the movement it had queued for after the landing. - Camera: the third person camera's final
NiAVObject::Updatecall (0x0077E538) is redirected for the vertical lag, the shoulder swap, the vanity orbit fix and the view switch glide. During a switch (player+0x5A8third person now,+0x5AAwanted) the game's camera distance (0x0107BA18) is set or held so FLOW can glide between the eyes and the third person spot. Wheel zoom: the camera's two reads of the zoom (0x0107BDBC, at0x0077DD9Band0x0077DE15) are pointed at a smoothed copy. The view key's twoSetFirstPersoncalls (0x0078A4BEon press,0x0078A5AAon release) are hooked so a tap mid-glide reverses it. - Crosshair: drawn in a Direct3D 9 overlay (
IDirect3D9::CreateDevice→ device and swap chainPresent/Reset). The vanilla HUD crosshair is hidden while it shows; with no gun drawn, FLOW's closed crosshair follows the HUD mode's crosshair bit (HUDMainMenu+0x18C&0x40, already masked by the player's crosshair setting). The spread comes from the same weapon data and settings the game uses for its cone and wobble. Reloads are read from the weapon slot of the player's animation data, and the reload jam roll (0x00491770, called at0x00720179) is hooked so the crosshair knows whether a jam follows. - Shots: the call to
Projectile::Createat0x004BF017is redirected, and the player's shots get their start point and angles from the crosshair line. - First person: the arms are turned about the head after the first person skeleton (
PlayerCharacter+0x5F0) updates. Jump and walk/run animations on that skeleton are skipped inAnimData::PlayAnimGroup(0x00461690). The character controller's state drives the jump dip, and the ground speed drives the step bob. The walk animations' footstep text keys (Enum: Left/Right) are replaced by direct calls to the footstep function (0x006C53A0). The pitch shift comes fromfFirstPersonHandFollowMult(vanilla 0.85), which FLOW holds at 1.
FLOW was developed with Claude (Anthropic), which did the reverse engineering, wrote the plugin and wrote the documentation. Henry Carlsson directed the project and tested every feature in-game. On Nexus Mods it carries the AI-Generated Content tag, as the Nexus guidelines require.
- The FOSE team, for the Fallout Script Extender
- lStewieAl, for the Fallout Anniversary Patcher
- Drarack's Diagonal Movement, which inspired the leg turning
0 comments
log in to comment.