- C# 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Game world - scenes/game.tscn + Game/GameWorld.cs: one runtime with interior<->exterior doors, background exterior streaming (ExteriorStreamer), template NPCs (TPLT/LVLN via ActorResolver). Test flags: --start=, --doortest=N, --swimtest, --rt=, --upscale=, --presskey=, --screenshot=. - .kf animation (B-spline/Euler/static tracks), NPC idle + walk. - Full Havok parse: rigid bodies, surface materials, layers, constraints as Jolt joints, dynamic clutter; terrain heightfield collision. Distant LOD - Terrain/object LOD rings plus tree billboards (.dtl + treetypes.lst); a global per-cell coverage map picks which layer draws. Water - WATR/XCLW/PWAT decoding, cell and placeable water volumes, water shader, swimming, underwater fog and Havok-material buoyancy. - NIF tangent arrays are stored swapped; fixed, and missing tangents are derived from UVs. Lighting - SDFGI outdoors (GiRefresher re-voxelizes streamed cells); renderer moved to Vulkan (Godot's D3D12 driver has no ray tracing). - Hardware ray tracing (src/Rendering): hybrid GI + reflections and a path tracer, with normal maps, emission, stochastic lamp shadows, terrain splat blending, foliage handling, physical calibration with auto exposure and traced water reflections. F8/L cycles the modes. Upscaling - FSR 1 / FSR 2 presets (F9/U, saved to user://settings.cfg), mip bias per AMD's guidance; the path tracer ignores FSR 2's camera jitter; the traced water reflection texture survives resolution changes. Details in docs/ARCHITECTURE.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| .claude | ||
| docs | ||
| scenes | ||
| src | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| Fallout 3 remastered.csproj | ||
| Fallout 3 remastered.sln | ||
| icon.svg | ||
| icon.svg.import | ||
| project.godot | ||
| README.md | ||
Fallout 3 Remastered (Godot)
An open-source reimplementation of Fallout 3 in Godot 4.8 (C#), in the spirit of what Oblivion Remastered did commercially and what OpenMW did for Morrowind: a modern engine that loads the game's original data files at runtime.
You must own Fallout 3. This repository contains no Bethesda assets — no meshes, textures, audio, or plugin data. Everything is read from your own installation's
Datafolder at runtime. Do not commit game files to this repo.
How it works
Oblivion Remastered keeps the original Gamebryo engine for game logic and uses Unreal 5 purely as a renderer. Without Bethesda's engine source that pairing isn't possible, so this project takes the OpenMW route instead: reimplement the engine in Godot and treat the original data files as the content pipeline.
Fallout 3's data lives in well-documented formats:
| Format | Contents | Status |
|---|---|---|
.esm / .esp |
All game records: cells, worldspaces, NPCs, weapons, quests, scripts… | ✅ cells, placed refs, placeable base objects, worldspaces, and terrain heightmaps decoded (EsmStore); more record types as needed |
.bsa (v104) |
Packed meshes, textures, sounds, voices | ✅ full reader with zlib decompression (BsaArchive, GameFileSystem) |
.nif (Gamebryo 20.2.0.7) |
3D models | ✅ static meshes: NifDocument parser + NifConverter → ArrayMesh (skinning/animation TODO) |
.dds |
Textures | ✅ runtime load incl. normal-map green-channel flip (TextureCache) |
.kf |
Animations | ⬜ later |
.xwm / .ogg / .wav |
Audio | ⬜ later |
Format references: fopdoc (FO3/FNV records), UESP BSA docs, and NifSkope/nif.xml (NIF block layout).
Running it
- Open the project in Godot 4.8 (.NET edition; currently 4.8-dev7) with the .NET 10 SDK installed.
- Build the C# solution (Godot does this on first run), then press F5.
- The boot scene auto-detects Fallout 3 (Steam/GOG/Epic paths, or the
FO3_DATAenvironment variable). If it can't find it, pick yourDatafolder in the dialog — the choice is remembered inuser://fo3_data_path.txt. - You should see a discovery report: plugins, archives, indexed file counts, a
sample NIF extraction, and a record inventory of
Fallout3.esm. - Click Open Model Viewer to browse and render any mesh in the game's archives (orbit: LMB drag, zoom: wheel, pan: MMB/RMB drag).
- Click Open Cell Viewer, pick an interior (try
Vault101aorMegatonCommonHouse), and fly through it: hold RMB to look around, WASD to move, Q/E down/up, Shift for speed. Press Tab to drop in and walk (WASD, Space to jump, Shift to run, Esc to go back to flying). Look at a door and press E to travel to the connected cell. - Click Open Worldspace Viewer to fly over real Capital Wasteland terrain (hold RMB to look, WASD + Q/E, Shift for speed) — no placed objects or textures yet, just the heightmap.
Roadmap
See docs/ARCHITECTURE.md for the full plan. Short version:
- ✅ Data discovery & container formats.
- ✅ NIF → Godot mesh + DDS textures: render any static model from the game.
- ✅ Cell loading:
CELL/REFRrecords instanced with placed lights and cell ambient/fog — fly through Vault 101. 3.5. ✅ Collision & walking: Havokbhk*shapes → Jolt physics, first-person character controller — press Tab in the cell viewer to walk. 3.6. ✅ Doors & cell transitions: look at a door and press E to travel through the vault, Megaton, or any connected interiors. 3.7. ✅ Rendering overhaul: census-driven material fixes (specular, env mapping, billboards), screen-space GI, and FO3-matched interior lighting. - ✅ Worldspace terrain:
WRLD/LANDheightmaps render real Capital Wasteland terrain (verified against Megaton's actual coordinates), with blended ground textures, placed objects/trees, and streaming. Still needed: distant LOD. - Gameplay systems: actors, dialogue, quests, scripting, combat, VATS — the long tail.
Legal
This is a clean-room engine reimplementation for interoperability with data files the user already owns, the same model as OpenMW, OpenXcom, or GZDoom. "Fallout" is a trademark of Bethesda Softworks/ZeniMax; this project is not affiliated with or endorsed by them.