A wonderful Warrior Aggro thread on Blizz forums
#1
Cop of the Deathwing server has done some excellent hate testing.

Original thread with full methodology.

Cliffnotes:

Skills by total hate generated on a single target (50% mob dmg reduction):
1. Shield Slam - 1950 total hate.
2. Revenge - 1370 total hate.
3. Sunder Armor - 1050 total hate.
4. Shield Bash - 930 total hate.
5. Heroic Strike - 890 total hate.
6. Cleave - 490 total hate.
7. Thunder Clap -340 total hate.
8. Bloodrage - 335 total hate.
9. Demoralizing Shout - 175 total hate.

Skills by hate/rage efficiency on a single target (50% mob dmg reduction):
1. Revenge - 273 hate per rage.
2. Shield Bash - 93 hate per rage.
3. Sunder Armor - 70(88) hate per rage.
4. Shield slam- 65 hate per rage.
5. Heroic Strike (fast weapon) - 59(49) hate per rage.
6. Cleave (fast weapon) - 21(27) hate per rage.
7. Demoralizing shout - 18 hate per rage.
8. Thunder Clap - 17 hate per rage.

Regular physical damage in def stance (with defiance): 4.0 hate per point of damage.

1 Hate = 1 point of healing by a Priest with 20% threat reduction talent.

[edit: updated for patch 1.7]
Reply
#2
Jives with my personal observations, including shield bash, which I've always used on pretty much every mob if I have the rage. I'll read over the whole thread and see if there is anything I like or don't like about the tests.
---
It's all just zeroes and ones and duct tape in the end.
Reply
#3
Why isn't Taunt on that list?
Former www.diablo2.com webmaster.

When in deadly danger,
When beset by doubt,
Run in little circles,
Wave your arms and shout.
Reply
#4
Crusader,Jul 14 2005, 02:50 PM Wrote:Why isn't Taunt on that list?
[right][snapback]83501[/snapback][/right]

I think it's because Taunt doesn't do a set amount of aggro. I think if it is not resisted, it moves you up to the top of the list. But I don't play my warrior much, so I might be wrong.
Reply
#5
Crusader,Jul 14 2005, 06:50 PM Wrote:Why isn't Taunt on that list?
[right][snapback]83501[/snapback][/right]

Because it always moves you to the top of the list. Think of it sorta as Postcount +1 :)
Reply
#6
If you are doing your job as a tanking warrior, most of the time taunt will add 0 hate.

I suspect there is a max amount of hate taunt can add, something that tests like these could prove or disprove, but the guy performing the tests hasn't pursued that line of inquiry.

Then there's the issue of 0 rage cost - makes hate/rage for taunt N/A.
Reply
#7

Nice... very nice. Thanks for bringing it to our attention.
Conc / Concillian -- Vintage player of many games. Deadly leader of the All Pally Team (or was it Death leader?)
Terenas WoW player... while we waited for Diablo III.
And it came... and it went... and I played Hearthstone longer than Diablo III.
Reply
#8
If you rework the numbers from Cop you end up with:

Hate:
1pt dmg to mob by warrior = 3 healing to warrior
(With Warrior and priest talents this becomes 1dmg = 4.1 heal)

Ball Park internal "hidden" hate, if 1 dmg = 1 hate:
(I've also removed Defiance, so add that back if you talented for it)

1. Revenge - 300 dmg
2. Shield Slam - 50 dmg
3. Sunder Armor - 250 dmg
4. Shield Bash - 175 dmg
5. Heroic Strike - 146 dmg
6. Cleave - 97 dmg
7. Thunder Clap - 25 dmg
8. Demoralizing Shout - 41 dmg

(I've averaged out the numbers a bit from Cop's post)

Thus to find effective dmg (hate):
Sunder Armor = 250 = 250 eff dmg
Revenge = 300+70= 370 eff dmg
Shield Slam = 50 + 500 = 550 eff dmg.

What makes this interesting is if you have a 60lvl Warrior and a 60lvl Mage; when
is there enough hate on the warrior for the mage to start nuking?

For Smite, a 60lvl Warrior with shield up and tanking:

Weapon strike (150) -> D-Shout (41) -> Weapon strike (150) -> Sunder Armor(250) ->
Weapon strike (150) == ~750 dmg (~7-8 seconds with a ~2sec weapon on a
elite 60+ mob)

Mage fireball at this level is: 715 dmg + 72/8 if it does not crit. Thus the mage
should hold off one or two more weapon strikes (~3-4 secs) to make sure they
don't break the warrior's hate. Also note that this calculation assumes that
the Mage's fireball does not have "hidden" hate.


Terenas
Yuri - Mage/Arcane 85 Undead
Thirdrail - Shaman/Resto 85 Tauren
Vicstull - Rogue/Subtlety 85 Troll
Penten - Priest/Discipline 85 Blood Elf
Storage guild Bassomatic
Reply
#9
Crusader,Jul 14 2005, 06:50 PM Wrote:Why isn't Taunt on that list?
[right][snapback]83501[/snapback][/right]

Taunt (and its cousins Challenging Shout and Mocking Blow) don't really add hate. It's possible that they do have a hate component; the only way you could test that would be to have a warrior use each of those three skills in the absence of any hate other than proximity, and have someone else perform one action which generates the minimum amount of hate. If the warrior retains aggro after X seconds, then the ability does carry hate with it. (Mocking Blow is a small exception, as it does carry some level of hate generation since it does damage in addition to forcing the mob's attention.)

The real effect, though, is that rather than adding a set amount of hate in order to put the warrior at the top of the hate list, they directly but temporarily move the warrior to the top of the hate list for X seconds. If the warrior's not doing anything else to generate hate, at the end of those X seconds, s/he'll move right back down to where s/he was before using the ability.
Darian Redwin - just some dude now
Reply
#10
Do any of the Druid Bearform specials have similar enhanced hate? Maul or Swipe for instance
Reply
#11
Xame,Jul 17 2005, 01:21 PM Wrote:If you rework the numbers from Cop you end up with:

Hate:
  1pt dmg to mob by warrior = 3 healing to warrior
(With Warrior and priest talents this becomes 1dmg = 4.1 heal)

I don't think these numbers are correct. The effects we are trying to remove are:
1) Subtlety - 20% threat reduction on heals
2) Defiance - 15% threat bonus while in Defensive Stance
3) Defensive Stance - 10% threat bonus while active

Assuming Defiance stacks with in inate threat bonus of Defensive Stance (which is obviously should) we have a total bonus for the warrior of 25% and total reduction for the priest of 20%. Let work through this step-by-step to make it easier to point out errors if I mess something up:

From Cop's testing, we have the following conversion factor:
1 damage = 4.1 hate
1 healing = 1 hate

now, let's remove the effect from above:
1 damage = 4.1 hate / 1.25 = 3.28 hate
1 healing = 1 hate / 0.8 = 1.25 hate

We can look and see that these numbers make sense (warrior is generating less hate and priest is generating more without talents) and we can run the numbers backwards just to be sure:
1 damage = 3.28 hate * 1.25 = 4.1 hate (check)
1 healing = 1.25 hate * 0.8 = 1 hate (check)

Now, if we try and renormalize, like you did, we get:
3.28 / 1.25 = 2.624 healing per damage
if we redefine 1 damage = 1 aggro, then 1 healing = 0.38 aggro

This is about 20% off from the 3 healing per damage figure you gave. I like the idea of trying to reduce these caclucations to their basic elements, though, since it may give some better insight into what is going on inside the code. If we are looking for the "fundamental unit of aggro", however, we may need to look elsewhere entirely. Tests have shown that PW:S generates only about half as much aggro as a comperable shield, so that would put it somewhere in the neighborhood of 5 shielding per damage (or about 0.2 aggro if 1 damage = 1 aggro).

Quote:Ball Park internal "hidden" hate, if 1 dmg = 1 hate:
(I've also removed Defiance, so add that back if you talented for it)

These numbers should all still be fine since they are just the result of redefining aggro from 1 healing = 1 aggro => 1 damage = 4.1 aggro, to 1 damage = 1 aggro (and, therefore, 1 healing = 0.24 aggro)

I think its interesting that your numbers seem much more "round" which may shed some light on exactly what's going on behind the scenes. I doubt Blizzard would tweak these numbers a couple of points either way, so I'm guessing Heroic Strike might be 150, Cleave 100, etc.

As an asside:
I think it would be interesting to write an aggro tracking mod to try and solve for these aggro numbers as people play. The only problem I see, over than the enormous liner equation solving required, would be to keep track of separate mobs and who each of them is attacking. Does anyone know if this is even possible? Are there WoW modding sites yet on par with the Phrozen Keep (D2 modding) where the expert modders hang out? I'd like to try some WoW modding, but I need for dig up more info and tear myself away from actually playing the game ;-)
Reply
#12
chippydip,Jul 18 2005, 08:04 AM Wrote:I don't think these numbers are correct. The effects we are trying to remove are:
1) Subtlety - 20% threat reduction on heals
2) Defiance - 15% threat bonus while in Defensive Stance
3) Defensive Stance - 10% threat bonus while active
[right][snapback]83686[/snapback][/right]

Good call!! I missed that Cop used Defensive Stance for his tests. The
numbers should now be:

1 Untalented_hate*1.20*1.15*1.10 = 1 Talented_hate

Which is
4.1/(1.20*1.15*1.10) = 2.7009 or =~ 2.7

1pt dmg to mob by warrior = 2.7 healing to warrior Not in defensive stance

(My old 1 dmg = 3 heal, is still is close if your warrior is in defensive stance)


This leads back to Chippydip's retorical question: some of these numbers look
pretty even and not twisted past the hundred's place.

My real goal though in refactoring the numbers was my mage Yuri, trying to find
when it was ok to start dealing damage and at what rate. I would love to see
this experiment repeated with a mage/priest to see the hidden hate in mage spells.

Terenas
Yuri - Mage/Arcane 85 Undead
Thirdrail - Shaman/Resto 85 Tauren
Vicstull - Rogue/Subtlety 85 Troll
Penten - Priest/Discipline 85 Blood Elf
Storage guild Bassomatic
Reply
#13
Xame,Jul 18 2005, 05:18 PM Wrote:1 Untalented_hate*1.20*1.15*1.10 =  1 Talented_hate

This brings up an interesting issue that I just glossed over: how do the bonuses from defensive stance and defiance stack? Are they multiplicative as Xame assumed, or are they simply added (like I originally assumed)?

Granted, its not a big difference (1.15 * 1.1 = 1.265 vs. 1.0 + 0.15 + 0.1 = 1.25), but it would be interesting to find out.

I agree that it would be interesting to expand this to other classes. I wonder if the next version of CTRA will have an auto-spell canceling feature if your spell might pull aggro off the tank? :blink: Aggro tracking could also let you live on the edge by trying to keep your aggro as close to the warriors as possible (max dps) without actually pulling the mob... better hope that next fireball doesn't crit ;)
Reply
#14
chippydip,Jul 18 2005, 01:55 PM Wrote:I agree that it would be interesting to expand this to other classes. I wonder if the next version of CTRA will have an auto-spell canceling feature if your spell might pull aggro off the tank?  :blink: Aggro tracking could also let you live on the edge by trying to keep your aggro as close to the warriors as possible (max dps) without actually pulling the mob... better hope that next fireball doesn't crit  ;)
The application of this stuff to UI mods crossed my mind, although I was thinking more along the lines of adapting damagewatch as a tank to whisper warnings to players getting too close to the aggro line. Just have a way to reset each time you switch mobs (or otherwise wipe aggro) and when you use certain skills add their damage equivalent (equivalent for non-talented classes). Have an option to altert party members once every 30 seconds max if their raw damage total is within 10% of your skill/talent/stance adjusted total. I would only use the announce option on encounters where a few seconds of aggro on someone else is particularly dangerous (i.e. mobs with deadly cone AoE that have to be faced away from the group).

Then again, holding the aggro bar as high as I can and letting people adapt their gut feeling as to how far they can push their dps has been working pretty well up 'till now. Otimizing my hotbar layout / keyboard shortcuts for efficient PvP play is probably higher priority.
Reply
#15
chippydip,Jul 18 2005, 10:04 AM Wrote:-clip-

Now, if we try and renormalize, like you did, we get:
3.28 / 1.25 = 2.624 healing per damage
if we redefine 1 damage = 1 aggro, then 1 healing = 0.38 aggro

-clip-
[right][snapback]83686[/snapback][/right]

Messy, messy numbers here. But one is almost a 'magic number'. Keep in mind that even on server they are going to need to go for execution speed and data storage efficiency as they did in Diablo2. This means that most factors are going to be tracked internally in powers of 2 and you want to find the lowest practical factor to be your base hate increment; better to have all else be multipling or adding factors instead of dividing or subtracting for speed efficiency.

Now the magic number is X.624 or almost exactly X and 5/8. Considering the methods that apparently used for generating the base data and that you are working with only the digested form of that data, this should be close enough to see some of what may be going on behind the curtain. It appears that they are tracking fractional amounts using a 1/8 scale as opposed to Diablo2's 1/256 scale of tracking fractional amounts (the game could be using a finer scale for some things, but this is the best tha can be seen from this set of data). This 1/8 scale also makes it easier for the game to incrementally track some of the dot effects that do not readily break down to pure consistent integers across the intire spread of the effect.

With the view of it being a 1/8 scale we get instead of
2.624 healing per damage
a more integer amount of
21 healing per 8 damage

and this
1 damage = 1 aggro, then 1 healing = 0.38 aggro
would instead be
1 damage => 1 aggro and 1 healing => 3/8 aggro
with the calculation to get that level being
(healing*3)with a bitshift left of 3.

This can be an odd way of looking at for many readers here, but it can actually work out rather efficently for the way the code handles and tracks this sort of thing. What would work out even better though is to define the base factor as being 1 hate and then apply factors such as this to damage and healing:
physical damage *8
healing *3

In an example then this method a warrior in battle stance and just using a normal weapon swing that does 100 damage, would make his hate=100*8=800.

A healer (no talents to modify hate) would then need to do an amount of healing that exceeded that 800 hate to pull the aggro off the warrior. This then would be 800/3=266 +1 to exceed.

Similar modifications would need to be done to those 'hidden hate values'. Some of the unusal ones like 41 would then be 328 on this scale, making them closer to a 325 value that may look more reasonable than some odd number like 41.

I will let some of you hash this over some to see if it starts making some of the information fit better and giving values more in the way a human would end up assigning them to a skill.
Reply
#16
Ruvanal,Jul 18 2005, 02:50 PM Wrote:Keep in mind that even on server they are going to need to go for execution speed and data storage efficiency as they did in Diablo2.  This means that most factors are going to be tracked internally in powers of 2 and you want to find the lowest practical factor to be your base hate increment; better to have all else be multipling or adding factors instead of dividing or subtracting for speed efficiency.

[etc...]
Wow Ruvanal! Great insight!

If someone processes all this information before I do, could you try re-generating a "cliffnotes" with hate expressed in the more universal measurement units?

I would like to set up a controlled experiment to try to replicate Cop's results and perhaps collect more data on a few other skills (like Whirlwind). I have a second box with a druid toon set up (albeit a level 20 druid), so I might be able to get some non subtlety numbers and see if they fit with predictions.

One real tricky thing would be measuring how much "hate" a knockback or stun reduces. I'm fairly certain it's a discrete reduction and not a total wipe.
Reply
#17
Olon97,Jul 18 2005, 09:27 PM Wrote:I would like to set up a controlled experiment to try to replicate Cop's results and perhaps collect more data on a few other skills (like Whirlwind). I have a second box with a druid toon set up (albeit a level 20 druid), so I might be able to get some non subtlety numbers and see if they fit with predictions.
[right][snapback]83744[/snapback][/right]

One thing to keep in mind is that most of the data collection I have seen happening on this so far has been using warriors and priests for the testing. That factor of *3 on healing that I used may in fact be a factor only for certain healing skills or only for priest healing skills. I could easily see them setting up different factors depending on the source of the effect, but I doubt they did that. Most likely there is a database table that has 2 fields (or more) for giving a scaling factor for the variable part of the effect (*3 for healing, *8 for physical melee damage, etc.) and another for a flat +hate from just using the skill on the target (sheeping, Mind Control, Thunder Clap for the slowing effect that is not damage, etc.). Also keep in mind that many of these tests are usually getting done with the capped characters that frequently use the highest rank of a skill; the lower ranks may have different +hate effects on them.
Reply
#18
Ruvanal,Jul 18 2005, 06:22 PM Wrote:One thing to keep in mind is that most of the data collection I have seen happening on this so far has been using warriors and priests for the testing.  That factor of *3 on healing that I used may in fact be a factor only for certain healing skills or only for priest healing skills.  I could easily see them setting up different factors depending on the source of the effect, but I doubt they did that.  Most likely there is a database table that has 2 fields (or more) for giving a scaling factor for the variable part of the effect (*3 for healing, *8 for physical melee damage, etc.) and another for a flat +hate from just using the skill on the target (sheeping, Mind Control, Thunder Clap for the slowing effect that is not damage, etc.).  Also keep in mind that many of these tests are usually getting done with the capped characters that frequently use the highest rank of a skill; the lower ranks may have different +hate effects on them.
Remedy on the Blizz forums did some tests that clearly showed no aggro difference between the various priest healing skills (pw:s excepted but that's not really a true heal). I think I recall seeing priest untalented heal aggro being shown to be identical to druid heal aggro, but my memory is fuzzy as to the source of that one.

Would be nice to mix up the classes on tests a bit to be safe. Good point about ranks having different bonus values - Shield Slam rank 1 had the same bonus value as rank 4, but that's just a single case. I would be surprised if rank 1 revenge had the same bonus as the final rank revenge. Just figuring these things out for the sake of capped chars is a start, at least for folks like me who are reaching a majority of their "played" time on a capped char. :D
Reply
#19
Olon97,Jul 19 2005, 12:31 AM Wrote:Remedy on the Blizz forums did some tests that clearly showed no aggro difference between the various priest healing skills (pw:s excepted but that's not really a true heal). I think I recall seeing priest untalented heal aggro being shown to be identical to druid heal aggro, but my memory is fuzzy as to the source of that one.

Would be nice to mix up the classes on tests a bit to be safe. Good point about ranks having different bonus values - Shield Slam rank 1 had the same bonus value as rank 4, but that's just a single case. I would be surprised if rank 1 revenge had the same bonus as the final rank revenge. Just figuring these things out for the sake of capped chars is a start, at least for folks like me who are reaching a majority of their "played" time on a capped char. :D
[right][snapback]83762[/snapback][/right]

What about when improved revenge procs for a stun, or concussion blow? Any thoughts on that?
--Mav
Reply
#20
Ruvanal,Jul 18 2005, 10:50 PM Wrote:Messy, messy numbers here.  But one is almost a 'magic number'.  Keep in mind that even on server they are going to need to go for execution speed and data storage efficiency as they did in Diablo2.  This means that most factors are going to be tracked internally in powers of 2 and you want to find the lowest practical factor to be your base hate increment; better to have all else be multipling or adding factors instead of dividing or subtracting for speed efficiency.

Agreed. I thought about going into this, but didn't want to get too technical, especially without more data to narrow things down. Its too bad we can't just look at the code like we could with D2.

At this point I think it may be less of a sure bet that the servers are using fixed-point math. The performance difference has narrowed considerably since the D2 days. I agree, though, that even if floating point is being used, the numbers should still come out to nice integers for "human" reasons ;)

The only problem I see with trying to fine the "basic unit of hate" is that it will complicate research terribly each time the more data is discovered and the base unit is refined. If all damage ends up generating the same amount of hate, it might be easier to just define some arbitrary unit, like 1 damage = 1 hate, and be done with it.

Quote:Now the magic number is X.624 or almost exactly X and 5/8.  Considering the methods that apparently used for generating the base data and that you are working with only the digested form of that data, this should be close enough to see some of what may be going on behind the curtain.  It appears that they are tracking fractional amounts using a 1/8 scale as opposed to Diablo2's 1/256 scale of tracking fractional amounts (the game could be using a finer scale for some things, but this is the best tha can be seen from this set of data).  This 1/8 scale also makes it easier for the game to incrementally track some of the dot effects that do not readily break down to pure consistent integers across the intire spread of the effect.

Yes, this definitely looks like we are off by a power of 2, but I think its probably larger than 8ths...

Quote:With the view of it being a 1/8 scale we get instead of
2.624 healing per damage
a more integer amount of
21 healing per 8 damage

and this
1 damage = 1 aggro, then 1 healing = 0.38 aggro
would instead be
1 damage => 1 aggro and 1 healing => 3/8 aggro
with the calculation to get that level being
(healing*3)with a bitshift left of 3.

I see the "healing*3" as being problematic since testing indicates that PW:S is about 1/2 the aggro per point as normal healing. We also have Paladin self-heals which are supposed to generate less aggro per point that normal heals IIRC. With only 2/8 and 1/8 as lower values, this clearly seems too small an increment.

If they are indeed using fixed-point math, I wouldn't at all be surprised if they are using the same fixed point library they used in D2. This would mean 256th which is a fairly common choice in fixed-point libraries. The only way to be sure, however, is to find some tests where you can detect the rounding errors and imply the precision from that. As of now, we don't have nearly enough data to make any definite conclusions, but my money's on 256th.

Quote:This can be an odd way of looking at for many readers here, but it can actually work out rather efficently for the way the code handles and tracks this sort of thing.  What would work out even better though is to define the base factor as being 1 hate and then apply factors such as this to damage and healing:
physical damage *8
healing *3

In an example then this method a warrior in battle stance and just using a normal weapon swing that does 100 damage, would make his hate=100*8=800.

Even this simple example shows a possible weakness with 1/8 units, depending on how aggro bonuses are calculated. Is the base factor modifed in defensive stance like: 8 * 1.1 = 8.8 which rounds to 8 (remember, in the D2 fix-point world, remainders were always truncated). This means defensive stance would have no effect on aggro. Now, it doubt this is really the case, but I don't have enough info to even be sure of this. Even qualitatively, I think it would be quite difficult to see the effect of 10% extra hate when playing. More likely, any differences are a result of 10% less damage and, therefore, 10% less healing. If Defiance is used, a 25% bonus would be much more noticeable, but it would also effect the calculations with even these coarse numbers (8 * 1.25 = 10).

Quote:A healer (no talents to modify hate) would then need to do an amount of healing that exceeded that 800 hate to pull the aggro off the warrior.  This then would be 800/3=266 +1 to exceed.

Similar modifications would need to be done to those 'hidden hate values'.  Some of the unusal ones like 41 would then be 328 on this scale, making them closer to a 325 value that may look more reasonable than some odd number like 41.

I will let some of you hash this over some to see if it starts making some of the information fit better and giving values more in the way a human would end up assigning them to a skill.
[right][snapback]83734[/snapback][/right]

I definitely look forward to digging deeper into this subject. What we really need is a data-gathering mod so that we have some numbers to cruch offline. With the new targettarget functionality it should be possible to track aggro on a single mob and detect when they switch their target. Things become more complicated when trying to track multiple mobs, however, since I've heard there is no way to keep track of different mobs with the same name?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)