// CONTENTS
In 2003, World of Warcraft was one of the most anticipated games on the planet, and almost nobody could play it. Blizzard was running a closed Friends & Family Alpha. If you weren’t a friend or relative of someone at Blizzard, you waited, read the previews, and stared at screenshots.
I did something else.
The Leak
The alpha client leaked. It spread the way things spread in 2003: through IRC channels and message boards, passed from one person to the next. I grabbed a copy the moment I heard about it.
A few years earlier I’d brought the Ultima Online pre-alpha back to life (that story is in I was Tamino.), so I knew what I was looking at. A client on its own is a locked door. It wants to talk to a server, and the only servers were inside Blizzard.
This time I had an advantage. The leak came with packet captures: recordings of the real client talking to Blizzard’s real servers. After working out Ultima’s protocol with nothing to go on, having real traffic to study felt like being handed the answer key. Mostly. A recording shows you what was said. It doesn’t tell you why, and it certainly doesn’t tell you what happens when you say something slightly different.
Reading the Conversation
So I started building a server emulator in C++, one conversation at a time.
First, login: the client introduces itself, the server answers, and if the answer is wrong you go nowhere. Then server selection, the realm list where you pick which world to join. Then character creation: race, class, face, name, and a server that remembers what you made. Then the moment it turns into a game: entering the world and moving through it, with the server keeping track of where everyone is.
Each step was the same loop. Study the captures, work out the shape of the messages, write the server’s side, try it, and watch what the client did. When the client accepted an answer, you moved on. When it didn’t, you went back to the captures.
I did those first pieces on my own. Eventually you could log in, pick a realm, create a character and walk out into Azeroth on a server I wrote. Players could see each other and chat, and explore the whole world, a world that, officially, almost nobody had seen yet.
Opening the Gates
Then I joined up with other people working on the same problem, and we took it further together.
We ran the server now and then, not around the clock. When it was going up, word went out on IRC, and players came. On a good night we had hundreds of people running around a game that was nearly a year from release, on a server built by hobbyists from recordings and guesswork.
On one of those nights I was standing in the game world and typed into chat: “This game is going to be a smash hit.”
I’d like a little credit for that call. World of Warcraft launched in November 2004 and became the biggest online game in the world. It wasn’t a hard prediction in hindsight, but I made it in 2003, standing in a field in the alpha surrounded by strangers who’d found their way in through an IRC announcement.
The Letter
Blizzard, understandably, didn’t share our enthusiasm. A cease and desist arrived, so we stopped.
It was their game and their unreleased client, and that was the end of the project.
What It Taught Me
Most of what I took away from it wasn’t about packets.
Once we were working as a team, I worked on the server’s pathing system: how creatures and characters find their way through a world. That’s where I learned A*, the classic pathfinding algorithm, and node-based pathing, where the world is reduced to a graph of places you can stand and the connections between them. They’re still the fundamentals I reach for whenever something in a game has to get from here to there.
It’s also where design patterns stopped being a chapter in a book and became something I needed. A codebase with several people working in it falls apart without shared structure, and we learned that the practical way.
And it taught me something about myself. When there’s a world I want to see and a locked door in the way, I don’t wait for someone to hand me a key. I start picking the lock.
Some kids waited for the beta. I built the server.