Get an Epic Experience with Premium

WeakAuras

Class Login to Add Favorites
  • 43 Likes
  • World of Warcraft
  • 116,952 Monthly Downloads
  • Supports: 5.3.0
  • 1,028,606 Total Downloads
  • Updated 05/21/2013
  • Created 10/03/2010
  • 815 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: GNU General Public License version 2 (GPLv2)
  • Newest File: 1.4.7.10
or
Support development! **
Donate

About WeakAuras

WeakAuras

WeakAuras is a powerful and flexible framework that allows you to display highly customizable graphics on your screen to indicate buffs, debuffs, and a whole host of similar types of information. It was originally meant to be a lightweight replacement for Power Auras, but it now incorporates many features that Power Auras does not, while still remaining more efficient and easy to use.

Features include:

  • An intuitive and powerful configuration interface
  • Custom textures including all textures from Power Auras and the new Cataclysm spell alerts
  • Progress bars and textures that show the exact duration of auras
  • Displays based on auras, health, power (mana, rage, soul shards, holy power, etc.), cooldowns, combat events, runes, totems, items, and many other triggers
  • Preset and user-defined animations
  • Custom side-effects such as chat announcements or sounds
  • Grouping, which allows multiple displays to be positioned and configured at the same time
  • CPU optimizations such as conditional loading/unloading of displays, modularity, and prevention of full aura scanning
  • Powerful customization options, such as animation paths, on-show/on-hide code, and custom triggers, for Lua-savvy users

To open the options window, type "/wa" or "/weakauras"

Note: WeakAuras works better with more media!

For in-depth documentation, see the Usage page.

For some examples of what WeakAuras can do, see the Examples page!


News

  • 1.4.0 is released! Many new features were added, including:
    • Auto-cloning: a feature available for multi-target, group, and full-scan Auras that will automatically duplicate your display to show multiple sources of information
    • Dynamic Text options for Progress Bar and Icon displays
    • A Circular growth option for Dynamic Group displays
    • Specific Unit options for all triggers that use a Unit option - this allows you to watch only a specific group member, or use the boss1, boss2, etc. unit IDs to watch bosses
    • A new display type, Model, which allows you to display any 3D model from the game files on your screen
    • Third-party addons can now define pre-made displays that can be quickly and seamlessly integrated into your configuration
    • Localization for German, Russian, and Chinese, and partial localization for French
    • WeakAurasTutorials, a framework for displaying in-game step-by-step assistance, along with two pre-made tutorials:
      • Beginners Guide: A guide through WeakAuras' basic configuration options
      • New in 1.4: See the new features of WeakAuras 1.4
  • Examples!

Upcoming

Upcoming:

  • More Tutorials, for more advanced features
  • Documentation updated for 1.4

Problem?

  • Please see the Usage page.
  • If you need help with your set-up, post in the Forum.
  • If you've discovered something that's clearly wrong, or if you get an error, Post a Ticket.
  • If you have a general comment or concern, feel free to comment on the main page!

------------------------------------------------------------------------
r304 | stanzilla | 2013-05-21 16:32:40 +0000 (Tue, 21 May 2013) | 1 line
Changed paths:
   A /tags/1.4.7.10 (from /trunk:303)

Tagging as 1.4.7.10
------------------------------------------------------------------------
r303 | stanzilla | 2013-05-21 13:17:32 +0000 (Tue, 21 May 2013) | 1 line
Changed paths:
   M /trunk/WeakAuras.toc
   M /trunk/WeakAurasModelPaths/WeakAurasModelPaths.toc
   M /trunk/WeakAurasOptions/WeakAurasOptions.toc
   M /trunk/WeakAurasTutorials/WeakAurasTutorials.toc

Let's escalate some TOCs! (5.3 Update)
------------------------------------------------------------------------
r302 | mysticalos | 2013-04-30 01:07:44 +0000 (Tue, 30 Apr 2013) | 1 line
Changed paths:
   M /trunk/WeakAuras.lua

update instance code for difficulty index 10 and 11 (normal scenario and heroic scenario)
------------------------------------------------------------------------
r301 | stassart | 2013-03-24 21:45:46 +0000 (Sun, 24 Mar 2013) | 1 line
Changed paths:
   M /trunk/WeakAurasOptions/WeakAurasOptions.lua

Fix for ticket 353: lua error attempt to call method ControlChildren.
------------------------------------------------------------------------

Comments

First Previous Page 28 of 61 Next Last
  • #511

    Yes, the dynamic groups with icons do seem to increase RAM usage rapidly compared to other systems, however, the CPU impact is not as spectacular.

  • #508

    So... I'm trying to make an aura to warn me when I have an item equipped, it triggers fine, but if I replace the item (unequip it), it doesn't dissapear.

    Any way to make it dissapear? Here's the code: http://pastebin.com/0wZgHGjx

  • #503

    This is probably normal and common in all addons but informing you that almost all animation effects shown constantly create VERY high CPU usage according to BrokerCPU addon. e.g. from 0.28% cpu it jumps to X5-6 times that if a single little icon gets any animation. I understand this as 'normal' since those are in effect like 'little videos'.

  • #504

    Actually, as much as I hate to admit it, WeakAuras' animations are not as optimally coded as they could be. It's a little embarassing for an addon that was originally created for the express purpose of using less CPU cycles than PowerAuras, and yet PowerAuras' animation subsystem is more efficient. Actually, when I first started working on WeakAuras, I actually planned to have no animation capabilities at all, because I knew an animation system would inevitably be a major source of CPU usage.

    Where did things go wrong?

    Well, of course, at some point in WeakAuras' development, I realized that it was going to end up being much more than a simple utility for my own use, but rather something I would want to share with the public. In that case, animations would be a highly desirable feature, so I felt obligated to include them. But, at this point in my addon development career, I didn't really understand Blizzard's Animation widget subsystem, which was a pretty new addition to the WoW API at the time, if I recall correctly.

    Basically, Blizzard's Animation widget system allows a developer to specify certain preset animations to be applied to any UI element, and the WoW graphics engine will handle that animation. The idea is that WoW's graphics engine, which runs in native C code, will be much better at doing this than using Lua (addon) code to update the look of the UI elements on every frame. This is because whenever the Lua (addon) code has to interface with the C (WoW engine) code to get something to change graphically on screen, there is significant overhead involved. PowerAuras uses the Blizzard Animation widget system to animate things, whereas WeakAuras uses a custom animation system that is written all in Lua and updates on every frame.

    So why not change WeakAuras to the faster animation system? A couple reasons. The most important reason is because the Blizzard Animation widget is very limited in terms of what types of animations can be specified and how those animations apply to groups of UI objects. In order to use the Blizzard Animation widget system in WeakAuras, I would have to either greatly reduce the capabilities of WeakAuras' animations - custom animation paths would be impossible, color animations would be impossible, all animations for Progress Bars and Progress Textures would be either impossible or very difficult - or use the system in such a heavy-handed and micromanagerial manner that it actually wouldn't provide any efficiency benefit.

    I did, at one point, consider attempting to create a hybrid system: a system that would analyze the needs of any animation specification fed to it, run it on the Blizzard Animation widget system if possible, and use the custom Lua system if anything that was impossible with that system was needed. This ended up being far more of a hassle than I expected; messing around with the Lua animation system I had created often had far-reaching and surprising ramifications throughout the program, and getting even the simplest Blizzard Animation widget animations to work flawlessly with every other WeakAuras system (especially things like animated dynamic groups) was challenging to say the least. In the meantime, I came to realize that Blizzard's CPU profiling functions are very flawed, and started to question many things I thought I knew about CPU efficiency. In the end, I decided that it just wasn't worth the work, considering many of the most popular, unique, and useful displays and animation functions in WeakAuras (especially Progress Bars and Progress Textures) wouldn't be able to use the more efficient system anyway, and the Blizzard Animation widget system may not have been as big of an efficiency improvement as I initially thought.

    Now, since I brought up the subject of Blizzard's CPU profiling functions (which are what BrokerCPU is based on) being flawed, I feel like I expand on that subject a bit. There are several major problems with it. The first is that it's often difficult to accurately attribute CPU usage to the proper addon, especially when libraries (like Ace 3) are being used. When an addon uses a function from a library, the CPU usage for that function will be attributed to the addon that first specified a need for that library. This is not really an issue that effects WeakAuras considerably, since I used very few libraries, but it's a big one for other addons, especially ones that depend on libraries heavily for combat event processing (things like BigWigs).

    A more pertinent problem is that the CPU profiling functions also do a very poor job of profiling OnEvent and OnUpdate handler functions. If you're not familiar with WoW's addon code environment, OnEvent handler functions occur whenever a game event (such as a combat log message, an aura change, etc.) occurs, and OnUpdate handler functions are called on every frame of game animation (so, 60 times a second if you're running at 60 FPS). CPU usage statistics for these handlers seem to be attributed sometimes to the frames on which they are defined, attributed sometimes to the addon itself, and sometimes simply not registered at all. There was a point at which I had written a comprehensive CPU profiling suite for WeakAuras that was designed to measure the CPU usage of each of its separate subsystems (animations, event handling, progress bar and texture updating, config UI usage, loading/unloading, etc.) and each separate display defined by the user. But I had to cut the feature because the statistics shown were so inaccurate that they were entirely useless: some subsystems never registered any CPU usage, some considerably less than they should, the separate subsystem CPU usage stats never added up to the full addon CPU usage stat, the CPU profiler statistics never matched the values I obtained by inserting custom time-keeping code into various functions, etc.

    Third, rather similarly, I'm not entirely convinced that the CPU profiling functions even "count" all CPU usage in the first place. It seems to me that they only measure Lua execution time, which means any time you're using particularly heavy WoW API calls - times when the Lua code will defer to the WoW engine's native C environment to get some work done - calls like the Animation widget system, the CPU profiler will just ignore the CPU usage of the "heaviest" part of your code. I never formally tested this suspicion, but suffice it to say, there is definitely a lot of CPU usage that the CPU profiling functions simply don't account for at all.

    The final major problem with the WoW's CPU profiling functions is more philosophical than technical. The thing is that not all CPU usage actually affects your gameplay experience in the same way. I can think of no better way to demonstrate this than by WeakAuras' configuration UI's loading process. In the early versions of WeakAuras, it become immediately apparent that having a large number of displays specified would cause the configuration UI to "freeze" when you first tried to open it. This was because WoW game engine and the addon Lua code run on a single thread, which means that whenever an addon needs to accomplish some task, it literally pre-empts all other game functions - essentially, freezes the game - until that task is complete. Creating and displaying all of the sidebar buttons in the UI on the initial load of the WeakAuras configuration was taking too much time, and causing the game to freeze until it was finished. So, the solution to this problem: make the sidebar buttons "lighter" so they don't take as much time to load? No! The solution was to load the sidebar buttons one at a time and release control back to the game engine every so often so that frame updates etc. could still occur normally. This is essentially using the concept of asynchronous execution, which is very common in application programming, but not an available feature in WoW's addon code environment. But, it can be emulated using OnUpdate handlers and timekeeping code, and a lot of WeakAuras' heaviest tasks (which are almost all part of the configuration UI) are run on these emulated asynchronous execution handlers.

    The point is that the loading process uses the same amount of CPU time as it ever did - probably more, because of the overhead of the asynchronous execution emulation - but it is a much much smoother experience for the end user because the CPU usage is spread over multiple frames. Realizing this, it becomes apparent that naively additive CPU usage statistics, such as those displayed by BrokerCPU, are not really enough to identify the addons that really effect your gameplay experience. They can be useful for catching addons that cause general framerate slowdown in heavy raid combat situations. But there is a much more pervasive and evasive problem in the WoW addon CPU usage paradigm that I refer to as "micro-stuttering", where an addon will spend several tens of milliseconds doing some large task, but use no CPU time anytime else. The amount of time spent can be so long that it causes a perceptible stutter in your framerate, or it can be subtle enough that you can't really tell it's happening unless you spend some time playing without addons and notice how much smoother everything looks all the time, even when your framerate reading is the same. I actually wrote a Broker addon that tried to catch these micro-stutters and provide CPU usage statistics only for the duration of the stutter... but unfortunately, because of the shortcomings I previously mentioned with regards to the CPU profiling functions, it turned out to be pretty useless. Some stutters would have identifiable culprits, but most of time, there would either be no or very little CPU usage by any addon during the stutter.

    Anyway, this comment turned out to be far far longer than necessary to answer your question. I guess the TL;DR is that I'm acutely aware of the CPU usage of animations in WeakAuras, but I have no plans to change it. And you shouldn't really worry about it anyway. And if you are really worried about it, you shouldn't use animations in the first place.

  • #505

    I've heard this about BrokerCPU addon by many addon developers. And it makes sense. The API it is based on appears inefficient. However, disabling addons that do show high on it does seem to most of the time increase FPS. For example, I saw a significant increase in FPS in Ultraxion 25 with Recount off after BrokerCPU reported it having very high CPU time. The Recount guys do admit that the addon is not lightweight at all, with no plans to make it lightweight.

    All I'm saying is, the API is inefficient to be accurate I'm sure, but it appears that in many cases, it does make the game have higher FPS if those that reports high are disabled.

  • #502

    I made a very graphic aura for when a debuf needed is missing from a target. However, I do not want it to show on a friendly target. However, if I use the attackable rule it does not show on targets that BECOME attackable (e.g. Ultraxion) unless re-targetted. 

    Do you know of a way to fix this?

    (I mean without removing the rule, as I have it now).

    Last edited by fateswarm on 3/10/2012 5:45:25 PM
  • #501

    Hey guys I am trying to set up an aura to show me the Escape Artist Icon, when am slowed or immobilized. Is there an easy way to do this rather then make one icon for each specific spell in the game? Can I add multiple checks to one aura or will it only be true if all the triggers are met?

  • #494

    I'm having the same problem as some others.  After logging out only the first Aura show in the config.  I'm fairly certain it's always the first alphabetically.  The auras missing from the config still load when they are meant to, such as in combat, but they are impossible to edit.  I will attempt to make some auras with some different loading conditions to see if a specific culprit can be isolated.

    This seems like a great addon, one with which I would love to replace Power Auras.  Unfortunately, this bug effectively makes it unusable in the long term.

  • #495

    I was about to ask if there was a fix for this problem yet, exactly as you describe, the first aura (alphabetically) shows up in the configuration window and others don't.

    Though I'm having an idea now, gonna test.

  • #500

    Thanks so much for posting your workaround.  It's working perfectly so far.

  • #499

    Your workaround worked perfectly, thanks for posting it emilemm!

    Last edited by watchout on 3/6/2012 5:24:29 PM
  • #497

    Thanks! That fixed it!

    Here's an importable string:

    d0YzbaWsuXUajZeLmBv6MGOBtWoPYELDtIFII(lk1VPOHcQA4OWbHQJrPwiILcLfdblNqpKKQNQ8yi65enrizQatMctxvxKsUkj5YiDDQA7qOpIk9vqPPbsnsi1PvXNrvNKuDys5AGGZts5zGILbcnmqLZoqtlqFt2SHcAOGqtOz0mc0eP8htfGAmOnbtd6TDmAS40u8caXdppvuMZU9IhEEQyGMxsz7voFKMxHIiv5BA(3SVDn1mc08skBKxnPmeAIMxAGMG)(Na99nVKYwYGImeAsguKbAYJc)LMdMMG)(Na5SJKdIrYbtK((gYRMugOj4V)jqdLfoanhNox0GinyXXW0zIfPHXKRkRiniX5AfPbpMU1arAWIJXIP6CI0qRYbSWI0qHPshvK2qJdjUlsdECw4O0Dr6777BiMZgA4GRVa

    Last edited by Znuff on 3/5/2012 2:57:17 PM
  • #496

    Yes, I found a workaround.

    Only one of the auras will show up if you do NOT have any auras loaded at the time of logging in. So I made an Aura (which doesn't have to match the trigger, it never has to actually show) that gets loaded under any circumstances. I just named it LoadingAura and made it load on all 10 classes and all 3 specs.

    That fixed it for me, ofcourse it's a work around the real problem, but until there's a fix this can help. And maybe the author can deduct where the problem comes from with this work around.

    Mirrormn, Commandersirow, thanks for the great addon! Just started playing with it today and seems I can do pretty much all I could with powerauras.

  • #493

    Cooldown bars for abilities with variable cooldown lengths (i.e. Heroic Strike with Inner Rage) do not appear when the duration is something besides the default.

    LOVE this addon!

  • #492

    Thanks for this great mod, much better and lighter than poweraura.

    I have an issue with seeing the list of auras/texture I've created. After I set them up and log off and come back they don't show up in the WeakAuras window (not even under 'Not Loaded' section), however they work and I can see the graphics on my screen when I enter a combat.

    I've disabled all addon except this one and this problem still exists. The strange thing is that when I log in to a different toon then I can see them appear in the list of WeakAuras!!!

  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

Infinite Crisis NA

Get Your Preferred Access Code!