A few weeks ago, I wrote an article that was pretty critical of the new block implementation. Now that we’ve had a few weeks to think about and dissect the changes, I wanted to re-visit the topic and look at the new block mechanic a little more carefully, as well as incorporate/address some of the points commenters raised.
Block on the one-roll system gives you an expression for damage taken that looks like this:
D = D0*(1-A-Bv*Bc)
where D is total damage taken, D0 is the base damage taken (incorporating armor and any other multiplicative effects), A is your decimal avoidance (i.e. 10% = 0.10), Bv is your decimal block value (i.e. 30% block value is 0.30), and Bc is your decimal block chance (i.e. 50% = 0.50). In this formalism, the block cap is enforced by limiting Bc, i.e. Bc ≤ (1-A). At block cap, Bc=(1-A) and the formula becomes,
D = D0*(1-A)(1-Bv),
which is as expected – for any attack you don’t avoid, you get a guaranteed mitigation of Bv, so you guarantee you’ll take (1-Bv) percent of the incoming damage.
The advantage of the one-roll system, apart from any computational overhead gained by only performing one rand()call rather than two, is that the damage prevention value of avoidance and block isn’t innately coupled until you reach the block cap. Every point of avoidance dA added reduces your damage taken per second (DTPS) by dD = -D0*dA, and every point of block chance (mastery) dBc added reduces your damage taken by dD = -D0*dBc.
In the two-roll system, the damage taken equation looks like this:
D = D0*(1-A)*(1-Bv*Bc)
with all the same definitions, though this time Bc is on its own table. This introduces the reverse-scaling that I mentioned in the previous article, where increasing your avoidance reduces the DTPS value of block chance (mastery).
Now let’s take a closer look at some of the interesting characteristics of the new block mechanic.
Consistency Between Mechanics
You might notice that the form of D for the two-roll system looks pretty similar to that for the one-roll system at block cap. In fact, the same reverse-scaling issue appears in the one-roll system, but between avoidance and block value. As you gain avoidance, your block value becomes less effective at reducing D. The difference is that we don’t have many ways to gear for additional block value, so we’re not confronted with a complicated optimization problem when choosing gems.
Mel and I agree that reverse-scaling systems (that is, systems where gaining more of one stat that you like makes a different stat that you’re also supposed to like worse) aren’t ideal. They generally give you weird, unintuitive behavior. If possible, we’d rather see forward-scaling systems like you get with DPS classes. Stacking crit doesn’t make the haste and mastery rating you have worse, it makes them better – for example, higher crit chance means more damage per hit, and higher haste means more hits per second, so the two feed back into one another. Haste makes crit better, crit makes haste better, and your net scaling becomes weakly nonlinear as you increase both.
However, sometimes it’s hard to avoid that with tanks. We’re not trying to make a metric bigger (like DPS), we’re trying to make it smaller (DTPS). So multiplicative effects work a little differently or us. A DPS scales as (damage)*(1+crit)*(1+haste), with all of those values being above 1. Thus, increasing any of them makes the others stronger. For tanks, it’s DTPS=(base damage taken)*(armor redux)*(avoidance redux)*(block redux)*(cooldowns redux), with each factor being smaller than one. So making any one effect stronger, which reduces its value, also reduces the effectiveness of the others.
The likely reason behind the block change is that it makes block more consistent with other mitigation techniques. Let’s consider for a second how other effects (and other tanks) work. If we increase our avoidance, we take fewer successful swings, and thus each point of armor reduces DTPS by a smaller amount. The same is true of the new implementation of Savage Defense, which is percentage-based. The less damaging attacks the druid takes, the less effective a 40% reduction of that damage is within the DTPS metric. The less damaging attacks a DK takes, the smaller the Death Strike heal. Similarly for block value in the one-roll, block-capped situation. Block chance (below cap) was the one standout stat that didn’t get weaker as we increased avoidance.
So in that light, the block change makes sense. Yes, it’s a nerf, and it introduces reverse scaling that we won’t like, but it puts block chance on par with other mitigation effects. The alternative would be to somehow decouple Death Strike heals and Savage Defense from being multiplicative effects, which is frankly much harder to do without making them unbalanced.
Is DTPS Even A Metric Worth Caring About?
As Weebey pointed out in the comments last time, avoidance and block (and other multiplicative effects) decouple if you consider relative damage taken, or dD/D. For us, that metric looks like:
dD/D = -dA/(1-A) -dBc/(1-Bv*Bc)
and in that form, it’s clear that block and avoidance are independent. The relevance of this is a little questionable though – what it means is “No matter your avoidance, you’ll always block X% of the attacks you don’t avoid.” That’s not terribly deep, even if it may be easier to understand than having 60% block on the character sheet but 100% blocked attacks on World of Logs. Still, this is how other multiplicative effects (i.e. every other mitigation effect in the game) work, so it’s hard to discount the consistency argument.
In that discussion, I put forth an argument that DTPS-like metrics were more relevant to survivability than relative damage taken. I still think that’s the case, but neither is very relevant on an absolute scale. The reality is that DTPS, even on short time scales (i.e. during a burst window) is relatively meaningless because it’s only weakly affected by gear. It’s really up to the RNG whether we block or avoid (or not), and the amount of influence we have on that via gear is very small. Blizzard just hasn’t been able to make DTPS a compelling metric for tanks, because deaths occur in 5-6 second windows rather than 20 or more. I don’t see that design changing much, if any, in Mists.
So it’s all well and good to complain about the reverse scaling problem, but if DTPS is a meaningless metric, then it hardly matters. If we could gem for block value right now, we would do it despite the fact that it’s got reverse scaling with avoidance, because it gives us guaranteed mitigation during the burst window. In practice, the reverse scaling of DTPS is far less important than the mechanics themselves. Unfortunately…
The real strength of block chance (mastery) was the ability to reach cap and smooth out damage, not its linearity in “damage taken” metrics. It gave us something similar to extra effective health for melee attacks, and made a significant impact in how easy we were to heal compared to “spikier” tanks. Losing that reliability turns block into another unreliable stat that reduces DTPS, but doesn’t really do much for the situations that actually kill tanks. So the mechanics dictate that block is going to be a lot weaker than it was when it was able to push hit off the combat table.
The Block-Cap Fallacy
The block-cap mechanic has been incredibly hard to balance around, and it’s good that its going away. But as I pointed out in the last article, going from a one-roll to a two-roll system doesn’t have anything to do with fixing that problem. That was what prompted me to write the last article – many people seem to think that the two-roll system is there to “fix” block capping.
It isn’t. You can block-cap a two-roll system just as easily as a one-roll system. 100% block in a two-roll system is identical to (1-A)% block in a one-roll system. If you can tune your two-roll blocking such that 100% block is unattainable (and you can), you can do the same in the one-roll version. It doesn’t matter whether you do that through diminishing returns or through a very weak mastery->block conversion ratio, the necessary degrees of freedom are all there.
There are three major pitfalls I see with block in MoP. The first is that removing the ability to block cap means mastery is getting nerfed, hard. Because the changes necessary to prevent capping are equivalent to a heavy nerf to the mastery->block conversion ratio. Right now, if X rating gives you the 60-65% block you need to cap the combat table, that X rating is equivalent to 100% block in a two-roll system. To prevent capping, it necessarily has to be less than 100%, which means the conversion rate is changing, probably by almost half.
That means mastery, point for point, is going to get a lot less effective at preventing damage than dodge or parry. And without the less quantifiable benefit of guaranteed blocking, it’s hard to imagine a block-chance mastery being competitive with avoidance stats. We won’t know for sure until we see the numbers, but it would be difficult to come up with values that make mastery competitive. When all three are just stats that reduce your DTPS, you take the one that gives you the most benefit.
Also note that the current form of SotR (guaranteed block) undermines a block chance mastery a little bit, because it makes your mastery irrelevant for some percentage of the boss’s attacks. Unless mastery gets some other perk or secondary effect, it will become our least-desired stat behind dodge and parry. Depending on how hit and expertise pan out, it may even drop behind them (though again, that’s unlikely based on the rough numbers).
The second issue we’ll be facing is consistency. A Druid’s mastery grants them passive armor, which is guaranteed to reduce the damage of melee attacks. When a druid uses the new Savage Defense (which isn’t tied to their armor mastery, but is the direct equivalent to a multiplicative block mechanic), they guarantee 40% damage reduction on melee attacks for 6 seconds. When a DK uses Death Strike, they guarantee a heal and an absorb, and they can time it so that it occurs when they need it. Those are all reliable effects that are available “on-demand.” On-demand mitigation is very powerful – it’s why Holy Shield became much better for progression raiding when it became an activated ability – so care has to be taken to make sure that tanks with on-demand mechanics don’t have a large advantage over those whose options are more limited.
For example, the currently-revealed version of Shield of the Righteous (guaranteed block on the next attack, 25% block value for 6 seconds) is actually pretty good. We get a little bit of on-demand mitigation from the (one) guaranteed block. It’s arguable whether it would be stronger than a version that guarantees 100% block for 6 seconds with no increase in block value (similar to Savage Defense’s new implementation). It’s definitely stronger than one that grants 25% block value but no increase in block chance. Even though they’re all pretty similar in design, there’s a pretty disparity in effectiveness between the on-demand and RNG versions.
However, the rest of our block mechanic is completely random. It can’t be relied upon, which means it’s not always going to be there to help us when we take a burst. A druid’s armor will be, and they can choose to time Savage Defense to combat that burst, as can a DK with Death Strike. I’m not saying it can’t be balanced, just that it’s tricky when the mechanics differ so significantly, and Blizzard has had trouble with it in the past.
The third concern is diminishing returns. Block tanks will be the only specs that have DR on their mastery. We can safely ignore DPS and healing specs, but the fact that there will be three tanking specs that don’t have a DR mechanic hampering their scaling is worth worrying about. That’s compounded by the fact that their mastery effects are guaranteed and contribute to effective-health-like metrics, while ours doesn’t.
I’m not trying to be Chicken Little here, mind you – I have faith that Blizzard will tweak tank balance on the fly to keep us viable. But if you look back over the last few expansions, it’s clear that differences in scaling tend to cause pretty big discrepancies between the effectiveness of tanks. Cataclysm has been better than previous expansions, but block-capping still gave Paladins a significant edge in T11/T12 content.
T13 fixed that in a variety of ways (DK buffs, lots of unblockable damage), but they were all external fixes – i.e. to compensate for the mastery scaling being off. The worry, then, is that if things are well-balanced at the T14 level, by T16 the tanks whose mastery scales well will have an advantage. And they’re almost guaranteed to scale differently when two tanks have a diminishing returns mechanic and the others don’t.
Frankly, I think one of the big reasons for moving to a two-roll system is psychological. We’ve already shown that to keep the one-roll system and prevent block-capping, they’d have to nerf the mastery-to-block conversion pretty heavily. It would be a pretty tough psychological blow to go from having 65% block to having 20-30%. But by moving it to a second table, they can keep the value relatively high and get the same effect. You can still have a “healthy” 50% block, which feels like a lot even though it’s only worth as much as 25% block in the old system. To those of us who look carefully at the math, it seems like a silly justification. But there are a lot of cases in MMO design where how something “feels” matters more than the numbers.
Like I said in the last article, I don’t think two-roll block is the end of the world. It will work, and some of the “weirdness” I described in the last blog post on the subject is stuff that other tanks have had to deal with all along. And given the similarities, it feels a little less pointless than I originally thought, even though it doesn’t have anything to do with the block-cap problem.
However, there are still some things we should be watching out for once the beta starts, to make sure that we iron out the kinks as much as possible before release. If we’re going to get a new block implementation, we may as well help make sure they get it right this time around.