A little over nine months ago, much to the dismay of my wife, _place_holder;my addiction to World of Warcraft began. At first it was just another game to play in my spare time, but I quickly fell in love with the teaming aspects of playing in an online world with dozens of my friends and thousands of other people.
Shortly after that I discovered that the WoW client isn’t just a game shell, but is a fully customizable smart client environment. I started downloading mods from sites like WorldOfWar.net and WoWInterface.com. I started out simply with a set of addons called CTMod and slowly progressed into more and more addons.
After that I discovered how amazingly configurable the environment can be when I discovered a set of addons called Discord Mods. DiscordFrameMover let me move, hide _place_holder;or resize any visual element on the screen. DiscordUnitFrames let me create very rich frames of information about my players, my targets and the members of my group. DiscordActionBars let me create button bars that change as the environment changed around me. This was amazing stuff.
Then I decided I was ready to see how these addon things really worked. I started exploring the Lua language, the WoW API and the XML-based widget language. I started working on my first Addon: a simple reminder to tell me when my rogue’s poisons expired. What I found was that writing well designed modular code was frighteningly hard using the out-of-the box tools and API. Frustrated, I started looking around for alternatives and finally stumbled on the Ace libraries.
Using these libraries I was able to recreate my poison addon with a dozen or so lines of code and I didn’t come away feeling dirty from all the spaghetti in my Lua files. I felt like my code was nice and modular. The object-oriented nature of the Ace approach felt good.
As I explored Ace I learned that these folks had spent a LOT of time thinking about performance and memory consumption in their addons and had rewritten a number of important addons using their framework and thereby consuming _place_holder;a lot less resources. Another thing I liked that aligned well with my philosophically was the Ace attitude about using more small single minded addons instead of a few large monolithic addons. I immediately started systematically trying to replace all of my non-Ace addons with Ace replacements.
I also continued to expand my Rogue poison addon eventually turning it into a full blown ItemBuff management addon for all classes called FuBar_PoisonFu. When I finished that I realized that even though Ace is easier than stock WoW, there wasn’t really enough tutorial information to help people get started, so I wrote WelcomeHome - Your first Ace2 Addon over on the Ace wiki. I’m also working on two or three other addons that I will be publishing to WoWInterface.com via my authors portal.
This is where I am today. That last screenshot has changes I made to the Unit Frames today. I still use DiscordUnitFrames and DiscordActionBars, but most of my other mods are Ace addons. My framerates are up, my memory consumption is down and I’m having as much fun being an addon author as I am playing the game.
Since I know people will ask, here is my Addons list at this point:
Many of these you can get from www.wowinterface.com _place_holder;or ui.worldofwar.net. Others you have to dig a bit harder to find. Since most of the Ace developers use the same version control system, you can get up to the minute versions of many of the Ace mods from www.wowace.com/files. You should assume, however, that those are betas. If you prefer stable stuff, stick with the stuff published to the main sites.
Best of luck! If you play on Dragonblight, look me up. I’m Quaiche, Gaskett, Mirabel and Clavain in the _place_holder;Lithe guild.