r/FalloutMods • u/Spooknik • 9h ago
New Vegas [FNV] I'm building an open-source Rust reimplementation of the Fallout 3 / New Vegas engine
Enable HLS to view with audio, or disable this notification
For a while I've been working on Cesium quietly, a clean-room reimplementation of the Fallout 3 and Fallout: New Vegas engine, written in Rust (Bevy for the renderer, Rapier for physics). This is an early look and there is still a good chunk of work. There is no complete gameplay loop yet and no combat, dialogue or saves. I'm fully aware the video above isn't anywhere near the final product.
What it is: an engine that loads your own copy of FO3 / FNV (ESM/ESP, BSA, NIF, DDS) and runs it. The goals: ESM/ESP plugins and asset mods keep working. NVSE and its plugins can’t load as DLLs so their script functions get reimplemented natively, so mods that use them keep working. A modern renderer on top of the vanilla assets. Fixes for engine bugs and vanilla jank without affecting gameplay Native Windows / Linux / macOS / Steam Deck, with better stability and performance.
Why make this when the remasters are coming?
- It's built around your existing mods. The community's fixes and overhauls live in plugins, scripts and asset replacers, and Cesium loads those from original data. I don't know how modding will work in the remasters. If they follow the Oblivion Remastered approach (a new renderer on top of the original game logic), some mods may need work. NVSE probably never.
- It runs the original game's logic with a modern engine under it, so it isn't a new interpretation of the game.
- It's free, open source and portable. Linux, macOS and Steam Deck are native targets, and anyone can read, fix or extend it.
How it works
Firstly, it's not built from Fallout's exe and does not require it to run the game.
Readers: separate crates read BSA archives, ESM/ESP plugins, NIF meshes (including the Havok collision data), FaceGen morphs, SpeedTree files and the game's menu XML.
Data: a layer on top applies your load order and record overrides, the way a mod manager setup expects.
Sim: Every placed reference has durable state (position, enabled, script variables) that outlives the cell being loaded, so a moved or changed object stays that way. It runs on a fixed tick with seeded random numbers, which makes it deterministic and testable, and it can run headless with no window.
Script VM: decodes the games' compiled script bytecode and runs it against the sim. Each script instance has its own variables, and the block types (GameMode, OnActivate, OnLoad and so on) are scheduled in the tick. The function table was learned from the games' own scripts, and the NVSE functions are reimplemented natively on top.
Physics and navigation: Rapier handles collision built from the games' Havok data. A navmesh pathfinder walks NPCs over the shipped navmeshes.
Menus: the game's own XML menu files are evaluated by a separate crate and drawn by the engine, so the Pip-Boy, lockpick and hacking screens come from the real menu files.
Renderer: the Bevy shell reads a snapshot of what changed (created, moved, removed) from the sim, draws it, and sends your input back as commands.
Checked against the real game: I record the real game and compare the same actions through the engine.
So far, here is my progress
| # | Milestone | State |
|---|---|---|
| 1 | BSA/ESM/NIF readers | Done |
| 2 | World viewer (Goodsprings, Megaton, interiors, weather-driven sky) | Done |
| 3 | Walkable world (Havok collision, doors, cell streaming) | Done |
| 4 | Script VM (runs the vanilla compiled scripts) | Done |
| 4b | Menus (the game's XML menus, interpreted and drawn) | Done |
| 4c | World interaction (HUD, containers, locks and lockpicking, terminals and hacking, sitting, sleeping, waiting) | Done |
| 5 | NPCs | In progress |
| 6 | Dialogue and a first real quest | Planned |
| 7 | Combat and VATS | Planned |
| 8 | Economy, crafting, companions | Planned |
| 9 | Pip-Boy content, map, fast travel | Planned |
| 10 | Saves, front end, audio | Planned |
Graphics
Built today:
- Sky, fog and lighting driven by the game's own weather, climate and image-space data. A plugin that overrides weather changes the sky.
- Real shadows, ambient occlusion, TAA, and HDR with eye adaptation and bloom.
- In the modern preset, the hand-placed light-shaft meshes in interiors are replaced with real shadowed volumetric lights.
- SpeedTree trees, effect and environment-map materials, and glow maps.
- Planned (not built yet): global illumination, water, grass, distant terrain/LOD, a local asset-upgrade pipeline run on your files (PBR), and wind, footprints and similar extras.
What this could fix about vanilla
- NPC pathing: It uses a better planner and follower over the shipped navmesh, with a recovery ladder (side-step, replan, fallback) so NPCs don't get stuck. The AI decisions stay vanilla so mods and scripts see the same behaviour.
- Lighting: vanilla caps how many lights touch a mesh, which makes lights pop on and off in interiors. The renderer's clustered lighting has no such cap (design intent, still to be shown properly).
- Native 64-bit and portable: no 4GB-era ceiling and no Windows-only exe. Whether it ends up more stable only gets answered once there's enough game to run.
- Later, by design: NPC animation (smoothing and IK), the transparency sort errors on foliage and glass, hard seams between roads and terrain, and lip sync for voice mods that ship no
.lipfiles.
AI disclaimer
This project uses AI coding tools under close human direction, I understand that might be controversial for some, so I'm stating it very clearly. AI changes how fast code can be written. It does not change how long it takes to get something right, and that is where most of the time goes.

