Turtle WoW
Four years owning every raid, dungeon and boss encounter on the largest Classic+ server in the world
Lead PvE developer for four years on the largest Classic+ World of Warcraft server. Everything players fought - stock raids, custom dungeons, boss scripting, the quests holding it together - came through me, on realms that peaked above 200,000 concurrent players. The growth started at the end of 2019, when I brought a dead server’s player base across.
01What the job actually was
PvE is most of what a Vanilla server is. Every boss a group fights, every dungeon they clear, every raid a guild organises its week around - all of it is content somebody has to build, script, tune and keep working while the population grows. For four years I carried all of it: the encounters the core shipped with, the custom dungeons and raids built on top of them, and the quest chains holding the two together.
Turtle had about thirty players online when I arrived, and I did not arrive empty-handed. Hyjal, the server my own players were on, had stopped - and a stopped server still holds the one thing it can no longer use: accounts, and the characters people spent years on. Competing projects offered money for those databases. Turtle got them for nothing, because it was the only server in that scene I thought had a future. Its administrator merged them in, population went past a thousand, and it compounded from there.
Scale changes what the job is. At thirty players online, a broken encounter is a bug report somebody files. Above a hundred thousand it is every guild’s raid night at once, across two continents of timezones, and a fix that is subtly wrong is found by more people in one evening than most software has users in a year.
02Repairing the raids everybody actually runs
The server core descends from MaNGOS, and its vanilla raid encounters had never really worked well. Scripts that approximated a fight instead of reproducing it: phases that fired at the wrong time, threat that behaved nothing like the original, abilities and immunities that were simply absent. Every server in this lineage inherited that and most of them lived with it.
I went through the vanilla raids and fixed them - encounter by encounter, phase logic, timers, threat behaviour, add handling and ability rotations - and then tuned them so they played the way people remembered rather than the way the database happened to describe them.
Custom dungeons get the announcement posts. But a returning player judges a Vanilla server on Molten Core and Blackwing Lair, because that is what they came back for. A server whose flagship raids are subtly wrong loses people quietly, a month in, without anybody filing a bug.
03Custom PvE content
Custom content is the half with no upstream to fall back on: dungeons, raids and quest chains written against the server core with no reference implementation to check them against, where correct is whatever the team decides correct means. Hateforge Quarry - a five-player dungeon in the Burning Steppes, shipped in patch 1.16.1 in July 2022 - is the piece of it still visible from outside.
Custom content on a Vanilla server is two halves that have to agree: a client-side patch archive carrying the map, the models and the client database records, and the server-side data and scripts driving the encounters. A mismatch between the two does not fail loudly - it produces a boss that does nothing, or a door that is not there for half the raid.
04Holding the bridge to upstream
Turtle’s core is a fork of VMaNGOS, and it carries an enormous amount of custom content. That is exactly the condition under which a fork stops being able to take upstream patches: every custom change is another place a cherry-pick conflicts, until eventually nobody tries and the fork inherits every bug upstream has already fixed.
Keeping cherry-picks possible was a standing part of my job for four years - keeping custom work structured so it sat beside upstream code rather than inside it, and staying close enough to upstream that a fix could still be taken when it landed.
05Decisions worth explaining
The databases were worth money. Turtle got them for free.
A stopped server’s account and character databases are an asset, and competing projects made paid offers for these. The cheap way to absorb a population is an announcement telling people to come and reroll, and almost nobody does: the characters, the items, the guild and the years are the reason they were there. I handed the databases over for nothing, to the one server in that scene I believed would still exist in five years - partly because the alternative was watching people I had played alongside lose everything they had built. It was a call about which project had a future, made before there was evidence for it. Turtle went from thirty concurrent players to over two hundred thousand.
A fork that can still take patches
The tempting way to add custom content to an emulator core is to change the core. It works immediately and it costs you upstream forever. Keeping the fork mergeable is not an architecture decision made once - it is a small tax paid on every change for four years, and it is why bug fixes from upstream were still reachable at the end of that.
Questions about this project?
I am happy to walk through the architecture, the parts that did not work, or the code itself.