Open-source round-based survival FPS for Unreal Engine 5.
Hold the rooms. Spend points on steel. Restore power. The rounds do not stop.
This is a C++ project. Greybox maps spawn at runtime — you can open it, compile, and play without any .uasset art. Nanite and Lumen are turned on in the project so the second you drop high-poly meshes in, they render the way UE5 is meant to.
Playable prototype (browser): the original Three.js version still runs in the Grok preview. This repo is the Unreal port you can clone onto your machine.
Mac agent (download / compile / fix): paste docs/AGENT_PROMPT.md into Hermes (or any local agent on the M5 Max). It installs UE 5.8, builds, and fixes invisible zombies, Site 13 walls, power interact, and >60 fps.
Repository: https://github.com/hectorTSH/nightfall
| System | Status |
|---|---|
| First-person movement, look, sprint, ADS, jump | Done |
| Six weapons (sidearm, SMG, shotgun, rifle, LMG, HELIX) | Done |
| Wall buys (buy + ammo refill at half price) | Done |
| Five perks (Iron Veins, Quick Hands, Twin Fire, Marathon, Field Medic) | Done |
| Power switch, mystery crate, Helix bench (Pack-a-Punch) | Done |
| Point doors, window barricades, round loop | Done |
| Three maps: Frostmere, Omega Anlage, Site 13 | Greybox, C++ spawned |
| Listen-server replication stubs (up to 4 players) | Stubbed, see docs/MULTIPLAYER.md |
| Nanite + Lumen + Virtual Shadow Maps + TSR | Enabled in Config/DefaultEngine.ini |
| High-poly art / animations / audio | Not shipped — bring your own, or use Quixel |
Gameplay numbers match the browser prototype. Full list: docs/GAMEPLAY.md.
- Unreal Engine 5.5 or newer (5.8 is current). Install from the Epic Games Launcher. If the editor asks to retarget, let it.
- Windows: Visual Studio 2022 with the Game development with C++ workload, Windows 10/11 SDK, and .NET desktop build tools.
- macOS (Apple Silicon, including M4): Xcode with command-line tools. UE 5.5+ is native on Apple Silicon. Packaging a Windows
.exefrom a Mac is not supported — use a Windows box or a cloud builder for a Windows ship.
You do not need to download Unreal Engine source from GitHub unless you want engine modifications. The binary editor from Epic is enough.
Unreal Engine itself is not MIT. You accept Epic's EULA when you install it. Nightfall's own code in this repo is MIT — see LICENSE.
git clone https://github.com/hectorTSH/nightfall.git
cd nightfallWindows
- Right-click
Nightfall.uproject→ Generate Visual Studio project files. - Open
Nightfall.slnand build Development Editor | Win64. - Double-click
Nightfall.uproject, or press F5 from Visual Studio. - In the editor: File → New Level → Empty Open World (no landscape). Save it as
Content/Maps/Play. - Project Settings → Maps & Modes → set Editor Startup Map and Game Default Map to
Play. - Click Play. You spawn on Frostmere.
macOS
- Double-click
Nightfall.uproject. Unreal generates Xcode files and compiles the editor target. - Same empty-level step as above, then Play.
Switch maps from the console (~):
open 127.0.0.1?map=omega
open 127.0.0.1?map=site13
open 127.0.0.1?map=frostmere
Or pass ?map=omega as a URL option when hosting.
| Action | Keyboard | Gamepad |
|---|---|---|
| Move | WASD | Left stick |
| Look | Mouse | Right stick |
| Jump | Space | A |
| Fire | LMB | RT |
| Aim | RMB | LT |
| Reload | R | X |
| Interact / hold-repair | F | B |
| Sprint | Left Shift | L3 |
| Melee | V | Y |
| Swap weapon | Scroll | D-pad left/right |
| Pause | Esc | Menu |
Nanite is a virtualized micropolygon system. It shines on film-quality static meshes (photogrammetry, Quixel Megascans, ZBrush sculpts), not on the 12-triangle engine cubes this greybox uses.
What this project does:
- Turns Nanite, Lumen GI, Lumen reflections, Virtual Shadow Maps, and TSR on in
Config/DefaultEngine.ini. - Builds maps with
UStaticMeshComponent/UHierarchicalInstancedStaticMeshComponentso replacing a cube with a Nanite mesh is a material/mesh swap, not a rewrite. - Leaves
Content/empty on purpose. Drop.fbx/ Quixel assets there, enable Nanite on the static mesh, and assign them inANightfallMapBuilder(or convert the builder to data assets).
You will not see "Nanite graphics" on first Play. You will see a correct, Lumen-lit greybox that is ready for them.
- License of this repo: MIT. Fork it, ship it, sell it (Epic's royalty terms still apply to the Unreal runtime once you pass their revenue threshold).
- Contributions: see CONTRIBUTING.md. Issues and PRs welcome.
- Not included: Unreal Engine, Quixel/Fab assets, any Call of Duty / Treyarch IP. The perk names, weapon names, and maps here are original to Nightfall.
Yes — later, and the code is already shaped for it.
Unreal's player pawn, player state, game state, and interactables replicate. A listen server with up to 4 clients is the intended next step, not a rewrite. Dedicated server is a packaging target away. Read docs/MULTIPLAYER.md.
The browser prototype used WebRTC P2P, which is the wrong model for an authoritative horde mode. UE listen-server is the right one.
Nightfall.uproject
Config/ renderer (Nanite/Lumen), input, game
Source/Nightfall/ all gameplay C++
NightfallCharacter.* FPS pawn, guns, perks, interact
NightfallZombie.* window → chase → attack
NightfallInteractable.* doors, wall buys, perk machines, power, crate, PAP, barricades
NightfallMapBuilder.* Frostmere / Omega / Site 13
NightfallGameMode.* rounds, spawns, listen-server
Content/ put Nanite meshes here
docs/
- Empty
Playmap checked in (once Git LFS is on). - Quixel/Megascans pass on Frostmere with Nanite enabled.
- Weapon viewmodels and fire animations.
- Zombie skeletal mesh + animation BP.
- Listen-server HUD (other players' names, shared round).
- Audio (gunshots, round sting, crate jingle).
- Packaged Windows shipping build.