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.
- The game finds your MCC, or asks where it is.
- It keeps a copy of the two files it needs, in your player folder, so a later MCC update can't stop you playing.
- 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.
- 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.
| Processors | Graphics | Needs | |
|---|---|---|---|
| Windows | x86-64 | Direct3D 11 | Windows 10 or 11, 64-bit |
| macOS | Apple silicon | Metal | macOS 11 or later |
| Linux | x86-64 and ARM64 | Vulkan 1.3 | glibc 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.
| Game | Status | What that means |
|---|---|---|
| Halo 3 | Native | The engine's base: campaign, co-op for up to 16, multiplayer for up to 128, Forge and theater. |
| Halo 3: ODST | Native | Its campaign and Firefight play on the same engine, with co-op for up to 16, split screen, dedicated servers and theater. Play ODST. |
| Halo: Reach | New, early | All 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 Evolved | New, early | Its 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 2 | New, early | Its 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.
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:
| Limit | Halo 3 | Reclaimer Engine |
|---|---|---|
| Players in a game | 16 | 128 |
| Teams in a scripted mode | 8 | 64 |
| Objects in the world | 2,048 | 16,320 |
| Objects on a Forge map | 640 | 9,999 |
| Objects sent over the network | 1,024 | 16,384 |
| Effects | the base table | 4 times the base table |
| Lights | 400 | 1,024 |
| Objects drawn in a view | 768 | 12,288 |
| Models drawn in a view | 896 | 14,336 |
| Tags in a map | 32,768 | 65,534 |
| AI squads | 335 | 512 |
| AI objectives | 100 | 125 |
| Sound classes | 54 | 64 |
Everyone in a game runs the same sizes, and a film or saved game made at other sizes still plays with its own.
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 players | Measured | Classic | Enhanced |
|---|---|---|---|
| 12 aircraft on a Workshop map | Worst 1% of position error on distant aircraft | 6.4 mrad | 0.74 mrad |
| 12 aircraft on a Workshop map | Data a watching player downloaded | 13.9 MB | 6.6 MB |
| 8 aircraft on Avalanche | Sudden kinks in a distant player's movement | 28 a minute | 0.5 a minute |
| 8 aircraft on Avalanche | Data a watching player downloaded | 10.5 MB | 3.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.
