Why make this?

How a DLC broke a beloved tool — and what came next.

KrakenMeister's civ builder stopped working

KrakenMeister's civ builder is an awesome tool, but it was built against a snapshot of an older version of the game's data file. Every unit, tech, building and string in AoE2:DE lives inside a binary file called empires2_x2_p1.dat. KrakenMeister's system baked in assumptions about that file — which ID slots were empty, which ranges of string IDs were safe to use — based on the game as it existed when it was written. DLC updates kept being released (thankfully), and those assumptions stopped being true.

The South American biome collision

The most visible breakage, for me, came from The Last Chieftains DLC. That update added new environmental units — herdable animals, huntable animals, predators, berry varieties, terrain objects — and the game assigned them fresh unit IDs in ranges that happened to overlap with the spare slots KrakenMeister used for custom unique units. Maps that worked fine before the DLC would suddenly spawn the wrong thing entirely: instead of berries, herdables, huntables and predators, you'd get patches of neutral (Gaia) unique units. That's the nature of working within a set of previously free slots — each time a DLC adds units, the builder needs patching.

The idea

I used KrakenMeister's civ builder to build all of my custom civs. My brother and I would use these OP civs to beat up on as many extreme AIs as we could stand. Eventually I started editing the dat file directly — not with the AGE editor, but with Python — so that when the game was patched I could simply rerun the script to regenerate my mod. When I wanted more elaborate and crazy civs, I brought in AI: new unique units, aura effects, multiple technologies and bonuses, you name it.

We mainly played on Amazon Tunnel against multiple AIs, which is how I found the problem: six Gaia unique units instead of berries, four or five other ones instead of capybaras. I wrote a script to patch my mod, and my pipeline became: build civs in KrakenMeister's builder, combine them with the vanilla civs, generate the mod, download it, apply my own changes, then apply a band-aid DLC fix. It was getting complicated — and after all that editing, I was already part of the way to a new civ builder.

What Empire Forge does differently

Zero assumptions about the state of the game. Empire Forge reads your installed game files every time you build. Rather than relying on a snapshot, it loads the real dat file from your machine and uses only what is confirmed empty or safe in your version of the game:

  • Unit slots are verified by scanning every civ in your live dat before anything is written — if a slot isn't actually free, it isn't used.
  • String IDs come from a pool checked at build time against what your game actually uses.
  • Civilizations are read from your local game files, so there's never a civ mismatch.
  • Chronicles civs are detected and left alone automatically, including any added by future DLCs.
  • Voices are read straight from your game's own audio files.

Future-proof

Empire Forge isn't hosted on a web server. The pages you use are served by the app on your own computer, for two reasons:

  1. No centralized data or website: no downtime, no outages, no dependency on me or my build tools — it's always available.
  2. I'm cheap. 🙂 But mostly number one.

In case of emergency, break glass

All of the code is free on GitHub. Should I ever stop updating it, you can download the code and run your own Empire Forge. Don't know how to code? The repository includes an llm/ folder — everything learned about AoE2's data file over months of building this, written for an AI coding assistant. Point your coding agent of choice at it, and that should be enough to get you there.

Download Empire Forge