WowStack

Dec 26, 2014 00:00 · 475 words · 3 minutes read development wowstack

WowStack: World of Warcraft done right

It was christmas evening in 2014 when I felt like developing vanilla WoW further with mangos-zero as Open Source would not lead me anywhere. Contributions in any form had been a rare sight for a while. The usual case were private support requests from people running servers, bug reports, pull requests, people willing to contribute code were not out there.

This I decided, let’s do something crazy and rebuild vanilla WoW from scratch!

The process so far

Based on mangos-zero I started modifying the core keeping a more professional mindset I was used to from work, and thus implemented the basics required to comply with the Twelve-Factor App definition.

Codebase

Here I decided to kill the existing build system and rewrite it with only CMake in mind. The goal was to produce reliable builds for Mac OS, FreeBSD, Linux and Windows, all while supporting Clang, GCC, MSVC and MinGW compilers.

In the end the build process these days generates binary packages in a state you would expect from a commercial product, and is able to create reproducible builds on all target platforms.

Dependencies

A lot of code has been merged into a shared library, all external dependencies have been removed from the core and finally are really external. Basically, say goodbye to the dep folder and its’ inherent sins.

Integrating a dependency manager into the build process will be the next goal.

Backing services

These days, MySQL essentially is no longer that hard coupled. You can inject it with a Docker container, or run it locally. The core does not care.

Build, release and run

This one bugged me for a long time. So with the build system updates, we now follow semantic versioning for WoWStack, generate release packages, deploy them to development, staging and production systems and run them. This also tends to happen in virtualized and containerized environments via Docker.

The road ahead

A lot has been changed, the core can survive a few thousand players, run for months without any crashes, and a lot of fixes went into the game systems.

Right now, we rebuild the game content from scratch. Which means we use old books, archived websites, archive WDB game cache files, Wikis and tons of other resources gathered over the last decade to rebuild the database.

Why rebuild? Because we can! Call me crazy but I believe that verifying the existing databases content for validity will takes as much time.

Rebuilding at least allows us to write down an actual number for how much is implemented and working. Currently numbers handed out by most servers should be considered wishful thinking.

WoWStack will be different. In every aspect.

… and free!

… last words

Warcraft®, World of Warcraft®, and all World of Warcraft® or Warcraft® art, images, and lore are copyrighted by Blizzard Entertainment, Inc.