Thursday, May 28, 2009

[General] The future of block part 3 - long term fixes

The setup for this series is here, and the first (short term) suggestion ideas are here.

What about the long term solution to block? This has some more interesting design constraints, but we'll go with some basic observations first.

For starters, one of the reasons that mitigation is so good right now is because boss damage is so high. The last time that every boss could melee two-shot tanks was Sunwell; and even then, it was only Brutallus. While most bosses can't do that all the time in Ulduar, it's more true than not that a tank can just be pasted if unlucky.

But why is that?

Part of it is because avoidance is simply too high. Pre-Naxx geared tanks started at around 40% avoidance, and by the time they were done with Naxx they were near 60%. By comparison, TBC tanks didn't get to the 60% threshold until they were through with BT. What this means in practice is that if designers want to challenge healing, all the attacks that do go through must hit fairly hard.

This leads to healers being forced to spam heals on the tank regardless of what's going on. Which means mana regen can't be as much of a factor, and caring about whether a 20k hit is blocked for 2k doesn't factor into it. It simply doesn't matter because healers must heal as if you had zero avoidance and zero other mitigation.

Because if they don't, the tank can get unlucky and die.

Now, this has another annoying side effect - healing is really dull. Healers are rewarded not by casting heals as needed but proactively healing, and then they pretty much have to. There aren't rotations possible; they must heal their absolute worst case scenarios. It also means that whether they are casting or not isn't really a decision.

Then you have block coming into it. Block doesn't scale with mob damage, and mob damage is steadily increasing. It becomes less reliable and less relevant. Avoidance continues to increase, health increases, and because of this hits become harder and harder...and healers get more and more bored.

So how do we change block such that it's relevant and fix everything else? GC has a hint, today:

The problem I have with this kind of argument is you're basically saying that avoidance is awesome and mitigation is awesome, but something with aspects of both can never work. I would argue that no tank has a clue of how hard the boss can hit them because they can dodge 30 attacks in a row under a blue moon. However, because you are removing so much damage every time you avoid, we all still use avoidance despite its random nature.

A wise tank said to me recently: imagine the block coming at the expense of avoidance instead of mitigation. Now imagine you block a lot more often than the other guy can dodge. If anything, the block tank is going to be less spiky than the non-block tank.

Let's give an example of what he's talking about here.

The worst case scenario is no avoidance. Let's treat block as avoidance. In the above scenario GC describes, all tanks have exactly the same mitigation. Thus, all tanks have exactly the same worst-case TTL assuming their effective health was similar.

In the average case, however, you get the situation where you have the 'avoidance' tanks and the 'block' tanks. Here's how it works:
1) The avoidance tanks either take no damage (dodge) or fully mitigated damage (not dodge). We'll say that they avoid 40% of the time, so they take a full hit 60% of the time and dodge 40%.
2) the block tanks avoid 30% of the time, but block 30% of the time. So 40% of the time they take a full hit. 30% of the time they avoid everything. 30% of the time they block (say 33% of the damage).

In this situation, both tanks have the same worst case possibility. The blocking tanks will take on average the same damage over time. However, their damage will be much less spiky because of the avoidance issue; they'll take much fewer 'big' hits that aren't blocked, nearly half as many. 10% of the time the avoidance tank will take 0 damage ,or 10% less overall damage. 30% of the time the block tank will take 33% less damage, which is again 10% less overall damage.

Of course, this would require that block actually scaled with incoming attacks AND avoidance was heavily nerfed.

So what would this world look like? What stats would look like what?

Let's take another assumption: that on 'hard' fights the tank's basic time to live on average is around 4 melee attacks without heals. This means you can do nothing and be killed by the boss after four attacks most of the time. That's the baseline for 'hard'. Now, with avoidance at 50%, this means each attack must be (on average) at least 50% of your health - and that's where we are now. But at a 30% avoidance cap, the attacks don't have to be nearly so high, and 3-rounds are fine.

The obvious conclusion is that avoidance would be heavily nerfed and still be subject to diminishing returns. Instead of now, where the 'cap' on avoidance is set around 70% (and it becomes very difficult to get more than 60%), you'd need to set the cap closer to 40%. The goal would be that in the highest tier gear, you'd want to go for 40% at best. And that would be for the non-blocking tanks, remember. For the blocking tanks avoidance would want to cap near 30% in most cases. And admittedly, I'm totally making this up. It could be much, much worse than this. 40% as the high end seems reasonable though, but keep in mind that the primary reason I chose it was because it means bosses should not 2-round you (or can't really be designed to) - since the 'average' case would mean you'd die in two shots (if those two shots connected) more often than not. That's not really reasonable.

Furthermore, you'd want to do the same thing for block. Block rating would need to cap around 20-40% in general. Under no circumstances would you want anyone to be passively uncrushable/unhittable either; if you did that, they'd immediately become the best tank choice by a landslide. However, block rating would still remain as a stat. And more importantly, it'd remain a fairly desirable one; it would be essentially as good as dodge rating is right now.

Next, you want to make sure that no matter what else, block was relatively as good as avoidance against hard-hitting mobs. This means that it must scale with incoming damage. The simplest way to do this (as shown in the short term solution list) is to make it increase armor. This can scale or it can be a flat value; I'd recommend that it scales with block value to some degree, but only some degree. Why? Because the goal is to have your total amount of damage blocked * the chance of block equal or close to the total amount of damage avoided by the 'avoidance' tank. It's hard to do that if you can have wildly fluctuating values depending on gear. Possibly a better solution in the long term is to make block value a second mitigation that multiplies, just like defensive stance/PotP do now. And have that scale with block value.

And actually I take it back; the easiest solution is to have a block always reduce damage by a certain percentage and remove block value entirely. It was already a confusing stat; this might be best. We'll just have block always mitigate a flat 25% damage. If you like, you can put in a static component that does something like 'blocks at least 25% damage or X damage, whichever is higher' so that heroics/trash is a bit more manageable.

The important thing is that the block % * the block rate should equal the extra avoidance that the avoidance tanks have, and it should do so at all tiers. This isn't that hard to balance either. In fact, the block tanks can have different percentages of damage blocked and blocking rates as well, differentiating them even further.

I'd probably have the four tanks look like this:
Tank A: 40% max avoidance, 60% unblocked hits, 0% blocked hits for 0%.
Tank B: 35% max avoidance, 55% unblocked hits, 10% blocked hits for 50% blocks each
Tank C: 30% max avoidance, 40% unblocked hits, 20% blocked hits for 50% block each
Tank D: 30% max avoidance, 30% unblocked hits, 40% blocked hits for 25% block each

So we've dealt with block and avoidance. Next up, health and armor.

Health and armor amongst all of these tanks should be roughly the same or similar. The important thing to note is that effective health should really be the thing that stays the same. Why? Because the worst-case TTL should remain about the same between the tanks. This is a lot easier to balance than it was before, however; instead of having to compare blocking tanks with armor and do static vs. scaling damage, you've got armor for all of them and that's all. Same with health. Some tanks can have higher armor, but will need to trade that for lower HP. Same in reverse. But this is pretty easy to manage overall, and as long as effective health remains pretty much the same (within a few percent) this will be easy to balance. If I were doing this, I would have one of the avoidance tanks be the high armor, one be the high health. Do the same for the block tanks. Each would have marginal advantages on certain fights, none would be advantaged for all.

And of course, the ones with high HP should have less magic mitigation than the ones with lower HP.

So what happens to SD? SD becomes something of the odd man out. I think that for this specific case, you'd just remove it. Because it doesn't deal with the hit table, balancing it against block (which does) is very difficult. It's hard to 'guarantee' a certain uptime given crit, hit, expertise values. And it goes away from having two tanks with shields, two without. That being said, it may stick around as exactly what it is - a way to mitigate static amounts of damage. That still has value, especially in lower level dungeons. It just won't be used as the primary mitigation balancer.

Now, this breaks a lot of things. This breaks the idea of paladins blocking every attack, for instance. It breaks block being so much better on trash...maybe. There are possibilities here. Think, for instance, that while holy shield is active all attacks are reduced by a certain static damage, and as long as holy shield has charges attacks are reduced by a percentage - and the amount of charges is small. That means against bosses, you'll get both static and percentage reduction. Against multiple mobs, you'll get that static reduction and only a couple percentage reductions. That might work, and it'd be similar to what SD would be like in this world.

So how do shields work? They function quite a bit on giving massive block value by themselves. Well, you could simply use that (and that alone) as the way to do the percentage reduction. I don't like that, personally. You could just remove that value entirely. You could make it solely a threat stat for paladins and warriors. I'd be in favor of removing it, but there is some value in keeping two stats around and making percentage reduction something you can scale with. It's still confusing though.

Would this fix or improve healing? Possibly. With a maximum 40% avoidance chance, a number of potential nice things come up. For starters, the real possibility of having ohshit buttons that do avoidance primarily becomes attractive, even if they're not 100%. This is because bosses wouldn't be hitting for half your health every time; they wouldn't need to. So something that doubled your avoidance would massively reduce the incoming damage, but could still be fair and useful. Damage could be cut in basically half and still threaten tanks, since chances are they'd take the same damage most of the time. All tanks would be significantly less spiky due to the loss of avoidance. Some reactionary healing (and less healer-stacking) may be possible. Healing spells could be reduced in size as well, to correspond to this healing. And mana regen might be able to be nerfed too; if the primary problem is just throughput of heals, not bursty scary 2-hit combos, that might work to help things.

At the very least, boss damage would not need to be consistently 50% of a tank's health all the time.

So this would all work. The question remains to me - would this be fun? The four tanks wouldn't be all that different from a healer perspective. The block/nonblock tanks would be especially close to each other by necessity. There wouldn't be a lot of advantages or disadvantages to bringing one over the other, especially if cooldowns were balanced. Sure, paladins would block more on trash, druids would have higher HP (or armor, whatever), but everyone would kind of want the same stuff and be about the same viability at any given tier.

Is that fun? I'm not sure. Honestly, I always felt that there should be niches for tanking (4), and that each of the four tanks should have a primary and secondary 'good' niche. I would like to see a diversity of tanks required in raids. My idea would be that each tank would have one main niche, one secondary niche, and they overlapped so that any two tanks would cover all four niches at at least a secondary level of competence.

Because I think there is definite advantage in feeling like your character is 'best' in something. And I think it's fun to try and min-max and get advantages in fights by using what you have. To me, that's part of the fun. But I admit, that's not absolutely the case everywhere.

This kind of plan I've outlined for the long haul would certainly balance things out, or make things close enough that there wouldn't really be any big deal on the survival side. Threat, cooldowns, special abilities - that's all another side. But this would bring them all pretty close together.

I'd be shocked if this was done in time for Icecrown. But I'd not be too shocked. GC seems like he's been thinking about this for a while and has some very definite ideas on how to get there, and if he needs to radically revamp everything, so it goes. It would be the single biggest change to the game during a release that had happened since..1.8, I guess, and I think they've got bigger fish to fry in the interim. However, I wouldn't have thought that druids would get something like savage defense in a content patch either. Each content patch appears to be doing a lot of rebalancing. 3.1 was very ambitious.

My prediction is that you won't see this for 3.2. 3.2 is going to come out fairly soon and be a quicker patch, I think. And it probably won't have tier 9 gear - it'll be a T8.5 type of thing. Then we'll get Icecrown, and it's quite possible we'll see it there.


kane said...

good lord..
are you sure that you are not GC older and smarter brother?

Shamad said...

You're getting into a world of chain reactions if you want to touch the current chances of tanks being 2shotted. Firstly, because tank healers don't care about avoidance, they don't and can't depend on it one bit. So lowering avoidance doesn't effect healing, other than to reduce overhealing(currently for paladins in the range of 70%). Now if you want to soften the blows from this, you've eliminated tank deaths completely and trivialized the content.

So you might want to change mana regen, but it's already been nerfed for raidhealers, so you need to look at Paladins mainly atm, and they'll just gear away from their current dual throughput and regen stats to simple regen stats and keep spamming pretty much the same amount, with a smaller crit chance. Now you might want to change replenish effects, but then you've just made 90% of raidhealers run oom and you've got a whole other degree of shitstorm on your hands.

Now you might reduce the amount tankhealers heal for. Except then they become redundant and you'd just have raidhealers heal everything. Unless you change how much raidhealers heal for. And now we're back to damage not being able to kill. And the content is trivialized.

It's a whole lot of nasty chain reactions. And if you don't do it, then you are going to have a hard time justifying lower HP tanks no matter what their benefits are.

Seleria said...

I have now finished reading the massive book about block... and from a tanking perspective, I totally get it.

However, from a healer's perspective... the fallout of your proposed changes is pretty significant and messy.

First, I'd like to say... healing can be pretty boring. You're not in the boss's face tearing him apart. You're not shooting fire across the room. You're watching healthbars and making them get full again.

That being said... Patchwerk remains one of my most exciting bosses to heal. Maybe I'm crazy, but I spend Patchwerk spamming my heart out on my healing assignment (an OT most of the time). There's no moving around in the fight, there's no guesswork as to who in the raid is going to take damage. It's a pretty boring healing assignment, but it's one of my favorite fights to heal.

What Blizz, however, has taken from "healing is boring"... is "let's send damage everywhere! Woohoo!" There's more raid healing than ever. Let's say you have 7 healers (that's what we run in Ulduar) 4-5 of ours are generally on raid and 2-3 on tanks depending on the fight obviously.

So with your suggestions I guess the end result as far as I can tell is "have tanks take more consistent but weaker hits." Which as you said... means there's less healing that HAS to be done. So you propose that healing gets weaker/regen gets weaker to correspond with these weaker hits... but the raid damage hasn't changed in your scenario. Sure, the tanks can avoid magic damage, but that doesn't do anything for the 22 other people in the raid.

So I guess the dilemma I see is keeping average health values around the same as they are now (let's say tanks with 40k health) and they're taking less damage overall, that starts to make tank damage on the same order as raid damage so healing classes that are better suited to raid heal are suddenly the only class you want to have around--and homogenizing the healing classes even further probably wouldn't be a really good idea.

On the other hand--what if you kept the damage the bosses are doing now the same, kept healers the same, but increased the health of the tanks. Keeping your block solution idea, you'd still not be running into "2 hits and you're done," but healing doesn't have to be completely screwed around with that way. Then you run into the pvp issue. No mage wants a prot warrior to wander into a BG and have 3-4 times the amount of health they do.

I guess I officially have no constructive suggestions since I contradicted my own. But I've worked on this comment entirely too long to delete it. I officially do not envy Blizz.

Yl said...

Sometimes ideas make sense, but have emotional implications outside the logic and math. This seems to be the case.

You present an elegant set of solutions for balancing out the tanking classes, but the ultimate conclusion is a set of more or less generic tanks. And this, as you point out, might be a problem.

I can understand blizz wanting to move towards a bring the player not the class setup, but it seems odd to me that they seem to want to homogenize tanks most of all. No one is talking about giving pallys wild growth, for instance.

Tanking diversity is fun because it makes you shine in certain situations. I would argue that the classes are balanced enough as it is; any class can tank any fight in Ulduar if they choose(how painful it is on the healers is another matter altogether--but then again, weren't they complaining about being bored). But certain classes will stand out, like warriors on the screaming mimi or bears on Ignis. Further homogenization, I fear, would come at the expense of non-standard tank class popularity and the "gasp" factor when you do some amazing, class-specific thing.