World of Warcraft

Third party plugins and open libraries for the famous game

I am the developer of several major addons for World of Warcraft, one of the most famous and influential massively multiplayer online role-playing games of all time. Addons are third-party plugins that can enhance and change how a game looks or behaves. In the case of this game, this form os software is officialy supported by the game developer, which provides an official API to do so, but is restricted to modifications of the user interface.

This has been mostly a single man job, with the exception of occasional cooperations with translators and other developers for purposes such as localization, software compatibility or contribution to common libraries. Yet, in 2009 I started working together with Jason Greer (a former developer) on his addons. These were not much later handed over to me. Hence, a few addons such as Bagnon and OmniCC were not originally created by me.

Most of the source code is publicly available, as I follow an open source model. I have also created many development tools for my own use, some of which are freely distributed.

Development Process

Programming is made in Lua, using an official API provided for all drawing, security and server communication mechanics. Rendering is done on top of OpenGL, but no direct access to the pipeline is permitted. If the developer whishes, XML can be used to declare static user interface objects and templates.

Given it is an online game, a lot of effort was put into ensuring addons do not allow for unfair play (for instance, performing automated actions) or that can change how the game world looks. Hence the lua environment can be seen as a restricted virtual machine.

One good example is that addons have no disk or internet access. When the program is started, all data must be loaded at once from plain Lua files as Lua variables. This makes it much harder than normal to develop programs that rely on large amounts of data. Ludwig, for instance, is an in-game database of every item in World of Warcraft (more than 63.000 as of 2014). Most of the development time was spent on efficiently storing the entire database as a single Lua string, while still allowing for fast searches. The same can be said of the world data PetTracker provides.

Personal Path

Making addons was my very first step into programming and computer science, when I was 13 years old. At the time, the great majority of addons were not very complex and the market far from profitable. For instance, my addon Scrap was the first junk seller to have an actual interface (others were configured using the command line) and the first addon to have in-game tutorials. The last latter became a common practice of the game developer, which now provides in-game tutorials for new interface elements it incorporates.

Not all the addons I have created are still being maintained. Some became unecessary, while others had to be dropped to make time for other more popular projects. Two examples I want to highlight are Bongos Cornucopia and Cornucopia. The latter is one of the addons I am most proud of, although it never had much commercial success.