The Reclaimer Engine

One engine for every Bungie Halo

Project Reclaimer is the game. The Reclaimer Engine is what it runs on: Halo 3's engine, recompiled to Rust and rewritten piece by piece as readable code. It runs natively on Windows, macOS and Linux, and it's built to play every Bungie Halo with one campaign, one multiplayer, one renderer, one Forge and one theater.

3systems, natively: Windows, macOS and Linux
128players in one game, where Halo 3 has 16
16,320objects in the world, where Halo 3 has 2,048
9,999objects on a Forge map, where Halo 3 has 640

What changed

Up to 0.9, Project Reclaimer was a launcher that ran Halo 3's engine file from MCC and changed it from the outside. Since 0.10 the engine itself is our code to work on. There's no MCC running underneath, no Windows layer on a Mac or on Linux, and no emulator: the game is one native program with its own window, its own menus and its own networking.

That change is why this release touches everything. A limit that used to be a patch on someone else's program is now a number in our engine. A system that one game had can be written once and used by all of them. And the same game runs on three operating systems and two kinds of processor.

Every game's maps, art, sound and scripts stay yours: they load from your own copy of Halo: The Master Chief Collection, which the game only reads.

Recompiled, on your machine

Hundreds of the engine's functions are already rewritten by hand in Rust, and more follow with every release. The rest is recompiled from the engine file in your copy of the game, so no download of Project Reclaimer holds any game code.

  1. The game finds your MCC, or asks where it is.
  2. It keeps a copy of the two files it needs, in your player folder, so a later MCC update can't stop you playing.
  3. It translates the engine for your processor, on every core, with a progress screen. That takes under a minute, and needs no compiler or other tools.
  4. Later starts use the result, kept in your cache folder. A new version of the game or of Project Reclaimer translates once more.

The code that comes out runs directly on your processor, x86-64 or ARM64, and in our measurements runs as fast as the same engine built ahead of time. What the first start looks like.

Windows, macOS and Linux

All three are native builds of one game, drawing with each system's own graphics interface. A Mac or a Linux PC needs no Wine, Proton, CrossOver or Windows copy of anything: only your game files, in a folder the game can read.

ProcessorsGraphicsNeeds
Windowsx86-64Direct3D 11Windows 10 or 11, 64-bit
macOSApple siliconMetalmacOS 11 or later
Linuxx86-64 and ARM64Vulkan 1.3glibc 2.36 or later, Wayland or X11

On macOS and Linux the engine's graphics calls run on our own Rust implementation of the Direct3D 11 it was written for, over Metal or Vulkan. Dedicated servers run natively too, on all three, with no display or graphics card. Install the game or host a server.

New ground. Native builds are new in 0.10. Expect rough edges, especially in the first releases, and tell us on Discord what you find on your system.

The games

The goal is every Bungie Halo, natively, on this one engine. Halo 3 and ODST play natively, and 0.10 brings the other three into the same game in an early form. Each one is optional: with a game's files missing from your MCC, nothing of it shows and everything else works. Everyone in a game needs the games it uses, and the server browser says which a server needs.

GameStatusWhat that means
Halo 3NativeThe engine's base: campaign, co-op for up to 16, multiplayer for up to 128, Forge and theater.
Halo 3: ODSTNativeIts campaign and Firefight play on the same engine, with co-op for up to 16, split screen, dedicated servers and theater. Play ODST.
Halo: ReachNew, earlyAll its multiplayer maps, with Halo 3's game types and its own 418 game variants, armor abilities and HUD. Its eleven missions and ten Firefight maps, solo or in co-op for up to 16, with its AI and every mission's opening; some of its missions' scripts are still missing. Its Spartan and Elite in Customize, in its armor, and Forge with its own objects.
Halo: Combat EvolvedNew, earlyIts campaign from the first mission to the last, solo or in co-op, and its multiplayer maps with its own game types. It plays by its own rules, with no health recharge, its own physics, AI and HUD, and its classic look.
Halo 2New, earlyIts multiplayer maps with its own game types, rules and HUD, in its classic look and sound. Its campaign's missions are there in an early form, with its AI still being made.

We don't give dates. Discord is where progress shows first.

What the games share

A game on the Reclaimer Engine is its maps, plus whatever its own engine does beyond Halo 3's. Everything else is written once, so every game gets it, and each improvement reaches all of them.

  • Campaign and co-op: missions, checkpoints, join in progress and 16-player co-op are one system. ODST's, Reach's, Combat Evolved's and Halo 2's campaigns, and ODST's and Reach's Firefight, run on it.
  • Each game's own rules: a game plays by the rules of the game its map comes from, Reach's armor abilities and health on Reach's maps, Combat Evolved's and Halo 2's on theirs, and the host can choose another in Game Options.
  • Multiplayer and networking: one transport, one server browser, one set of dedicated servers, and playlists that mix every game's maps.
  • One Megalo: game modes run on every game's maps, and Reach's own game variants play through it.
  • One renderer, with the same settings on every system.
  • One Forge on every game's maps: each map has its own game's objects, and a host can add the other games' objects to any map. See how.
  • One theater for films of every game.
  • Characters across games: ODST's troopers and Reach's Spartans and Elites play on Halo 3's maps, and Halo 3's characters on Reach's. Choose your look.

ODST also raised the bar for Halo 3: its larger tables for squads, objectives and sound classes are the engine's now, for every game, and that's how sharing is meant to work. No game gives up what makes it what it is, and where one has more, the shared engine grows to match.

Engine limits

With the engine in our hands, every table is sized from one setting, so nothing is left behind when another grows. These are the numbers every game runs with:

LimitHalo 3Reclaimer Engine
Players in a game16128
Teams in a scripted mode864
Objects in the world2,04816,320
Objects on a Forge map6409,999
Objects sent over the network1,02416,384
Effectsthe base table4 times the base table
Lights4001,024
Objects drawn in a view76812,288
Models drawn in a view89614,336
Tags in a map32,76865,534
AI squads335512
AI objectives100125
Sound classes5464

Everyone in a game runs the same sizes, and a film or saved game made at other sizes still plays with its own.

Forge on Sandbox with a field of identical blocks stretching to the map's walls, and the Objects meter reading 9,999 of 9,999.
All 9,999 objects of a Forge map placed on Sandbox.

Networking

The network layer was rebuilt from the bottom up, in portable Rust. Everything travels over encrypted, authenticated UDP, with a reliable stream beside it for chat, votes and downloads. A thread of its own seals and sends packets, so a slow frame doesn't hold up the network.

Enhanced networking is multiplayer's new default, designed for 128 players and many vehicles at once:

  • Updates go where they matter. Each client gets an object's update according to how wrong it would look on that client's screen: more often for what's in view, more for what a zoomed scope is pointed at, less for what's behind you.
  • Vehicles fly straight. Another player's vehicle goes where each update says and blends there, instead of being steered toward it and missing.
  • Corrections are smoothed. A small jump of another player's body or vehicle closes over about 100 ms instead of snapping.
  • Driving is fairer. The room the host allows your vehicle's prediction grows with your speed and your ping, and two vehicles that hit each other are settled by the host.
  • Events arrive once. Every event is numbered, so a repeated packet can't apply it twice.

We measured it against Halo 3's own model, side by side in the same conditions: one PC, every client on a simulated link of 25 ms with 1% packet loss.

64 playersMeasuredClassicEnhanced
12 aircraft on a Workshop mapWorst 1% of position error on distant aircraft6.4 mrad0.74 mrad
12 aircraft on a Workshop mapData a watching player downloaded13.9 MB6.6 MB
8 aircraft on AvalancheSudden kinks in a distant player's movement28 a minute0.5 a minute
8 aircraft on AvalancheData a watching player downloaded10.5 MB3.8 MB

A milliradian (mrad) is the angle that error fills from where you stand, about a meter at a kilometer. Bad connections stay bad connections: enhanced networking still predicts the way Halo 3 does, so it makes play smoother and lighter rather than making lag go away. Hosts who want Halo 3's own model can turn on Classic networking or set network_model.

If a listen host leaves, the game picks a new host and play goes on. Every player in a game needs the same version, and 0.10 doesn't play with 0.9.

Co-op

Co-op, Firefight included, plays in lockstep by default, as Halo 3 does: every machine runs the whole mission from everyone's input. Players can join a mission in progress, follow the story past four players and leave without stopping anyone.

Host-authoritative co-op is the host's experimental choice, in Host Settings: the host runs the world and the AI, and guests play the way they do in multiplayer, with their own movement predicted on their own PC, so it no longer waits for a round trip to the host. If the host leaves, another player takes the game over. With 16 players on Sierra 117, four PCs of four players each in our test, every machine held 60 frames a second, and each PC used about 40 KB/s down and 10 up.

Behind routers

Servers and hosted games can be listed and joined without a forwarded port in most cases. The masters tell each machine what its router looks like, answering STUN, and introduce the two sides so they punch through to each other. Hosts register with up to four masters, and any master can make the introduction.

The game itself always goes straight between players. That means a few router pairs can't connect, such as two strict symmetric NATs. Which pairs connect.

Built for modders

The engine has editing tools of its own. The Reclaimer Kit, an app of its own, opens round a running map: place objects, edit tags, swap art and sounds, compile scripts, press F5 to play, then host the result. Megalo scripts change the rules from one text file, and Forge builds on any map with friends.

The source

The Reclaimer Engine is written in Rust. The source stays private for now; the goal is to release it as open source once it's ready. There's no date yet.