Book Thoughts: World of Warcraft Programming: A Guide and Reference for Creating WoW Addons

World of Warcraft Programming: A Guide and Reference for Creating WoW Addons was a 2008 reference book by James Whitehead II, Bryan McLemore, and Matthew Orlando. When I was an avid World of Warcraft player, I loved trying out new addons. The obvious next step was to make my own addons. I had looked at the code for some addons I liked, but it was a little too complicated for me to figure out how everything worked on my own. Then I found this book.

World of Warcraft Programming was split up into three parts. The first part taught the Lua scripting language, which is the computer language used for WoW addons. I had to learn scripting and programming languages in college, so this wasn’t too hard for me. Learning these languages was kind of tedious though. It took some time that non-programmers might not be willing to invest. The second part told all about how to make a WoW addon. This was the real interesting part. It basically described the whole structure of an addon, slowly going through the contents of each file an addon would need.

The last part was a reference for the addon API. API stands for Application Programming Interface. It specifies all the code that is built-in to the game. Addon creators could call on this code to help write the code in their addons. Without an API it would have been impossible to make addons. The API controls what people can change in the interface of the game and what is locked down (only developers can modify it). For the veteran addon creator, the API reference was the best part of the book. Once I knew basically how an addon worked, my only limitations were what the API allowed.

I had a lot of fun making addons for Warcraft. A common practice I did was take existing addons and strip them down to the barest bones. This lowered how much memory the game needed, and memory was at a premium with my old computer’s total of only 512MB RAM. I made another addon to automatically send friendly chat messages to other players based on their in-game achievements. For example, when a player got to the max level, I had it automatically send a congratulations message to them. I also made an addon that indexed all the music in the game files for playback anywhere in the game. The user could override the music in an area they didn’t like with their favorite music that was heard in other parts of the game.

It was a lot of fun making addons, and this book was key to me getting started with them. The book wasn’t perfect though. Shortly after I got it, a major update to the game changed many parts of the API. Now code I used had to be accessed in a slightly different way. Some of the code examples in the book were broken by this, and I had to figure out how to get them working on my own. The API reference was also now outdated for some of the functions. This was the downside of having this reference in book form. However, the authors foresaw this and put most of the reference material on the book’s website. They also did a great job on the forums there, answering book owners’ questions about how to do something in their addons. I asked a question once and got a very prompt response with exactly the information I was looking for.

I really liked the whole idea of an addon. Many newer games do have editing tools, but I have yet to see a game besides World of Warcraft have a way for players to change the interface with scripting code. It was a very advanced feature. I’m sure it took Blizzard Entertainment, the makers of the game, a lot of time and research to add this ability to the game. That may be why I haven’t seen it much in other games. There’s so much effort required to have this ability, most companies aren’t going to take the time.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s