As part of our special patch 2.2.0 event, we're reaching out to a number of the AddOn authors who have developed the AddOns we've all grown to love in World of Warcraft. Whether it's a Unit Frame, a bag mod, or a threat meter, you've probably used at least one of the AddOns these folks have developed. This particular interview is with Tuller - developer of Bongos2, Bagnon, OmniCC and many others.
Curse: Could you tell us a little about your background in World of Warcraft and how you got into AddOn design?
Tuller: I've been playing WoW since December of 2004 (has it been that long?) and have 3 70s: Tuller (NE Druid), Tire (Dwarf Hunter), and Esthere (NE Rogue). I basically just play with my friends from college, though we've added a few more people to our guild over time. If I had to describe us, it would be "casual hardcore." We don't do 25 mans, but we're great at 5 and 10 man content. We're all very much looking forward to 2.3 and ZA.
Addon design was something quite natural for me to get into: I've always done a bit of customization to Blizzard games, Starcraft and Warcraft III most notably. Blizzard's a big part of the reason why I chose to study computer science when in college :)
I started using addons around a few months after I started playing WoW: BibMod, GypsyMod, Titan, Perl, and Nurfed were the big ones I recall. After using addons for a while there would be simply things I wanted to change. In Bib, for example, I removed a few features that I didn't use, and added some others. Bongos, Sage, and Ludwig all started out this way.
Curse: What was the first AddOn you worked on for World of Warcraft?
Tuller: I wrote a bunch of small things when I was learning Lua: One was a replacement for an old addon called PlayerNotes. Basically, it allowed me to tag a person by name with some comment, like "don't group with this guy" or "smells." It was fairly handy for when I ran of lot of pickup group runs. I eventually got rid of it once I realized that I recognized people by name :)
Bongos was the first big addon I wrote, and the first one I released to the public, way back in December of 2005. I just basically got to the point where I decided, "Why don't I make my own action bars?" It took a while before I decided to release it to the public, mostly because I did not work on it a lot for a while.
Curse: How has being an AddOn author changed the way you play World of Warcraft and how you interact with fellow players?
Tuller: Well, for one, I typically play WoW less :) Every now and then I get someone who sends me a /tell asking a Bongos question, but my interactions with players in game have basically not changed at all. Outside of the game, I read the comments people make about my addons, and also about my "competitors" pretty much daily. A few gems have come out of reading user feedback: sticky bars is the most notable one. My friends are still the main source of influence for addon design, though.
Curse: By the same token, has it changed your view of the work Blizzard has done with the game?
Tuller: Overall, its given me a much greater respect for them. They've really given us a lot of power to do what we want, and every now and then add even more stuff for us to use :)
Curse: How badly did WoW 2.0 affect the AddOns you were working on at the time? Did it require you to re-design any of the core features?
Tuller: WoW 2.0 caused me to completely rewrite Bongos around three times :) The first thing I did was alter Bongos to simply work. In the process of doing so, I discovered two things about the new actionbar system in 2.0: First, I couldn't do a few features I had in old versions of Bongos easily: Right click self cast and friendly target paging. Second, bar switching was very, very CPU intensive.
So, I ended up looking for a way to solve those issues. The Dominos versions of Bongos were designed to do that: I used show states instead of state switching, which I learned from Trinity Bars. It was faster, but I eventually discovered my bindings system did not work for everyone. I rapidly scraped that version and went back to "classic Bongos." The good news is, by that time I had learned enough about the new system that I was able to implement some optimizations that made Bongos fast enough for the time being.
When 2.1 came around, Blizzard implemented a few improvements to the new state system. At the same time, Dongle had just been released, and I was looking to move to it because I wanted a better system for profiles (mine sucked :P). So, I rewrote Bongos again, using Dongle and incorporating the changes to the state system implemented in the 2.1 patch. I also changed the name to Bongos2 at this time, since profiles were incompatible. The end result was a Bongos that once again had a fast paging system (I think Bongos2 is actually the fastest at paging of all the actionbar addons), and also one that once again had features users I personally missed a lot: rightclick selfcast, and paging when targeting a friendly unit. Effectively, it took me until 2.1 for me to finally restore the majority of functionality I lost when 2.0 was released.
On the plus side, Sage and OmniCC were not difficult at all to make 2.0 compatible, and I gained a lot of users from other addons breaking :P
I'd also like to thank the users who wrote some 2.0 compatible versions of my stuff before I received a beta key :)
Curse: Were any of your AddOns "killed," so to speak, by WoW 2.0?
Tuller: Nothing I wrote was actually killed by 2.0. Bongos lost two major features because of it, though: Scripting was removed shortly after I learned what was coming with the patch, and ranged based paging was also lost. Sage also lost the ability for me to dynamically size frames to fit unit names, which made me a bit sad. Other than that, though, there's not really anything I can think of that was lost.
Curse: Are there any AddOns you'd like to work on in the future?
Tuller: One thing I always think about writing is some sort of HUD, since I have a bad habit of not paying attention to my own health. When 2.3 comes out, I'll be looking to make a list view inventory addon to take advantage of the new features they've added, if I do not do so sooner. When 2.4 comes out, I'll might look at making some sort of minimal damage meter or threat meter. My main focus, though, is really on the stuff I have out already.
Curse: What libraries do you typically use when creating your AddOns, or do you create your own?
Tuller: All of my more complex addons (Bagnon, Bongos, and Sage) are now written to use the Dongle framework. Bongos and Sage actually have very similar code, though sticky frames is the only thing that's actually "shared" between them, other than Dongle. Dongle is a nice framework: It gives me exactly what I need in a very small package. I actually thought about using Ace for a while, but decided there was too little to gain for the amount of overhead I would be incurring.
I typically try to avoid using libraries in my addons whenever possible, but that's mostly because there's very little common code between all of the things I've written.
Curse: You've created several very popular AddOns here on Curse; Bagnon, Bongos2 and OmniCC. Those are just a few of the AddOns you've worked on, though. Could you explain to the community what some of your other available AddOns do?
Tuller: Sure :) Other than those addons, I've released three more to the public: Sage, Ludwig, and SellFish.
Sage is a lightweight set of unit frames that I made for myself after wanting to tweak the look of Perl and Nurfed a bit. Sage is the one addon I have released that was basically designed more for my own personal use than anything. Its not very flashy looking, but is quite easy to read, and of course debuffs are very visible on friendly units. Sage is also, I think, one of the easiest unit frame addons to setup.
Ludwig is my item database addon, designed to replace LootLink for most people. It reads from the player's item cache, so no setup is required, and basically uses no memory until the player actually looks up an item. Ludwig's new frame also looks the best out of all the stuff I've designed, I think.
SellFish is my item price addon. Its quite lightweight and also comes preloaded with a large database of sell values from ItemPrice. I've neglected SellFish a bit, and plan on updating it more frequently after 2.2 is out. I wrote a little thing to parse the armory a little while ago so that I won't have to rely on other addons for data anymore.
Curse: Is there any additional functionality you'd like to add to Bongos2 or Bagnon in the future?
Tuller: There are a few things I'm looking at implementing in Bongos. The first one is that I want to redo the bindings system and save hotkeys per profile. This will allow me to fix the long standing issue people have with Bongos of, "My hotkeys don't work when I switch stances!" I'm also thinking about writing an optional addon to save action button placement per profile as well. That way, I'll be able to have my buttons and bindings automatically switch when I go to say, my tree healing profile, or my pvp profile.
In the long term for Bongos, I'm contemplating overhauling the layout system so that people can have true variable length bars. Again, its not something I'm planning on doing anytime soon.
I have no real plans for changes to Bagnon in the future, though I've made a few performance tweaks that'll make it into the 2.2 release. It really depends on how Combuctor goes.
Curse: In a recent blog post here on Curse, you mentioned a new project you're working on, Combuctor. Is this could to be a plug-in for Bagnon, or a standalone AddOn?
Tuller: Combuctor, for people who do not know, is my next big project. Basically, I want Combuctor to be an inventory addon that allows me to visually find an item really rapidly. Right now Combuctor is planned to be an addon that's completely separate from Bagnon, though they'll both use Bagnon_Forever.
Combuctor is very much a sandbox for me at this point. I'm trying out a lot of ideas and seeing what I do and do not like. There should be a beta sometime after 2.2 is out.
Curse: Looking forward, there's talk of 3.0 having a similar impact on AddOns as 2.0 did. Does this concern you at all and make you think twice when an idea for a cool new AddOn pops up in your head?
Tuller: No, not really :) I do not actually expect Blizzard to do anything as dramatic as they did with the (much needed) restrictions implemented in 2.0.
Curse: If you could change one thing about the World of Warcraft API, and how it limits certain AddOn functionality, what would that be?
Tuller: I'd get rid of the 120 action button cap. Doing so would allow me to implement Bongos in a much cleaner matter: just create a bar, add buttons for stances, and off you go.
Curse: Thanks for the interview, Tuller! Is there anything you'd like to say to your AddOn fans, or to Blizzard?
Tuller: Fans: Thank you.
Blizzard: Thank you. Also, can I have a job?