Skip to content

Halo Wars Modding

Getting Started

Build your first loose mod from files extracted with PhxGUI, then load it in game with ModManifest.txt.

This guide walks through the safe beginner loop for Halo Wars: Definitive Edition modding:

  1. expand the game archives with PhxGUI;
  2. use the per-archive folders PhxGUI creates, such as root;
  3. add those archive folders to ModManifest.txt;
  4. copy one XML file into the matching archive folder;
  5. make a tiny edit and test it in game.

The important part is the folder layout. Do not point ModManifest.txt at a random parent folder and hope the game finds everything. The normal, predictable layout is per-archive: root, root_update, sound, sharedscenario, and map-specific folders when you need them.

What You Need

Halo Wars: Definitive Edition

Install the game and launch it at least once. This creates the local app data folder where ModManifest.txt lives.

PhxGUI

PhxGUI is the beginner tool for Halo Wars archive and data files.

Temporary workflow

This PhxGUI-based workflow will be deprecated once Forge is released. Deeper custom map work should be done through Cutter.

You will use it to:

  • expand .era archives into folders;
  • convert .xmb files into editable .xml;
  • edit ModManifest.txt.

The current PhxGUI expands each .era into its own subfolder automatically. That is the layout this guide uses.

XML Editor

Most early Halo Wars modding is XML editing. Use Visual Studio Code as your main editor, then install an XML extension so you get clear highlighting, formatting, and error markers.

Useful editor features:

  • line numbers, so you can tell people exactly where an error is;
  • search across folders, so you can find a unit, leader, tech, or resource name;
  • XML formatting, so nested tags stay readable;
  • matching tag highlights, so you can see whether <Leader> and </Leader> still line up.

Notepad++ is fine for quick edits, but VS Code is better once you are searching through extracted folders. Do not use Word, WordPad, rich text editors, or spreadsheet tools for XML files.

The Folder Rule

Think of each .era as its own folder.

If the original archive is:

text
root.era

then your loose mod folder for files from that archive should be:

text
first_mod\root

Files inside that archive folder mirror the paths inside the .era:

text
first_mod
  root
    data
      leaders.xml

For a bigger mod, the parent can hold several archive folders:

text
first_mod
  root
    data
  root_update
    data
  sound
    English(US)
  sharedscenario
  my_custom_map

Each archive folder that should load gets its own line in ModManifest.txt.

Create A Workspace

Create a place for extracted game files and a separate place for your mod. For example:

text
C:\Users\YourName\Documents\Halo Wars Work\extracted
C:\Users\YourName\Documents\Halo Wars Mods\first_mod

The extracted folder is your reference copy. The mod folder is the only place you edit for this guide.

Steam can load loose mod folders from almost anywhere on disk.

The Windows Store version is stricter. Keep loose mods under the game's local package state folder:

text
C:\Users\YourName\AppData\Local\Packages\Microsoft.BulldogThreshold_8wekyb3d8bbwe\LocalState

Steam Deck

Loose mods only work reliably on Steam Deck when Halo Wars is installed on the main drive, not an SD card.

Expand root.era

  1. Open PhxGUI.
  2. Set ERA Expand Path to your extracted folder.
  3. Find root.era in your Halo Wars install directory.
  4. Drag root.era into PhxGUI.

PhxGUI should create a folder for the archive:

text
C:\Users\YourName\Documents\Halo Wars Work\extracted\root

Inside that folder, look for the leader data:

text
root\data\leaders.xmb

If you do not already have an editable leaders.xml, drag leaders.xmb into PhxGUI to convert it.

Copy One File Into Your Mod

Make the same archive path in your mod folder:

text
C:\Users\YourName\Documents\Halo Wars Mods\first_mod\root\data

Copy the converted leaders.xml into it:

text
first_mod
  root
    data
      leaders.xml

This is the key path. Because leaders.xml came from root.era, it belongs under your mod's root folder.

Point ModManifest.txt At root

ModManifest.txt is a plain text file. Each enabled line is one folder the game should search.

For this first mod, add the root archive folder, not the parent first_mod folder:

text
C:\Users\YourName\Documents\Halo Wars Mods\first_mod\root

This is wrong for the per-archive layout:

text
C:\Users\YourName\Documents\Halo Wars Mods\first_mod

PhxGUI can edit the right file for you with Edit ModManifest.txt for Steam or Edit ModManifest.txt for WindowsStore. In the editor, each row is a directory. Rows higher in the list are searched first.

To disable a folder without deleting it, put a semicolon at the start of the line:

text
;C:\Users\YourName\Documents\Halo Wars Mods\first_mod\root

Common manifest locations:

VersionPath
SteamC:\Users\YourName\AppData\Local\Halo Wars\ModManifest.txt
Windows StoreC:\Users\YourName\AppData\Local\Packages\Microsoft.BulldogThreshold_8wekyb3d8bbwe\LocalState\ModManifest.txt
Steam Deck/home/deck/.local/share/Steam/steamapps/compatdata/459220/pfx/drive_c/users/steamuser/AppData/Local/Halo Wars/ModManifest.txt

For a larger mod, the manifest can list multiple archive folders:

text
C:\Users\YourName\Documents\Halo Wars Mods\first_mod\root_update
C:\Users\YourName\Documents\Halo Wars Mods\first_mod\root
C:\Users\YourName\Documents\Halo Wars Mods\first_mod\sharedscenario

If two listed folders contain the same file path, put the one you want to win higher in the list.

Make A Simple XML Edit

Open your mod copy:

text
first_mod\root\data\leaders.xml

Search for Cutter:

xml
<Leader Name="Cutter"

Inside Cutter's leader block, find his starting supplies:

You are looking for a starting resource value similar to this:

xml
<Resource Type="Supplies">800</Resource>

Change only the number. For a visible test, use:

xml
<Resource Type="Supplies">1500</Resource>

Save the file.

This edit is intentionally boring. That is good for a first test: it proves the mod loads without asking you to learn squad IDs, unit tags, art files, or balance tables yet.

Test In Game

Start Halo Wars and begin a skirmish as Captain Cutter.

If the mod is loading, Cutter should start with the supplies value you set.

That confirms the three basics:

  • ModManifest.txt points at first_mod\root;
  • leaders.xml is under first_mod\root\data;
  • the game is reading your edited XML from the correct archive folder.

If It Does Not Work

Check these first:

  • ModManifest.txt points at first_mod\root, not just first_mod.
  • The edited file is first_mod\root\data\leaders.xml.
  • You edited the mod copy, not the extracted reference copy.
  • The XML still has matching opening and closing tags.
  • The folder listed in ModManifest.txt exists and is not disabled with ;.
  • If another mod folder is listed above yours, temporarily disable it.

Small XML mistakes can stop the file from loading. If you get stuck, bring the ModManifest.txt lines, the edited file path, and your last change to the New Arcadia Discord.

Next Steps

Once this works, keep the same per-archive folder pattern:

  • files from root.era go under first_mod\root;
  • files from root_update.era go under first_mod\root_update;
  • files from sharedscenario.era go under first_mod\sharedscenario;
  • scenario files go under their matching scenario archive folder.

Change one value at a time and test often. When you are ready for audio or loose scenario work, read Serina.

Built for the Halo Wars modding community.