If the DPR is the same however (and neither build tends to dramatic overkill), the number of rounds it will take you, on average, to kill one opponent of unknown hit points within a range of certain specifications seems to be the same.
I've been considering the 50-50 chance, equal damage from MS/HR scenario for a couple of reasons - first, you suggested it; and second, the arithmetic is much easier. Here, let me try a couple of sample damage outputs with equal DPR.
Case one: 75% chance to hit, 14 damage on a hit Case two: 50% chance to hit, 6 damage on a miss, 15 damage on a hit Case three: 75% chance to hit, 3 damage on a miss, 13 damage on a hit
All of these cases have identical DPRs of 10.5. I'm going to assert that if these three guys fight one monster with 42 hit points, then one with 43, then one with 44...and so on, until they're fighting one monster with, say, 55 hit points, that the average number of rounds it will take each of them to kill each of the monsters in succession will be incredibly close, but that whichever one of them has the highest 'overkill' total (probably case one, but I'm not sure) will be very slightly behind.
I'm not going to work it out, however, because it would be sort of hard, because I'm actually convinced, and because you probably wouldn't trust my numbers anyway. It's certainly true for the 50-50 hit possibilities that I examined. If someone else feels like taking the time to work something like that out, and finds that I'm wrong, I'd be happy to re-examine my assumptions.
Just saw this thread recently, sorry to resurrect it. This calculation isn't that hard to do. These calculations get harder (take longer) when the monster has more HP and/or you aren't assuming that the player does average damage and he rolls a bunch of damage dice at a time.
Your intuition that the answers here are very similar, but that case 1 is slightly worse, is correct. The average rounds to kill a defender who is equally likely to have 42 through 55 (inclusive) HP is:
Case 1: 5.2381 rounds Case 2: 5.1645 rounds Case 3: 5.152 rounds
If the attacker in case 1 had even 1 miss damage (bringing his DPR up to 10.75), he'd kill in an average of 5.1111 rounds, making him the quickest-killing combatant. So the edge for cases 2/3 here is very slight compared to the benefits of increased DPR.
As you might expect, the variance of the damage in a round for case 3 is the lowest of these three cases, and the variance of the damage for case 1 is the highest. It’s not surprising that lower variance is associated with quicker average kills, holding DPR constant.
Just saw this thread recently, sorry to resurrect it. This calculation isn't that hard to do. These calculations get harder (take longer) when the monster has more HP and/or you aren't assuming that the player does average damage and he rolls a bunch of damage dice at a time.
[...]
As you might expect, the variance of the damage in a round for case 3 is the lowest of these three cases, and the variance of the damage for case 1 is the highest. It’s not surprising that lower variance is associated with quicker average kills, holding DPR constant.
I get the same results. 75% hit with 12, 6 on miss actually beats the higher DPR 14 on hit, 1 on miss option, so it can indeed have a real impact - albeit very small.
When it comes to actual implementations of these general principles, it's much trickier of course; Marked Scourge doesn't trigger on the first hit, and only once a round (particularly the latter is hard to model fairly, since it's so dependent on the power you use).
I get the same results. 75% hit with 12, 6 on miss actually beats the higher DPR 14 on hit, 1 on miss option, so it can indeed have a real impact - albeit very small.
Indeed, all of the cases here are low variance by having significant miss damage relative to hit damage and/or a high chance to hit.
When I run a "high variance" case with an attacker with a 55% chance to hit (including a 5% chance to crit), dealing 1d12+13 on a hit, plus an extra 1d12 on a critical, that attacker averages 5.2169 rounds to kill the 42-55 HP defenders. His average damage is 11.325, 7.9% better than the 10.5 damage average above, but the high variance works against him, and he kills more slowly than in cases 2/3 above.
When I run a "high variance" case with an attacker with a 55% chance to hit (including a 5% chance to crit), dealing 1d12+13 on a hit, plus an extra 1d12 on a critical, that attacker averages 5.2169 rounds to kill the 42-55 HP defenders. His average damage is 11.325, 7.9% better than the 10.5 damage average above, but the high variance works against him, and he kills more slowly than in cases 2/3 above.
Crits in general are "inefficient" in that sense.
And it's actually worse than it looks from this analysis. This analysis looks at the expected number of rounds until you kill something, when we're really interested in can I kill it before it kills me? Usually, you have a high percentage of success at killing something before it kills you. For a completely off the wall example, you'd have an expected kill time of say 5 rounds, and the monster would kill you in 9 usually, and you'd expect to kill it before it kills you with 99.9% accuracy - but the point is, even if your expected time to kill with a higher DPR, higher variance build is identical, the spread of those "times to kill" will be wider - so your chances of an exceptionally fast kill will rise (mostly boring), but your chances of an exceptionally slow kill will rise too (oops, you just died). In short, the cost to the character of deviations in kill time isn't nearly symmetric across the expected value.
Really, it'd be more generally interesting to compute not the expected number of rounds, but the number of rounds within which you can expect to kill the opponent in, say, 95% of all cases - such a metric would reflect not just DPR, but also reliability of that DPR - probably about the best you can do without also modeling a real opponent and other factors.
Really, it'd be more generally interesting to compute not the expected number of rounds, but the number of rounds within which you can expect to kill the opponent in, say, 95% of all cases - such a metric would reflect not just DPR, but also reliability of that DPR - probably about the best you can do without also modeling a real opponent and other factors.
I agree with your general analysis (the underlying idea: players win almost every fight, so variance in general works against them), but this metric seems excessively conservative.
For example, the d12+13 (high crit) attacker I describe above requires 9 rounds to have a >=95% chance to kill the 42-55 HP defenders (barely clocking in at 95.13% to kill in 9 rounds or less).
By comparison, a character with 8 hit damage, 6 miss damage, and a 75% chance to hit requires 8 rounds to have a (well-above the 95% cutoff) 99.74% chance to kill the 42-55 HP defenders. This example is unrealistic, because no character has miss damage this close to hit damage, but it illustrates the point: though I wouldn't consider this character the better attacker in this situation (6.9016 average rounds to kill vs. 5.2169 in the above case), under this metric he is superior.
Using an exact percentile cutoff also mean that your result is discontinuous in your inputs; a small change can increase or decrease your 95-percentile rounds by 1, a large change in the result.
An easy and more continuous measure would be something like: Variance-adjusted "kill effectiveness score" = Average number of attacks to kill defender + k*standard deviation of that number of attacks to kill the defender. Standard deviation isn't based on an exact model of the increasing penalties for killing a defender more slowly; of course, essentially no statistic is. Then you just have to pick a value for k. Eyeballing a few numbers suggests k should be something like 0.2 to 0.5.
Great post . Quite a few computations there - I'm curious, how are you computing these numbers - simulation, or some (semi-)closed form?
ElricEN wrote:
I agree with your general analysis (the underlying idea: players win almost every fight, so variance in general works against them), but this metric seems excessively conservative.
I suppose in a battle there are several players, and it's quite possible to win the overall fight while "losing" one such confrontation. But on the overall battle, I'd like 95% chances of victory, I think. What would be comparable on an individual level?
You could perhaps very roughly approximate it as 6 individual fights, and we wish to ensure that the probability of 4 or more resulting in losses is less than 5%. 6choose4*p(loss)^4 < 5%, then p(loss) < 24%, or p(win) > 76%. Of course, this is so vague, I don't know if it means anything at all. With a 37% loss rate, the chance of losing the "first" three consecutive confrontations is 5%, which is definitely an upper bound to the acceptable loss rate, I'd think.
For example, the d12+13 (high crit) attacker I describe above requires 9 rounds to have a >=95% chance to kill the 42-55 HP defenders (barely clocking in at 95.13% to kill in 9 rounds or less).
By comparison, a character with 8 hit damage, 6 miss damage, and a 75% chance to hit requires 8 rounds to have a (well-above the 95% cutoff) 99.74% chance to kill the 42-55 HP defenders. This example is unrealistic, because no character has miss damage this close to hit damage, but it illustrates the point: though I wouldn't consider this character the better attacker in this situation (6.9016 average rounds to kill vs. 5.2169 in the above case), under this metric he is superior.
One probable reason the lower damage character looks "too good": we're not including for variance in the monster's damage output. This means that a 100% certain damager will be computed to have a very "safe" 95% cutoff, but this safety is illusory: in actual fact, the monster may simply crit twice and never miss and you'll still not kill the monster fast enough.
Using an exact percentile cutoff also mean that your result is discontinuous in your inputs; a small change can increase or decrease your 95-percentile rounds by 1, a large change in the result.
An easy and more continuous measure would be something like: Variance-adjusted "kill effectiveness score" = Average number of attacks to kill defender + k*standard deviation of that number of attacks to kill the defender. Standard deviation isn't based on an exact model of the increasing penalties for killing a defender more slowly; of course, essentially no statistic is. Then you just have to pick a value for k. Eyeballing a few numbers suggests k should be something like 0.2 to 0.5.
That does look simpler. Based on the rough guesstimation of acceptable loss, I'd ballpark k~1 - if the monster's variation were included. Without that variation, I'm not so sure, (no time to test this today, unfortunately...)
But, make sure that if you do this, the standard deviation you're measuring isn't the standard deviation of the rounds needed to kill a monster of 42-55 - chosen randomly. Otherwise, you're including variance in the monster hit point total, which is pretty meaningless, right?
Great post . Quite a few computations there - I'm curious, how are you computing these numbers - simulation, or some (semi-)closed form?
Closed form. Hopefully this is a good explanation: the key is that the probability distribution of the damage that the player deals is the same, no matter what the monster’s current HP is. Therefore, you calculate the player’s exact distribution of damage results given all combinations of attack/damage rolls. From there, you set up a Markov transition matrix where dealing damage >= the monster’s HP is an absorbing state, and this plus the initial condition (monster starting HP) lets you compute the average.
The computational issues are: as the player rolls more and more dice for attack/damage, calculating an exact distribution becomes exponentially more difficult (for example, this would be a nightmare for an epic character with two Waraxes, Dual Strike, Deadly Axe, Reckless Attacker and Two-Weapon Opening). The simplest way to calculate the average/standard deviation of the number of attacks involves inverting a matrix of size monster HP x monster HP, which means you’d much rather work with a defender with 50 HP than 1500 HP.
One probable reason the lower damage character looks "too good": we're not including for variance in the monster's damage output. This means that a 100% certain damager will be computed to have a very "safe" 95% cutoff, but this safety is illusory: in actual fact, the monster may simply crit twice and never miss and you'll still not kill the monster fast enough.
Right, good point. Even if you were only concerned with maximizing your chance to win a 1-1 fight, the monster has variance to its damage as well. In this scenario, such variance favors the monster (holding its DPR constant), since it’s expected to lose the fight.
That does look simpler. Based on the rough guesstimation of acceptable loss, I'd ballpark k~1 - if the monster's variation were included. Without that variation, I'm not so sure, (no time to test this today, unfortunately...)
But, make sure that if you do this, the standard deviation you're measuring isn't the standard deviation of the rounds needed to kill a monster of 42-55 - chosen randomly. Otherwise, you're including variance in the monster hit point total, which is pretty meaningless, right?
Another very good point. You should calculate the average attacks + k*standard deviation for each of the 14 monster HP totals, then average this score over them. You can’t do it the easier (and incorrect way): calculate the average and standard deviation over all 14 HP totals, which leads to the standard deviation looking much higher than is actually the case (in fact, I was lazy and was doing it this way so far :D).
I think that k=1 is too high. Consider the following absurd case: you have a PC who either kills the monster in 1 round or in 11 rounds, with equal probability. So your average rounds to kill is 6. Your standard deviation is trivially 5, since you’re always 5 away from the mean, making the variance 25. Average + standard deviation=11. By comparison, consider another character who always kills on round 11. The standard deviation there is 0 and the average is 11. However, the first character is strictly (and greatly) superior to the second in kill rate, so the metric you are using shouldn’t rate them equally.
Closed form. Hopefully this is a good explanation: the key is that the probability distribution of the damage that the player deals is the same, no matter what the monster’s current HP is. Therefore, you calculate the player’s exact distribution of damage results given all combinations of attack/damage rolls. From there, you set up a Markov transition matrix where dealing damage >= the monster’s HP is an absorbing state, and this plus the initial condition (monster starting HP) lets you compute the average.
The computational issues are: as the player rolls more and more dice for attack/damage, calculating an exact distribution becomes exponentially more difficult (for example, this would be a nightmare for an epic character with two Waraxes, Dual Strike, Deadly Axe, Reckless Attacker and Two-Weapon Opening). The simplest way to calculate the average/standard deviation of the number of attacks involves inverting a matrix of size monster HP x monster HP, which means you’d much rather work with a defender with 50 HP than 1500 HP.
Interesting ;-). I just ran a simulation, though I do have a little tool to construct exact distributions via combining simpler distributions, and I did consider using a recursive solution via dynamic programming, along the lines of a previous poster, something like:
roundsToKill(hp) = if hp==0 then 0 else 1 + sum-over-dmgX[ p(dmgX)*roundsToKill(hp-dmgX) ]
...with some rearrangement, you can avoid the dmgX==0 term, and compute recursively (with caching of course).
Which, now that I think of it, perhaps could indeed compute the variance as well. This solution is obviously less general, but it's computationally faster (the gain coming from the fact that a markov model doesn't assume a strict ordering in reachability of states and so could even account for probabilistic healing, whereas this model assumes hitpoints only ever decrease).
I didn't know a markov model could compute the std-dev as well (not really my expertise), do you have a link coincidentally? I don't mind learning something new... :-)
I think that k=1 is too high. Consider the following absurd case: you have a PC who either kills the monster in 1 round or in 11 rounds, with equal probability. So your average rounds to kill is 6. Your standard deviation is trivially 5, since you’re always 5 away from the mean, making the variance 25. Average + standard deviation=11. By comparison, consider another character who always kills on round 11. The standard deviation there is 0 and the average is 11. However, the first character is strictly (and greatly) superior to the second in kill rate, so the metric you are using shouldn’t rate them equally.
That sounds like a fairly convincing argument - of course the distribution of durations is hardly a two-value distribution, and in a more reasonable distribution such an edge case won't exist. If the monster hit points are large enough, then you're adding a bunch of independent distributions, and the overall duration will be normal. and under that assumption, 1 standard deviation would correspond to the 84th percentile - on the conservative side, but nothing crazy. Under a normal distribution, my previous guesstimate of maximally acceptable loss rate (37%) would correspond to k~0.33, and for loss rate of 24% it'd be k~0.71.
In short, your upper bound of k~0.5 looks pretty good, any way you look at it.
Hmm, with a little bit of trickery, this could actually decently quantify the "quality" of damage output. Neat ;-)!
Interesting ;-). I just ran a simulation, though I do have a little tool to construct exact distributions via combining simpler distributions,
That would be very useful, since the biggest computational issue the way I’m doing it is getting the damage distribution. Even a 300x300 matrix isn’t that hard to invert. You can always compute the cdf directly through matrix multiplication (as I did to get the numbers above) and work with that to get mean/variance, though I don’t know if that would actually be faster (certainly it depends on the number of rounds you need for the attacker to kill the monster 99.9+% of the time; chances are this will be small most of the time, since D&D characters don’t take that long to kill level-appropriate foes) .
I didn't know a markov model could compute the std-dev as well (not really my expertise), do you have a link coincidentally? I don't mind learning something new... :-)
That sounds like a fairly convincing argument - of course the distribution of durations is hardly a two-value distribution, and in a more reasonable distribution such an edge case won't exist. If the monster hit points are large enough, then you're adding a bunch of independent distributions, and the overall duration will be normal. and under that assumption, 1 standard deviation would correspond to the 84th percentile - on the conservative side, but nothing crazy. Under a normal distribution, my previous guesstimate of maximally acceptable loss rate (37%) would correspond to k~0.33, and for loss rate of 24% it'd be k~0.71.
In short, your upper bound of k~0.5 looks pretty good, any way you look at it.
Yeah, k=0.5 seems like a good number. You’d need to specify the range of defenders you were considering, as well. For example, are monsters with elite/solo HP going to be in there, or just normal monster HP? For defenses it seems reasonable to have AC at 14+level, with 12+level for FRW, for simplicity. For a high level character, you could probably use a small number of different HP values for monsters; a low level character might happen to have the exact right distribution for a, say, 50 HP monster, but by the time you’re rolling a bunch of dice, using say, 250, 255, and 260 HP shouldn’t be problematic.
Hmm, with a little bit of trickery, this could actually decently quantify the "quality" of damage output. Neat ;-)!
...and now back to my thesis... argh...
You can’t do a thesis on D&D, either, I take it? I was kind of hoping for that too