File information

Last updated

Original upload

Created by


Uploaded by


Virus scan

Safe to use

About this mod

A tool for editing settings in Halo: Reach game variants, and for writing new gametype scripts.

Permissions and credits

This utility can be used to edit settings in Halo: Reach game variants. Currently, only multiplayer, Forge, and Firefight variants are supported; Forge maps and Campaign variants are not. The program can edit both game settings and gametype scripts: you can access modding-only Custom Game options and even create entirely new game modes.

This tool was tested using content from Halo: The Master Chief Collection on PC.

The source code for this tool is available to view on Github.

Basic things you can edit (non-exhaustive list)

You can modify all values for all player traits in a game variant. This includes values not normally shown in the game's menus, such as "drain over time" values for the Shield Recharge Rate, and a hidden "Cannot Die From Damage" trait that only allows a player to die from leaving a level boundary. It also includes entire sets of player traits not normally shown in the game's menus -- specifically, traits for the Overshield and Active Camo powerups.

You can edit configuration data for teams in a game variant, including overriding a team's species and colors. Bungie's official Halo Chess game variant used this functionality to turn the red and blue teams into black and white.

You can edit Title Update 1 configuration values. When 343i released the title update, which lowered precision weapon bloom to 85% and nerfed Armor Lock, they didn't hardcode all of the update's changes; instead, they allowed each game variant file to specify a limited range of options. This means that among other things, you can adjust bloom from 0% to 200%, enable a full-auto Magnum (so that holding the trigger fires the pistol repeatedly), and tune the Magnum's fire rate.

You can also edit option visibility. Halo: Reach allows game variants to hide certain options from the in-game menus. Infection is implemented as an FFA game mode with fake "teams," and it uses this functionality to prevent you from enabling real teams (which would break the gametype script); modes like Territories use this functionality to prevent you from disabling team play. Invasion uses this functionality to disable the normal round time limit, so that it can override that with the individual phase timers. ReachVariantTool allows you to forcibly show or hide most of the known gametype options in the menus.

You can create presets for Forge. When you go to the Forge lobby, you're able to edit a very limited range of options; these options come from 00_basic_editing_054.bin, a built-in game variant built specifically for Forge. There's no way to get these variants to load outside of the Forge lobby (Forge in Custom Games was a Halo 3-only hack, sadly). However, you can create new Forge-only game variants with built-in settings, including settings you're not normally able to access in-game. For example, you could save a preset game variant where players in Edit Mode have 120% speed (you can't normally edit Edit Mode movement speed) and maximum damage resistance, and where FFA play is enabled (also not normally allowed in Forge). If you save these game variants, then when you open up Forge in MCC, you'll see that the single "Basic Editing" option has become an entire "Forge" category, including both "Basic Editing" and your edited presets.

Advanced things you can edit

In older Halo games, the different multiplayer game modes were hardcoded into the game engine. Things like Capture the Flag and King of the Hill were built into the game itself. Starting with Halo: Reach, however, multiplayer gametypes aren't hardcoded; instead, they're scripted, and the scripts are embedded into each game variant file. If you decide to play Capture the Flag with 200% jump height with your friends, and you save those settings for later, you aren't just saving settings; you're saving an entire separate copy of Capture the Flag itself. What if a program could modify that data?

ReachVariantTool isn't the first program to offer access to gametype script code. A community member by the name of kornman00 reverse-engineered Halo: Reach's scripting engine and created KSoft.Tool (now known as MegHalomaniac), which allowed you to edit gametype script, but in a very... direct... fashion. You can use it to access just about any data that can exist in a game variant, but you'll be writing scripting code in XML, which is very much not well-suited for scripting code. For ReachVariantTool, I designed a custom scripting language that compiles down to the same bytecode as Megalo; in other words, you can write scripts in an actual scripting language rather than a data language like XML.

Gametypes that I've created with this tool include:

Halo Chess+
Screenshot Studio

Decompiled, documented, and annotated copies of Bungie and 343i's official gametype scripts can be found as an optional download in the Files tab.

It must be noted that scripting is only available for standard Multiplayer modes; you cannot script Forge or Firefight.

Important folders

Your saved game variants are located in the following folder (the exact path varies depending on your internal XUID, or Xbox User ID):


If that folder does not exist, try saving a game variant or map variant in-game so that the folder is generated. When adding new files, note that the Master Chief Collection only checks this folder once, when you click through the title screen ("Press [Enter]"). If you add files to this folder after that moment, you will need to fully close and restart the game in order for those files to appear.

The built-in game variants are located in two folders within your Master Chief Collection install directory -- one for built-in files in Custom Games lobby, and the other for all Matchmaking game variants:

...\steamapps\common\Halo The Master Chief Collection\haloreach\game_variants\
...\steamapps\common\Halo The Master Chief Collection\haloreach\hopper_game_variants\

You will probably want to use these official files as a base -- just be careful not to overwrite them!

Useful links
View the help manual online, without having to download the program
View ReachVariantTool's source code on Github