Reader UI of the Week: Coding, Lua, and Efn's UI
Each week, WoW Insider brings you a fresh look at reader-submitted UIs as well as Addon Spotlight, which spotlights the latest user interface addons. Have a screenshot of your own UI that you'd like to submit? Send your screenshots along with info on what mods you're using to readerui@wowinsider.com.
Reader UI of the Week is jam-packed with Lua goodness today, and if any of you master coders out there want to share some resources for the budding developers out there, now is your time to shine. We're looking at Efn's UI today, one that relies heavily on his own coding and simple addon creation in the spirit of Grid, Pitbull, and more. For the perfect tweaks, though, there is nothing better than doing it yourself.
Efn, the floor is yours:
Thanks for the email, Efn, and I can't say enough good things about how clean and impressive the UI looks. I am excited to talk about this one, because so much of it is about the ultimate customization -- coding for yourself.
Only what I need
Efn's dual-purpose user interface fills the tanking and DPSing roles nicely. The clean, thin-bordered approach allows all of the bars and simple frames to be easily delineated from the background while maintaining a solid and profound look. The color choice, while "standard" in many ways, works well. One of Blizzard's triumphs with the classes in WoW is assigning each of them a standard color that has been incorporated into tons of addons and different interface elements, making coloring your UI and addons something of an afterthought.
The mini-tower in the middle of the screen allows for just enough opacity, in combination with the camera's distance, to make not standing in fire especially easy. There is also beauty in symmetry, each piece of the user interface above the Grid-like display conforming in width and displaying only what the current spec requires -- standard minimalism done right, I'd say.
Displaying the missing buffs during a raid is pretty excellent, and I completely forgot that people still have that addon. As a warrior, hunter, and occasionally a shaman, I don't really have to worry about the buffs that I provide, or a raid leader would have the necessary addon to check for us. Suffice to say, I love the ability for the missing buffs to grow larger on ready check and the great use of in-combat/out-of-combat addon changing, especially for the minimap.
Doing it yourself
One of the lessons to take away from Efn's write-up and UI is that coding your own user interface is hard work but freeing. If you don't like the way a certain addon deals with specific user interface elements, you can tinker around with the inner workings. However, if you're not the premiere Lua coder like Efn here, learning to tinker with the options in your UI settings is crucial to a complete understanding of what the UI can do for you, not only what it could look like.
Here's my challenge, again, to Reader UI readers this week -- save your backups and tinker with one addon that you've never played around with before. Try out options. Turn off borders. Scale to your heart's content! You'll never know everything about the addon that you download until you rummage through all of the options available.
Not doing it yourself
Some addons just work and usually work better than our own ways of thinking about a UI element. Combuctor, a one-bag mob, does bags a lot better than the default UI and makes sorting an easy affair. ArkInventory, another popular bag mod, changes things up with an emphasis on user-defined rules but still has a design philosophy much different from the default UI or even other bag mods. The default UI's bag philosophy is just that -- bags. Bag mod philosophy is instead focused on "inventory."
When all fails and you don't have the time or the patience to tinker on your own, mods come through. This is a good thing. Addon authors want this stuff to be accessible (unless the addon is purposefully complex, like ArkInventory can be), and resources are available to help you through it all. Patience is sometimes required.
Coding in Lua
So you've decided that you want to try your hand at Lua and maybe learn a little something or two about addon and UI scripting and construction. Well, there are plenty of resources available, and as new ones appear in the comments, I will add them to this article so that people can take a look. Here are a few basic resources.
If you're the kind of person who is interested in the wide world of coding and Lua, you'll be happy to know that many people consider WoW addons a great beginning for the budding coder. Lua is not the hardest language to learn, and the concepts can be used in other languages as well. There are even books about learning Lua within WoW and writing WoW addons (one even by DBM author Paul Emmerich). The addon and UI community on the WoW community site forums is wide-reaching and incredibly informative. You can find the forums here.
As always, the commenters will most likely have excellent resources for Lua coding or beginning to code in Lua. Until then, I'll see you guys next week, and keep sending in those awesome UIs to readerui@wowinsider.com.
Interested in getting the most out of your user interface? Come back once a week for more examples of reader UIs. For more details on individual addons, check out Addon Spotlight, or visit Addons 101 for help getting started.
Reader UI of the Week is jam-packed with Lua goodness today, and if any of you master coders out there want to share some resources for the budding developers out there, now is your time to shine. We're looking at Efn's UI today, one that relies heavily on his own coding and simple addon creation in the spirit of Grid, Pitbull, and more. For the perfect tweaks, though, there is nothing better than doing it yourself.
Efn, the floor is yours:
Dear Mat,
After reading your column for many months now, I too have decided to throw my UI into the "Ring of Public Scrutiny". Like a recent UI submitter, Skulldamage, I am a fan of minimalism.
I feel my UI is fairly unique in that the majority of it is a single custom-coded UI. I've only seen one other person in my five year WoW history who's done a similar thing, and that thing is to hand-code the majority of the UI.
For the 'typical' addons, I use Combuctor for the "single bag" display needs, and DBM for raid encounters. I also use RaidBuffStatus for monitoring the 'Well Fed' and 'Flasked' state of the raid (this will be disappearing shortly as I have almost finished the work to replace it). Finally, TidyPlates/ThreatPlates for nameplates is golden and I haven't figured out how to code my own equivalent (yet!). To be fair, I also switch some mods on and off on a per-encounter basis, such as the Atramedes mod to monitor sound levels (which I no longer need thanks to a DBM update). The rest is the result of my long-standing passion of programming. The motivation is that I've been able to code everything to use far less memory and CPU resources than even most unit frame mods alone. This yields a performance benefit that makes the whole thing very much worth the effort.
Before I explain the layout, I'll quite happily admit to drawing design inspiration from the addons that I used to use. I'm sure many of your observant readers will see shades of Pitbull, Grid and SexyCooldown to name a few. While I haven't used any of anyone else's code, I was more than happy with the way they presented themselves, so I didn't deviate too much from their style where I didn't feel there
was any benefit to be had.
I have my player unit frame just below center, with a cast bar of sorts (actually a 'radar' like the standard cooldown display). Above the player frame and to the left is a target frame, and to the left again is the target of target frame. As can be seen from the labels, the focus is laid out similarly on the right.
Each unit frame has a cast radar, health, power, buffs and debuffs. The buffs and debuffs behave a little bit smartly. If the frame represents an enemy, the debuffs it shows are mine alone, so they function as DoT timers effectively, eliminating the need to consume extra space. All buffs are displayed for frames showing the 'bad guys'. If the frame represents myself or a friend, all debuffs are shown, and short duration buffs (40 seconds or less) are displayed (I mean, you know you have Fort, MotW and so on, right? So why display them?).
Threat is displayed in a top-3 list for the target and the focus. As a tank, it is very useful to know how I'm tracking threat-wise on both mobs that I'm dealing with. I've yet to see another tank with a UI that tracks threat on multiple mobs simultaneously, so I feel this is fairly unique too.
In a similar display style to the threat meters, underneath the player unit frame can be found a custom damage meter readout. It's not interactive while in combat (mouse clicks are ignored and hence can be clicked through to select targets or spin the camera), out of combat a left click clears the meters, right click drops the meters to 'group' chat (party, or raid chat if in a raid) and the scroll-wheel lets you see more than the top five.
The raid frames are displayed bottom-middle, and they look very much like a Grid display. Some subtle differences exist, such as any player with a Curse or Poison effect (I'm a druid) has their square lit up like a Christmas tree so that they stand out like a sore thumb. Low mana (sub 30%) is shown my a blue border, and health is represented by the square's background, vertically oriented. Raid icons appear in the center of the square, sort of (just below the name, actually).
The major thing that is absent is any form of action bar equivalent. Everything I do is keybound or click-cast (again, part of my custom code). I use an N52TE for just about everything, and therefore keybinding is very easy and you seldom get mis-keys. Cooldowns are shown via the aforementioned cooldown bar, so action bars serve no purpose other than to consume precious pixels that could otherwise show me the fire I should be moving out of. All the keybinds are done as macros, taken from a simple configuration file. The click-casting actions are done similarly, and are mainly used for decursing and spot healing.
Another screenshot shows me in Moonkin form (my other spec) and contains a couple of new things of interest. Firstly, in the buffs section, you can see an icon of a mushroom and the number '3' over it - this means I have all three Wild Mushrooms placed down ready to detonate. In the thick of battle, amongst all the spell effects, it becomes easy to lose track of how many Mushies have been placed down - this solves that problem.
Also integrated into the power bar of the player unit frame is the Eclipse power number (center) and arrows for Eclipse direction. The direction and position of these arrows also lets me know which Eclipse I'm in, so there's little need to display that separately.
In the upper-left of the screen is a buff tracker, that shows me, category-by-category, which buffs I'm missing. If the icon for the category is dull and grey, I'm buffed with something in that category (for the stamina category, it means I have Fort, Blood Pact or Commanding Shout, for example). If the icon is coloured and fully opaque, I'm missing a buff. In this respect, it functions as a missing buff tracker. When the raid leader throws out a ready check, that bar triples in size and moves to just above the ready check dialog box, so I can easily see how I should respond. :) This bar disappears in combat.
I hope this wasn't too long-winded and that maybe someone can get an idea from UI that helps them in their day-to-day play. Thanks for the opportunity to share. Oh, and when someone notices the latency overlay on the Moonkin screenshot and worries about the value, spare a thought for me - this is why we want 'real' Oceanic servers!!!! :)
Thanks for the email, Efn, and I can't say enough good things about how clean and impressive the UI looks. I am excited to talk about this one, because so much of it is about the ultimate customization -- coding for yourself.
Only what I need
Efn's dual-purpose user interface fills the tanking and DPSing roles nicely. The clean, thin-bordered approach allows all of the bars and simple frames to be easily delineated from the background while maintaining a solid and profound look. The color choice, while "standard" in many ways, works well. One of Blizzard's triumphs with the classes in WoW is assigning each of them a standard color that has been incorporated into tons of addons and different interface elements, making coloring your UI and addons something of an afterthought.
The mini-tower in the middle of the screen allows for just enough opacity, in combination with the camera's distance, to make not standing in fire especially easy. There is also beauty in symmetry, each piece of the user interface above the Grid-like display conforming in width and displaying only what the current spec requires -- standard minimalism done right, I'd say.
Displaying the missing buffs during a raid is pretty excellent, and I completely forgot that people still have that addon. As a warrior, hunter, and occasionally a shaman, I don't really have to worry about the buffs that I provide, or a raid leader would have the necessary addon to check for us. Suffice to say, I love the ability for the missing buffs to grow larger on ready check and the great use of in-combat/out-of-combat addon changing, especially for the minimap.
Doing it yourself
One of the lessons to take away from Efn's write-up and UI is that coding your own user interface is hard work but freeing. If you don't like the way a certain addon deals with specific user interface elements, you can tinker around with the inner workings. However, if you're not the premiere Lua coder like Efn here, learning to tinker with the options in your UI settings is crucial to a complete understanding of what the UI can do for you, not only what it could look like.
Here's my challenge, again, to Reader UI readers this week -- save your backups and tinker with one addon that you've never played around with before. Try out options. Turn off borders. Scale to your heart's content! You'll never know everything about the addon that you download until you rummage through all of the options available.
Not doing it yourself
Some addons just work and usually work better than our own ways of thinking about a UI element. Combuctor, a one-bag mob, does bags a lot better than the default UI and makes sorting an easy affair. ArkInventory, another popular bag mod, changes things up with an emphasis on user-defined rules but still has a design philosophy much different from the default UI or even other bag mods. The default UI's bag philosophy is just that -- bags. Bag mod philosophy is instead focused on "inventory."
When all fails and you don't have the time or the patience to tinker on your own, mods come through. This is a good thing. Addon authors want this stuff to be accessible (unless the addon is purposefully complex, like ArkInventory can be), and resources are available to help you through it all. Patience is sometimes required.
Coding in Lua
So you've decided that you want to try your hand at Lua and maybe learn a little something or two about addon and UI scripting and construction. Well, there are plenty of resources available, and as new ones appear in the comments, I will add them to this article so that people can take a look. Here are a few basic resources.
If you're the kind of person who is interested in the wide world of coding and Lua, you'll be happy to know that many people consider WoW addons a great beginning for the budding coder. Lua is not the hardest language to learn, and the concepts can be used in other languages as well. There are even books about learning Lua within WoW and writing WoW addons (one even by DBM author Paul Emmerich). The addon and UI community on the WoW community site forums is wide-reaching and incredibly informative. You can find the forums here.
As always, the commenters will most likely have excellent resources for Lua coding or beginning to code in Lua. Until then, I'll see you guys next week, and keep sending in those awesome UIs to readerui@wowinsider.com.
Filed under: Add-Ons, Reader UI of the Week









Reader Comments (Page 1 of 1)
Henry Apr 5th 2011 7:17PM
I recently took it upon myself to dive into the Lua files so that I could suppress those welcome messages that some addons feel the need to spit out when you log in. It was pretty fun. I did a write-up of how to do it on my blog, http://taufmonster.blogspot.com/2011/03/shutting-up-addons.html
Ted Apr 5th 2011 7:40PM
Efn, nice UI. Do you have your code up on Github or something? Would be interesting to see what you've done, if you don't mind sharing.
Efn Apr 5th 2011 7:54PM
Hey Ted, thanks. No, my code's not available unfortunately. I used to code a bunch of addons that were available on WowInterface, but after too many complaints when I wouldn't implement the features people wanted turned me right off the whole 'public' thing. If you have a specific question or query though, I'm sure I could organize something to show you how I did it.
I mainly code for my own pleasure now, what with WoW being a game for fun and all that. :)
jonas Apr 5th 2011 8:18PM
actually github would be perfect for this - you could have it up and point people towards it without feeling like you have to deal with the support and feature request side of things.
I'm always a fan of making custom resources available, but yeah, switching a project from just a personal tool to a community project is a total pain in the ass and often ruins the fun you were having creating it in the first place.
ted Apr 5th 2011 8:40PM
No problem. I totally understand how that goes. I've started or contributed to a bunch of open source projects over the years and know how some people can get, even though you're doing it for fun/free.
I will say, though, that Github tends to be different in that it really only attracts devs... The people who would rather fix it themselves than bug the original author.
Anyway, thanks for your quick response. Nice work.
JCinDE Apr 5th 2011 8:13PM
Mathew, can you get back in touch with Todoroku and ask him to share the LUA he has embedded into kgPanel to replace the chat frame tabs?
Nipah Apr 5th 2011 8:18PM
A good place to talk about UI "stuff" (LUA coding included) is also the UI & Macro forums on Wowhead.com (http://www.wowhead.com/forums?board=12).
There are quite a few knowledgeable people there who, if they can't help, will point you in the right direction.
I know when I was fiddling with LUA in Stuf they were quick to lend a helping hand, and at the very least, the "Post your UI" thread is a great place to get ideas from.
Footrot Apr 5th 2011 8:44PM
Here are some other resources I've found useful...
http://www.wowpedia.org/World_of_Warcraft_API
http://wowprogramming.com
gaylen666 Apr 5th 2011 11:38PM
i love learning bits and peices of code. I just wish i understood enough to make a loot DB addon hehe. still interesting article
Guyver2 Apr 6th 2011 12:03PM
There used to be a feature on WoW Insider called Pimp My Profile, where a character was submitted and suggestions to improve it were given by the article writer.
Mat, I'm sure you get many submissions where someone asks how they could improve their UI. It's been awhile since I've seen something like that. Do you still do those, or do you feel there's enough background info (like your previous articles) that people could refer to and use?
fizz.pro2010 Apr 6th 2011 1:18PM
I would absolutely love to have that scrolling combat text.
stealthvennom102 Apr 6th 2011 2:18PM
I have to know how this was done or even what addon that is, It looks exactly like what i've been looking for.
mk May 9th 2011 3:21AM
It kinda kills me I still can't find a good way of implementing that combat text. Anyone find a way they're willing to share?
grim Apr 7th 2011 2:52PM
The more I look at this, the more I hate my UI... For the love of secret cow level, please share the code... Please.