Friday, September 12, 2008

Warhammer Addons

I wrote a bit about LUA addons a few weeks ago and I wanted to follow-up on that article briefly.

As I mentioned previously, Warhammer uses the same programming language (LUA) that World of Warcraft uses for its addons. This basically means that WAR addons will use the same syntax or structure as WoW addons.

However, don’t expect anyone to easily port over your favorite addons since the game specific API commands are quite a bit different between the two games. It’s a bit like taking two people who speak english, but one is a chemist and the other is a surgeon. They can easily communicate with each other, but the chemist, for example, couldn’t perform surgery.

Addons in Beta
Thus far, I have avoided most of the WAR addons in development. The game has enough bugs on it’s own without introducing new ones that Mythic devs are not responsible for fixing. I think the simple addons might be fine, but the more complex ones are a bit premature.

Another reason to be cautious is that things can change pretty quickly in beta. Most addons are about interacting with the UI and this is one area that Mythic continues to improve with each patch. Needless to say, if Mythic is still fiddling with it, the odds of them making a change that breaks an addon is a lot higher.

Despite the LUA similarities, WAR addons will be more limited
This is a bit tricky to explain, but almost all meaningful addons are somehow derived from the API commands that game developers provide addon authors. If there is no command to provide the desired information or effect, then the addon author is either prevented from being able to do it or needs to figure out a way to work around the limitation.

The best example of this in WoW is the distance between two units. No Warcraft addon that can tell you EXACTLY how far away you are from another Player or NPC. Blizzard simply doesn’t provide a range value for the distance between two units in any API command. Clearly, this information exists – it’s just not in the form of a LUA command that authors can use in an addon.

Now, what WoW authors CAN do is work around this problem by using a command that returns true/false if a spell is or is not usable. The work around being that if you know this spell works at 5 yards, then testing if it is usable will tell you if you are within 5 yards of the other unit. By using several spells with varying ranges, you can get a good estimate about distance.

OK, that make sense? Good, because here comes the important part:

From what I can tell about the Warhammer API, they have purposely left out quite a bit of information. I say purposefully, because it’s obvious that Mythic wants people to play the game the way they intended without any perceived unfair advantages coming from using addons.

The most notable limitation is specific unit information. You may have noticed that the default unit frames lack quite a bit of information. I expect some work arounds to this by addons, but by-and-large you shouldn’t expect unit frames to provide nearly as much detail as WoW.

With the slightly slower game play that WAR offers, I certainly think this is a good thing. The emphasis is more on watching the action than watching health bars and unit frames.

Expect a bunch of work arounds
Based on my experience with other games, I highly suspect that the Combat Log is going to become the primary source for filling in the missing information. While it will never provide the level of detail that WoW addons can provide, I do believe it will fill in the blanks.

For example, simply parsing the log for attacks by enemy units might provide the detail needed to learn the target of your target. Which is something that (by default) is not an option currently. Similarly, it might also be used to tell what party or warband members are targeting to allow more focus firing.

I’m also not an entirely certain about this yet, but I also believe that it may be possible to swap out bindings as they are pressed. This would effectively allow you to bind several actions to a single button. So while macro sequencing isn’t currently allowed, I do see a way that this might potentially be implemented. Combined with what I wrote above about Combat Log parsing and it may be possible to make some things moderately intelligent (i.e. automated).

Current Addons:
Garthilk over at Warhammer Alliance put up a quick post with some of the currently available addons. I took his list and added some brief descriptions for each. Nothing game breaking (good or bad) yet.

zBuffBars: Creates Simple Buff Bars for your buffs and debuffs.

CleanUnitFrames: CleanUnitFrames is a replacement for the standard EA unit frames for WAR. It attempts to provide the useful data in a streamlined format, while getting rid of some of the "fluff" or other annoying things in the default UI.

Metahud Unit Frames: Metahud is a replacement set of Unit Frames for the Player, Target, and Pet windows. This mod focuses on placing vital character and target info directly beside the character, in a fashion similar to the MetaHud mod from WoW.

AutoLoot: Automatically uses 'Loot All' when looting a corpse, even when the modifier key is not held.

XpStatus: This addon keeps track of your experience and renown earnings during a game session. Do a right click on the window to change the display modus.

MoveTip: MoveTip is a very simple addon that lets you force all tooltips to be displayed at a specific anchor point.

Chat Alert!: Very simple AddOn that plays a sound when you have incoming text from tell, guild, guild officer, warbands and other important texts. Each type of text has it's own sound so you will learn just by the alert-sound where the message is from.

ActionPoints: Provides a simple (and movable via the Layout Editor) frame that displays your current action points

Mechanic: Provides a simple movable+scalable numeric display for the current value of a class' mechanic (as long as it uses a simple numeric mechanic - support for the more complex ones like Tranquility/Force or Mork/Gork may come later).

zChatWindow: zChatWindow is designed to give you a little more control over the default chat frame. InputBox is movable from top to bottom. Channel Selection Icon is hidden. Looking for group icon is hidden.

Yabber: Yabber allows you to customize the chat bubbles that appear above characters' heads when they speak. Are they too big for you? Make them smaller. Don't like the color of the text? Change it. Don't want bubbles at all? Change the display to just single text items above heads, or turn floating chat off completely. It's up to you.

WhinySpellTimer: Track buffs/debuffs you cast on yourself and your offensive and defensive targets.


ScytheNoire said...

I think WAR has the luxury of having learned from what happened in WoW. They got to see what type of addon's could create exploits and therefore can hopefully avoid those loopholes right out of the gate. I'm sure someone will find a loophole, but Mythic definitely has an advantage of having seen what can and has been done.

sid67 said...
This comment has been removed by the author.
sid67 said...

Ah... well, yes... I think the potential loophole I mentioned to chain bind to a single key press will get patched out. As I said, I’m not entirely positive this is possible but at the moment it looks like I could write something that would work.

But there are some things that I just see no easy way for them to prevent. For example, an addon that parses combat log data to create a HUD display for all enemy players who are actively healing. Is that a big deal? Well – it is if you can them communicate that out to all the players in your guild using an addon that tells them who to focus fire.

That’s a BIG step away from how the current default UI plays and something dramatically different than what I suspect Mythic intends.

Shalkis said...

It'll be interesting to see how Mythic's policy on addons is refined. Blizzard's policy has refined into more and more openness and easier communication between addons running on different players' computers. Blizzard has realized that it's ultimately futile to hide combat mechanics such as threat, because the players will decipher them anyway by using the scientific method. Also, addons used to communicate using dedicated chat channels, but then Blizzard introduced specific commands to allow addons to broadcast information to the whole party/raid/guild.