Why I'm rebuilding World of Warcraft from scratch
I built a thing called WoWee, and Hackaday wrote it up this week, so it seems like a good moment to explain what I’m actually doing.
WoWee is a native C++ World of Warcraft client. From scratch. Not a fork of an existing project, not a wrapper around closed binaries — a clean-room client with a custom renderer, written to talk to the open private-server protocols people have been maintaining for years (Vanilla 1.12, TBC 2.4.3, WotLK 3.3.5a).
The first version went out with a custom OpenGL renderer (which is what the Hackaday article describes). I’m partway through a switch to Vulkan now — mostly because the validation layers have made debugging the renderer substantially less painful, and because it gives me a path to better threading later.
People ask me why. Honestly: I missed Vanilla, and I wanted the client side to exist as something I could actually study and modify. The server side has been an open ecosystem for years. The client was the missing half. Once you have a clean client, you can do all kinds of things — custom zones (there’s a small World Editor in the repo for that), preservation work, modding for people who own the original game and want to play offline. It’s also just a wonderful exercise in graphics, networking, asset pipelines, and compatibility engineering.
It’s currently 418★ and somehow already at 80+ releases. The community finding the project has been the most fun part — issues get filed, PRs come in, people show up to argue about renderer choices.
If you’re curious, come look. Stars and PRs welcome. Bugs especially welcome.