New features
Scale the crosshair with your field of view
Turn on Settings > Game options > Scale crosshair with FOV and choose Apply changes to size the crosshair from your Field of view instead of setting Crosshair size yourself. A wider view makes everything on screen smaller, and the crosshair now shrinks with it, so it covers as much of the world as Halo 3's does at 70°: about 70 % at 90° and 40 % at 120°. A narrower view makes it larger. In a vehicle's third-person view it follows In-vehicle field of view, and zooming in leaves it as it is. Turning the option off brings back the size you chose before.
More of ElDewrito's Forge: other maps' materials, Reset objects and garbage volumes for objectives
- Other maps' materials: primitives on any map can be drawn with 193 surfaces from every multiplayer map, from Valhalla's rock and Snowbound's snow to Covenant and Forerunner metals. Click Material in a primitive's Properties tab (or press Enter on it) for the new material picker: pictures by category, Recent and a search box.
- Reset objects (Forge menu, Tools tab, host only) brings back destroyed and used-up objects at their placements and puts back objects knocked away.
- Garbage volumes have an Objectives row: set it to Remove and a dropped flag, ball or bomb left inside is sent back, as when its own reset time runs out.
- Starting and respawn points set to a team are drawn in the team's colour in Forge.
- C with nothing under the crosshair copies the selection in front of you, and you hold the copies straight away.
- Selected objects get a yellow outline. To show boxes instead, set Selected objects to Boxes in the Tools tab.
- Deselect all of this kind in the Tools tab takes every object of the aimed kind out of the selection.
- Prefabs list their number of objects, author and date, and Delete asks again before removing the file.
- Objects with fixed or phased physics now stand exactly where the host placed them on every PC: other editors and players no longer see seams between pieces turned 90 degrees.
- Imported ElDewrito maps now keep their lights, screen effects, gravity, fog setting, kill and garbage volume options, and their materials, matched to the nearest surface.
- Primitives no longer show the Respawn and Place at start rows, which never applied to them.
A game-over screen, and our scoreboard while you wait to respawn
When a game ends, a game-over screen names the winning team or player and tells you how you did, over a podium of the top three players or a card for each team with its score and players. After a few seconds the carnage report follows; press Enter (A on a controller), Escape, or CARNAGE REPORT to go to it sooner.
The scoreboard that Halo 3 showed by itself while you waited to respawn and between rounds is now the same scoreboard Tab opens. Split-screen games keep Halo 3's own scoreboard in each player's view.
Scripted game modes can use every Halo 3 character and its looks
Megalo scripts and deployment classes can now turn players into any character from Halo 3's maps, not just the fourteen soldiers before. New bodies include the Arbiter, Brute Chieftains and Jump Pack Brutes, Drones, Sentinels, 343 Guilty Spark, the Flood Infection and pure forms, Sergeant Johnson, Miranda Keyes, Lord Hood, Cortana, the Prophet of Truth, female Marines, naval crew and workers, and Forge's monitor. Name one in place_at_me, for example place_at_me(drone, "body", none, 0, 0, 0, none), then hand it to player.set_biped.
The last argument of place_at_me now picks a character's model variant, such as chieftain_armor for a Brute, heavy for a Grunt, spec_ops_scl for an Elite or johnson for a Marine. The Megalo scripting guide lists every body and its variants. Hosts need the Halo 3 campaign map each body comes from; Forge's AI spawners are unchanged.
Scripted bodies and deployment classes without a chosen variant now get the character's default look on the host too; before, the host could see them differently from everyone else.
Game mode scripts can build their own HUD and clickable menus
Megalo scripts now have 32 HUD widgets instead of four, and can place each one anywhere on screen with its own size, colors, background, border, font size and text alignment. Text, meters and visibility can differ per player: script_widget[5].set_text_for(current_player, "Your points: %n", points). Layouts are drawn on a 1280×720 screen that scales to every display and each split-screen view.
A script can also open a menu for a player with set_ui_menu(true). Their cursor appears, and clicking a widget marked with set_clickable runs the script's on widget click event. Scripts can spend deployment points on a player's class themselves with deploy_class, so a mode can draw its own class picker.
UNSC vs Covenant now draws its class picker, reinforcement bars and status lines this way, and the Conquest example places its ticket counters itself. While choosing a class, Escape opens the pause menu as before.
Widgets are plain text, numbers and colors sent by the host. Players' PCs never run script code, and a click only tells the host which widget was pressed. The Megalo scripting guide documents every call.
Find map names and make playlists from the server's command line
project-reclaimer dedicated content lists every name map, game and playlist games accept: the server folder's maps, map variants, game types and game variants. Add words to narrow it down: dedicated content snipers.
dedicated playlist new "Team Slayer" --maps "Guardian,Valhalla,The Pit" --games Slayer writes a playlist of every map with every game type, checked against the server's content, and prints the line to put in dedicated.toml. dedicated playlist checks every playlist file and names the servers that play it, and dedicated playlist show <file> lists one playlist's games, how often each comes up, and what is wrong with any that cannot be played. No game client is needed for any of them.
Welcome messages for dedicated servers
Set welcome under [defaults] or in a [[server]] block and every player reads it in chat as they join: your rules, your Discord, what the server plays. {name} stands for the player's name and {server} for the server's, and a list gives up to five lines:
[defaults]
welcome = ["Welcome to {server}, {name}!", "Discord: discord.gg/example"]welcome = "" turns it off for one server, and RECLAIMER_DEDICATED_WELCOME sets a one-line default. No remote-console bot is needed for it any more.
Independent voice scopes for hosted games
Toggle Global voice, Team voice, and Proximity voice independently in Host Settings or the host's in-game pause menu. To leave only proximity chat, turn off Global voice and Team voice. Disabled talk keys stay silent instead of switching channels. Dedicated servers use voice_global, voice_team, and voice_proximity in defaults or individual server entries; all default to true. The matching environment variables are RECLAIMER_DEDICATED_VOICE_GLOBAL, RECLAIMER_DEDICATED_VOICE_TEAM, and RECLAIMER_DEDICATED_VOICE_PROXIMITY.
Changes
-
Filter player and server names by default. The personal content filter now starts enabled and covers common English slurs, sexual terms and strong profanity. It masks player and server names in the scoreboard and server browser, including side panels and tooltips, as well as player names in the carnage report and server names in match history. To opt out, turn off Filter chat, player and server names in Settings → Communication and choose Apply changes.
-
Clearer dedicated server setup errors.
dedicated checkanddedicatednow report every problem at once, each server's and each playlist game's, instead of stopping at the first. A misspelt map, game type, game option, playlist field,dedicated.tomlsetting orRECLAIMER_DEDICATED_variable suggests what was probably meant (Did you mean 'Valhalla'?), and a setting in the wrong section says where it belongs, such as a top-level setting written after[defaults]. A Halo 3 map missing from a server folder made with--mapsnames the files it needs, anddedicated checkprints thededicated init . --from --maps "…"command that adds them. A playlist or variant file that does not exist lists the files its folder has. When everything is ready,dedicated checkprints the firewall commands for the configured ports, and what each server plays.The supervisor's console no longer fills with the engine's state reports or with connections that end before admission (port scanners, timeouts, games of another version), which stay in each server's log. When a server's process stops, its restart line says why: a crash, a game that stopped responding, or the error it ended with.
The playlist editor in Host Game → Playlists shows the suggested name too.
-
Everyone in a game needs 0.9.15. Servers admit only players on exactly their own version, so players and servers on 0.9.15 can't play with those on 0.9.14 or older. The server browser's Version column shows a server on another version in red. Update dedicated servers and players together.
-
Kick votes can't be spammed. A player who calls a vote to kick someone must now wait 3 minutes before calling another kick vote, whether the last one passed or failed. Other players can still call kick votes in the meantime, and votes to end the round, end the game or shuffle teams aren't affected.
Bug fixes
-
Vehicles and weapons on campaign canvases. On campaign canvases, palette objects that the mission also uses, such as the Wraith, Banshee, Prowler, Warthog, Mongoose, Scorpion and Magnum, could not be placed in areas of the mission that do not use them. They now spawn in every area.
-
Saved campaign canvas maps load their own area. Choosing a saved Forge map made on a campaign canvas, such as a later area of The Ark, loaded the mission's first area instead. It now loads the area it was made on, and the map picker keeps it selected.
-
Key prompts on campaign canvases. On campaign canvases, prompts such as "Hold [E] to pick up" showed a box instead of the key. They now name the key, as on multiplayer maps.
-
Co-op stays in step on Linux servers and Proton. Campaign co-op hosted by a dedicated server in Docker (or played through Proton or Wine) drifted out of step with Windows players over and over, so everyone kept seeing Getting back in step with the host. The game's math now gives the same results on every system. Everyone in a co-op game needs this version.
-
Dedicated campaign servers stop reloading for every join. On a dedicated campaign server, every player joining or leaving restarted the mission from its checkpoint for everyone, and players connecting during that restart started it over again, so busy servers could sit in loading screens for hours. Players now join a dedicated server's mission while it runs, as they do a player-hosted one, and departures no longer restart it.
-
Forge AI on large maps. AI spawners placed nothing on large maps such as Valhalla: their collision was too large for the AI's pathfinding. AI now spawn and find their way there too.
-
Forge clones appear beside the face you aim at. Cloning an object with C puts the copy beside the face under your crosshair, on your side. A copy could appear behind the original instead, where grabbing it picked up the original.
-
Forge switches say how to move them. Grabbing a switch, or another device Forge can't hold, now explains what to do instead of doing nothing: open the Forge menu's Properties tab and use MOVE HERE, the position rows or the rotation rows. Any device that can't be held gets those rows, as switches already had.
-
Held Forge objects stay put for every editor. When one editor picked something up and held it still, other editors could see their copy of it slowly slide away, a few tenths of a unit within seconds. Every editor now sees a held object where the holder has it.
-
The lobby keeps your latest Forge save. After you saved a map in Forge, starting the next game from the lobby loaded the version from before the save until you picked the map again. The lobby now switches to the map you saved.
-
Keep Forge objects and the editor's view in place when picking them up. Picking up frozen primitives and other scenery now preserves their position and rotation instead of making them jump or turn. Joined editors also keep their view when picking them up, also when the object reaches their PC after they already hold it. Grabs with a stale targeting point no longer skip camera preservation, and very close grabs use a distance that stays consistent when pushing, pulling or rotating the object.
-
Place Forge prefabs where you aim. Prefabs now land on the surface under your crosshair, or on the ground in front of a wall you aim at, instead of floating at the monitor's height. Aiming at nothing still places them in front of you. Picking up one piece of a two-piece selection also carries the other piece again.
-
Rotation snap follows the rotation axes. With a rotation snap set, held objects always turned around the map's axes, even with Switch rotation axes on LOCAL. Snapped turns now go around the object's own axes in LOCAL, as unsnapped turns do.
-
Teams spawn only at their own spawn points. In team games, a team with respawn or starting points of its own no longer also spawns at neutral ones, such as the map's original respawn points that a Forge map left in place. Teams without points of their own still use the neutral ones, and free-for-all games are unchanged. Which team plays the Red and Blue sides still follows Halo 3: in Slayer-type games the first round gives the sides at random, and the teams swap sides every round.
-
Game options match Halo 3's. Game options now offer the Halo 3 settings that were missing and fix several that were wrong:
- Match: Friendly fire and Betrayal booting for each game type (betrayal booting was always on). The Host Settings friendly fire switch still turns it off for every game. Teams enabled no longer shows for modes that always or never play in teams. Respawn adds Synchronize with team and Respawn on kills.
- Map & equipment: Grenades on map and Indestructible vehicles.
- Slayer: Team scoring and the leader kill, elimination, assassination, headshot, beatdown, sticky, splatter and spree bonuses. Oddball and King of the Hill get Team scoring too.
- Forge: Allow editing (everyone or the host only) and Editors traits for players in edit mode.
- Traits: Forced color is available. Motion tracker choices were mislabelled; they are now Off, Allies only, Normal and Enhanced. Grenade regeneration lists Off before On and adds On, with firebombs. The motion tracker range no longer offers 15, 50 or 100 m, which the HUD can't label. Damage dealt moved to weapons and the waypoint to appearance. Starting weapons and grenades no longer show for powerup and carrier traits, where they did nothing.
- Descriptions: Juggernaut kill points no longer mention the VIP, and VIP suicide points are now VIP betrayal points: as in Halo 3, they also go to a VIP who kills themselves.
-
Joining servers with many Workshop mods no longer times out. Joining a server whose playlist uses many gigabytes of Steam Workshop mods could stay on "Verifying mods and preparing the server's map…" until the server gave up with "You took too long to join", then start loading anyway and stay on "Preparing engine" until the game was restarted. Your game now checks the server's mods and prepares its map before taking a place on the server, so the check can take as long as it needs without holding a place others could use, and then joins straight away. It also remembers the Workshop files it has already checked and only checks them again after Steam changes them, so joins after the first are quick. The status line shows which mod is being checked. Leaving while mods are being checked now stops the join for good.
-
Mods' own sounds play. Mods that ship their own copy of Halo 3's main sound bank, such as Halo Online Map Pack for Halo 3 and Yet Another Marine Campaign, now play their new sounds on their maps. Before, the game kept Halo 3's installed sound bank, so those sounds (the Halo Online maps' DMR firing and reloading, for example) were silent. Other maps and the menu return to the installed bank. A mod's own voice lines also play in English when it ships no recording in your chosen voice language, instead of not playing at all.
-
Starting weapon "No weapon" spawns players unarmed. In Game Options, setting a player trait's Starting primary weapon or Starting secondary weapon to No weapon or Unarmed still gave players the map's own weapon (an assault rifle). Those choices now leave that slot empty, so players spawn with no weapon when both are set to them. Map default, Unchanged and Random work as before.
-
Much less upload for servers with many players. Servers sent every player the whole game's scoreboard statistics again each time any of them changed. That cost each player about 120 KB/s in a 64-player game and over 200 KB/s with 127 players, several times the game itself. The statistics now go out only as they change, at a few KB/s per player. Scripted game modes also no longer send every player everyone's on-screen HUD.
Dedicated servers now log their upload every 5 minutes while players are connected, split by what it carries (
Network upload over the last 5 minutes: ...). -
Missing playlist files name themselves. A dedicated server whose playlist file did not exist stopped with only "The system cannot find the file specified". It now says which file is missing and which playlists its folder has.
-
Retain player updates under queue pressure and confirm shuffles on every client. The native engine could discard player updates when its simulation queue was full. Updates now retry in order, including team moves and scripted changes. Shuffles and
teamcountredistribution require a settled round and synchronized players; early, stale and overlapping requests are refused. Success requires the host and every participating client to confirm the assigned gameplay teams and player bodies. Interrupted or timed-out confirmation reports failure and warns that teams may already have changed. Reconnects and missing observations invalidate readiness evidence.Admin, script and ordinary player moves can cancel a queued shuffle or its confirmation, so missing client acknowledgements do not lock team controls.
Also restore the player loop's counter initialization after the expanded peer table patch, which could skip a player or access an invalid watcher slot.
-
Control your character immediately after spawning. Keyboard and mouse input now resumes automatically when loading finishes, without needing a click that could fire your weapon. F1 still releases the cursor, and switching back to the game restores control.
-
Pick "New player" in split screen while saved players are free. In Settings → Split screen, choosing New player… under Add a player jumped straight back to the first saved player whenever a saved player was still free, so a new profile could only be made once every saved one was in use. It now stays picked so you can name the new player.
-
Keep loud microphones from overpowering voice chat. Voice chat automatically reduces overly loud microphones to a consistent speech level and limits peaks when players talk over each other. Individual player and channel volume controls still work. If you previously turned a loud player down, you can return their voice volume to 100% and let the automatic adjustment handle it. Use the overall voice volume to set your preferred balance with game audio.
Install
The game client requires Halo: The Master Chief Collection with Halo 3 installed; no game files are included.
Double-click project-reclaimer-v0.9.15.exe to start the game. It finds Halo 3 in any Steam library and opens without a console window; its log is Documents\My Games\Project Reclaimer\Logs\client.log.
For remote server administration, double-click reclaimer-rcon-v0.9.15.exe, enter the host, RCON port and password, and connect. The RCON client needs no game installation. See the attached RCON.md for setup and commands.