+ Reply to Thread
Results 1 to 13 of 13

Thread: Incoming Hit Distribution?

  1. #1
    Join Date
    Jun 2009
    Posts
    226

    Incoming Hit Distribution?

    The work I've done over the past few days on AP reduction has got me thinking about how incoming melee distribution works.

    I never took Calc, and I am sure the base math is over my head but I am going to attempt to explain what I mean.

    We're going to use a simple level 80 Jormungar as an example.

    Via beast lore we see that the melee damage range is 362 - 528 Damage. Testing with the attack debuffs seems to indicate that the range is scaled due to the fact the damage range decreases with attack power reduction in a non even fashion (IE Minimum hit drops more then maximum)

    It seems logical that NPCs can only hit certain predictable values in a given range based on their AP. In EQ this was a flat value plus [1-20]multipled by a second value. This would dertmine all possible values a NPC could hit a player for, with the curve adjusted by Armor. WoW must use a similar formula, but I don't think the curve is adjusted by armor (tho it may be) but possibly some other stat such as Defense or player level.

    My theory is that the Minimum and Maximum of the range are the Curves low points, and the mid value of the curve would be about 445 based on the above example. Despite the RNG determining exact hits, we should see most hits fall to the center of the curve rather then the outsides when given a large enough sample size. Now, because the range adjusts for attack power, this may be consistent between various levels of attack power. What isn't known in this case however, is how NPC AP interacts to player stats. What I am attempting to figure out is if a NPC with lower Attack power will hit to the left of the range (ie more often for minimum values) rather then the suspected center of the range given the correct player level and whatever defensive stat the formula works with.

    The only way I can see to test this is to have someone get hit a few thousand times, in order to minimize RNG messing with results, then plot all the values taken onto a graph. It'd be important for whatever class does this to not use Block or any effect which absorbs damage, since you want to take full damage for an extended amount of time to get real values.

    I am not sure if this line of logic has ever been explored in WoW, but there is a lot of focus on what people are hit for after armor. I haven't ever seen discussion on what could be done to influance the actual value of hits within a given NPC's range to the lower end of the spectiurm and am pretty curious how this works in WoW.

    -Fenier

  2. #2
    Join Date
    Oct 2008
    Posts
    4,930
    Quote Originally Posted by Fenier View Post
    My theory is that the Minimum and Maximum of the range are the Curves low points, and the mid value of the curve would be about 445 based on the above example. Despite the RNG determining exact hits, we should see most hits fall to the center of the curve rather then the outsides when given a large enough sample size.
    Some of your language is a little mushy. But maybe I can help based on what I know of the game's roll systems and damage mechanics.

    First off, on the damage dealing end (as damage receiving is a separate set of reactions/modifiers). There are 4 important main components:
    1.) Base damage = the flat value that the hit will generate regardless of any other buffs present.
    2.) Random damage range = with most physical hits and some magic hits there will be a random range attached, this can be pretty big for some bosses (XT is something around 10k it seems).
    3.) Attack Power = I'm not 100% sure the factor is the same as for players, but I don't know why it would be different. AP is divided by 14 and added to the *dps* (not the damage range).
    4.) Crit flag = if yes, double damage, if no, no bonus damage.

    We can ignore #4 as a tank who should be uncrittable. For #3, bosses have a set AP value, I haven't looked into it a lot either, the reason being that it is generally expected with the saturation of buffs that someone will be maintaining demoralizing shout/roar or another similar AP debuff (hunter pets, lock curse, etc). It's not a variable, it's there or it isn't so it's not vital to understand the direct value, just know that it is a reduction in your damage taken and is often not at the expense of anything else (some classes it is, like lock curses). The dps is based on the average value of the damage range (i.e. midpoint between min and max). This is where your language is a little mushy. If the damage dealt is 2000 + (100 to 500) the average will be 2300, but there will not statistically be any more hits at 2300 than 2500, it's an equal chance of any of the random values. The random damage range is always present, and like the base damage, will not be affected by anything, only the AP component which is added on top of those values is significant. To find dps as opposed to damage, you would use the base swing speed (before modifiers such as haste/de-haste) with the average damage value. Divide AP by 14, and add it to that value. That will tell you how much AP is adding to it.

    For some sample math:
    Boss A = 10,000 base damage, random damage range 3000-7000, base swing speed is 2.0 seconds, AP is 2100

    Average swing before AP is 15,000, speed is 2.0 sec, so dps is 7500 dps. AP divided by 14 is 150, added to the dps is 7650, that will be 15300 damage per swing.

    If you have a shout/roar that reduces boss AP by 700 (random numbers for clean math), the boss's ap now only adds 100 to the dps instead of 150, so the final hit value will be 15200, so the debuff reduced the swing damage by 100.

    I'm not sure what the actual AP values are, nor that the exchange is the same as it is for players, or applied the same way, but that IS the equation for players, for how what that may help.

    I want to say I've seen charts for Boss AP values, but I can't seem to find them right now (silly crappy work computer).
    The (Old) Book on Death Knight Tanking
    The New Testament on Death Knight Tanking
    -----------------------------------------
    Quote Originally Posted by Horacio View Post
    Who f-ing divided by zero?!?

  3. #3
    Join Date
    Jun 2009
    Posts
    226
    So it would be then that..

    DamageBase + Random[X-Y] + NPCATK = Mob Hit

    The question there is, is the Random Range every value in that range, or is it based on a set of predetermined values, such as in 5s, 10s etc.

    Even if the Random Range is every value you should still see a slope or curve when plotting out incoming hits because it's unlikely that even over a sizable sample it would hit each value in the random range a even number of times.

    This Slope or Curve should theoretically be influenced by some stat of the player. In considering this I believe it to be something similar to PlayerLevel+Defense, which may influence the random range to higher or lower values. If the equation was balanced, then the vast majority of hits you see should be exactly center of the damage range, and not favoring one side.

  4. #4
    Join Date
    Dec 2008
    Posts
    457
    Quote Originally Posted by Fenier View Post
    DamageBase + Random[X-Y] + NPCATK = Mob Hit
    Like Satorri said, the attack power contribution is added to DPS, not to damage. The formula is DPS = Base DPS + AP/14. For actual damage you'd have to use Damage = (DPS + AP/14) * Speed.

    That being said, traditionaly games use a flat random number generator for this sort of calculations. So the "distribution curve" would actually just be a flat line from the min hit to the max hit.

  5. #5
    Join Date
    Jun 2009
    Posts
    226
    Does anyone happen to know if indeed WoW uses a flat line or a curve before I sit and let something wail on me for an hour or so and figure it out? Rather avoid that if at all possible heh.

    I know of other games which did use Curves or Slopes, which is why I even question it to begin with.

  6. #6
    Join Date
    Dec 2008
    Posts
    457
    I'm almost sure it's a flat line. It's easy to test, remove all gear except your weapon, remove all talents, and do a couple of thousand hits on a dummy while recording combat log. The log can be parsed to sort the recorded damage values, in order to verify the distribution, and to also verify whether the discrete values for damage done skip integer values or if there is an equal probability for each integer value from min to max.

    Edit: If you do plan on testing it, I suggest using a low level weapon, to reduce the range of possible damage values. If you need help parsing the log to sort the values, I can probably help you with that.

  7. #7
    Join Date
    Jan 2009
    Posts
    81
    Mob damage is bit different than players. There's a base damage, the modifier from AP, and then a flat multiplier that varies based on the mob status and level (elite/boss, etc). This last number is the one that blizz tweaks when they want to globally change PVE difficulty.

    The existence of this multiplier is why AP reducing buffs like demo shout give so much more relative damage reduction on bosses than on players.

  8. #8
    Join Date
    Jun 2009
    Posts
    226
    Quote Originally Posted by Molohk View Post
    I'm almost sure it's a flat line. It's easy to test, remove all gear except your weapon, remove all talents, and do a couple of thousand hits on a dummy while recording combat log. The log can be parsed to sort the recorded damage values, in order to verify the distribution, and to also verify whether the discrete values for damage done skip integer values or if there is an equal probability for each integer value from min to max.

    Edit: If you do plan on testing it, I suggest using a low level weapon, to reduce the range of possible damage values. If you need help parsing the log to sort the values, I can probably help you with that.
    Since Player and NPC damage function differently, wouldn't I want to have a static armor value and be hit a few thousand times, as opposed to hit something?

  9. #9
    Join Date
    Jan 2009
    Posts
    81
    Quote Originally Posted by Fenier View Post
    Since Player and NPC damage function differently, wouldn't I want to have a static armor value and be hit a few thousand times, as opposed to hit something?
    I strongly doubt that blizz uses a different RNG for NPC base damage than player base damage, but anything is possible. I don't know of any testing done on it.

  10. #10
    Join Date
    Dec 2008
    Posts
    457
    Sure that'd be better, so we don't have to assume they use the same kind of RNG. The problem is that you want to get hit a lot, so avoidance is bad for testing and you can't really go against low level mobs, and if you go against similar level mobs you'll probably need some sort of healing to keep you alive for long enough to get a valid sample. And you'd have to make sure the heals you get don't have some sort of buff that changes your taken damage (grace, inspiration, divine aegis, etc.).

    Might be just more practical to assume it's the same RNG and test it on a dummy, and then do a smaller test with incoming damage to match findings.

  11. #11
    Join Date
    Jan 2009
    Posts
    81
    I believe that armor reduction scales with level, so you'll want to go against a variety of levels of mob if you want to confirm/compensate for that. Avoidance isn't a problem, just place your back to the mob and get some coffee.

  12. #12
    Join Date
    Dec 2008
    Posts
    457
    Yes, armor mitigation depends on the attacker's level, but the formula is known and as long as armor stays constant you can easily figure out unmitigated damage. Do avoid any other damage reductions, like defensive stance.

  13. #13
    Join Date
    Oct 2008
    Posts
    4,930
    Simply put Fenier, while Blizz's equations are not transparent, I can say with a great deal of certainty that there is no curve or player stat that modifies the random damage portion of a mob's attack. In order for that to be the case they would have to add a totally unnecessary complication to the formulae.

    As a programmer, a key goal in creating efficient and minimally process-intensive programs is to remove unnecessary complications like that.

    The base damage and random value are fixed, the AP portion can be modified with AP reducing skills, and as Morelore smartly pointed out, there is clearly a damage scaling factor based on level differences. Beyond that the burden of reducing the damage lies in your own armor, % damage reduction, and the other fundamental survival mechanics, not in some obscure stat-influenced effect on a portion of the mob/server-side damage calculation.
    The (Old) Book on Death Knight Tanking
    The New Testament on Death Knight Tanking
    -----------------------------------------
    Quote Originally Posted by Horacio View Post
    Who f-ing divided by zero?!?

+ Reply to Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts