This was posted on our guild forums, and I thought that the performance loving people here might be interested in it too:
So, a little backstory. With 2.1, mod authors got the ability to individually profile addons and see how much CPU time and RAM they're taking. What we've discovered is that KTM takes an absolutely horrid amount of CPU time, even when it's doing nothing, due to its architecture (it's poll-driven, rather than event-driven, like every other WoW mod). Kenco, the author has basically said "buzz off, my mod's fine" to everyone concerned about this, and is not going to be updating it to be more friendly to the user.
Irritated by this, I started working on a threat meter of my own. The rest of the wowace developer community, being somewhat performance consciencious, is irritated with Kenco as well, and has chipped in to make this possible. At last check, I had 10 other people besides myself making commits to the project. The result of this is that in one weekend, the community has basically written a threat meter mod. We've gotten ability modules written for each of the nine classes, as well as a general framework to handle upgrades and updates in the future smoothly. We've collaboratively written Threat-1.0, which is a library that tracks threat and communicates it with your group, keeping you synched so that all members of your group with Threat installed are aware of each others' threat levels on all mobs at all times. It is purely event-driven, and built on the Ace library framework, resulting in a very lean, very fast, very mean mod.
This also means that any number of GUIs can be written to display your threat levels. Right now, I've got a very basic mod called Omen that provides a frontend for Threat-1.0. You can consider it (and Threat) beta for now, but they work well enough that they could use testing. If you are an end user, you only need download the Omen zip - it contains the Threat-1.0 library as an embedded library, so you don't need to even think about it. You can also download (and update) this mod through WoWAceUpdater.
This is not "KTM converted to Ace", but a ground-up, rewritten, brand-spankin' new threat mod. It is designed to be flexible, extensible, and easily maintainable, and it has a solid community of developers behind it, ensuring that it will stay up to date and accurate as threat mechanics change.
So, here's the rundown.
- Threat tracks (and Omen displays) threat on a per-target basis, separated by name. Basically, this means that if you engage two enemies of different names, you will get a different threat list based on the which you have targeted. If you are engaged in multiple enemies of the same name, they will, unfortunately, show the same threat list; this is unavoidable, as the WoW API provides no means of distinguishing between enemies in combat log messages. However, worst-case, this functionality is on par with KTM, which only provides a single threat list for a fight. Best-case, it is well beyond KTM. This eliminates the need for Master Target settings, as this is implicitly done by the multi-target threat list management.
- All 9 classes are supported, and I believe that we have the the vast majority of class abilities covered. More are coming as threat values are tested. Our aim is to be far more complete than KTM in this regard; for example, KTM assigns no threat for casting a curse on an enemy. This action, in reality, generates about 53 threat, and is accounted for in Threat/Omen.
- Loaded up with all its libraries, Threat takes about 850kb of UI RAM. This is approximately equivalent to KTM, but the vast, vast majority of this RAM is in spent in shared libraries, which will be used with other Ace mods, effectively making that library usage "free". In reality, Threat's own memory footprint is likely well under 100kb.
- Threat takes very little CPU time. In the time I spent profiling, Threat took under 0.5 seconds of CPU time, while KTM consumed well over 24 seconds of CPU time in the same period.
- Omen takes about 42kb of UI RAM, and uses so little CPU that it didn't even register
- Special threat-effecting gear effects are in, including set bonuses and threat enchants, as well as established -threat items like the Fetish of the Sand Reaver and the Eye of Diminuation. However, there are holes, like the Hypnotist's Watch. They will be supported as soon as I can figure out to test 'em.
- There are no NPC ability modules right now. This means that things like Knockback and Wing Buffet do not currently reduce your threat. This is coming soon. I hope to tie this into BigWigs so that I get notifications of special boss events, and can use those to affect threat lists accordingly. For example, the Attumen transition from Phase 1 to Phase 2 is a threat wipe; the mod will become aware of this transition, and wipe the threat lists accordingly.
- Pets are currently not supported. hyperactiveChipmunk is working on this module, so you can expect it soon.
- KTM interoperability is currently not supported. We would like to support it, but the protocol that KTM uses is rather limited, so we're going to have to think hard about how to best do it. It is definitely on the wishlist, however.
- This is beta. Don't rely on it alone right now. It's mostly untested in raiding situations (it's only a few days old!). This doesn't mean that it's not ready for beta use and testing - it is. Just be aware that it is currently unfinished. I wouldn't recommend endorsing that your guild switch over to it right at this moment, as there are still holes that need to be fixed. That said, I hope it doesn't remain that way for long.
What We Need
- Testing! Test it out, see first and foremost if you can produce errors. If so, screenshots of the error and a description of what caused the error would be awesome.
- Threat validation. You know your class, and what kinds of threat you produce; check that Threat/Omen properly registers these values. If you're the programming and/or theorycrafting type, consider testing threat values for specific abilites/ranks and adding them into your class module. The process for this is generally "Get someone else with a passive 1.0 modifier (anyone but a rogue, druid, or warrior) to hit them X number of times, note the damage done, then get into melee range and cast an ability on the target until you pull aggro. Take the number of casts required, divide (the helper's damage / 1.1) done by the (1 - number of casts) and (number of casts) and average the two numbers. That is your estimated threat value for the ability.
- Feedback and feature suggestions. This is primarily for Omen, as Threat is just a library. Omen's little more than a testing display right now, but there are any number of directions that it could grow in.
Questions and feedback are greatly welcomed!
I haven't been able to test it myself yet, but it should be nice to free up some of the resources that KTM uses to run.