Developer Journal: Crowd Control Changes

Shortly after Diablo III launched, I remember watching Jay play his barbarian. He was having a blast, killing monsters left and right, but something was bothering him. He was annoyed because Ground Stomp -- one of his favorite abilities -- got worse as he progressed to higher difficulty levels, and that his character felt weaker despite having better gear and more stat points.

We all agreed that the game needed to get harder at higher difficulty levels, but Jay didn't like this particular way that it was getting harder. Specifically, he didn't like that we diminished crowd control (CC) effects. We had discussed CC effects many times during development, and we felt the system we had got the job done, but Jay felt we could do better.

Before release, we'd designed the game so that CC skills would have diminished durations at higher difficulties -- for example, most CC skills have their effectiveness reduced by 65% in Hell and Inferno. Jay has never been a fan of the way Ground Stomp and other CC skills become less powerful as a result of diminishing effects, but he also knew that a system to limit CC was required to add challenge at higher difficulties. While we've wanted to improve CC for some time now, we had bigger fish to fry first (like adding the Paragon System and improving Legendary items), so we made a note to revisit CC effects in a future patch.

Why We Reduce CC

Fast forward to present day as we prepare for patch 1.0.5. Before I talk about what we're doing to buff CC skills while still allowing the game to get harder, first, let's go over some of the reasons why we diminish the effects of CC in Diablo III:

Monsters need time to do their thing to threaten you.

While infinite CC rotations can feel make players feel awesome, it's fleeting. If CC becomes too powerful, it can trivialize most major mechanics and the game can become boring.

Players in co-op have the potential to synchronize CC.

Of course, there are side effects to reducing CC to increase difficulty. One of the bigger issues we've seen is that, when it comes to mitigating incoming damage, CC skills rarely hold up against other options as you progress through Nightmare, Hell, and Inferno. While a skill like Ground Stomp mitigates damage, let's you control the battlefield, and is really fun to use, the duration reduction at higher difficulties is really noticeable, making the skill far less effective. Ignore Pain, on the other hand, mitigates damage by reducing how much of it you take, regardless of difficulty level. It may not be as exciting to trigger, but it's more reliable in those later levels since its power isn't diminished.

The following graphs show a few examples of how CC skills become less widely used as players progress from levels 25, 47, and 59 * (the levels you're likely to be at Act III Normal, Act III Nightmare, and Act III Hell):

It's no surprise that as the effectiveness of a CC skill starts to diminish, its relative value (especially against skills that provide self-buffs) starts to diminish as well. This can make you feel less powerful as a player, but it also starts to push people into a narrower set of builds. After all, if one skill's power depreciates over time and another skill's power doesn't, the skill that retains its power can become much more appealing.

*These graphs illustrate the general trend of how, as players level up, CC skills become less popular, while skills that provide self-buffs become more popular. We opted to not include level 60 data in these graphs because there are many builds in Inferno that use CC skills successfully (for example, Frost Nova with Critical Mass). While we think these synergy-based builds are awesome, they’re still outliers and would ultimately skew the graph data from the overall trend.

Trial and Error

Crowd controlling monsters is not only tactically valuable, but we think it's really fun, too. Our goal was to recapture that feeling in the higher difficulties. We wanted players to feel strong and heroic when using their CC skills, no matter what level they are, and we came up with a few ideas on how to accomplish that.

Idea #1: Reduce the Duration of CC effects in Co-Op Games
The first solution we came up with was to reduce the duration of CC effects in co-op games only, and allow full durations in single-player. While this would provide a great experience for solo players and help prevent the issue of infinite CC rotations in group play, the obvious downside is that CC skills would still feel weak in co-op games.

There are already a few mechanics (such as On Kill triggers) that discourage players from teaming up with their friends, and we don’t want to pile on "my CC is less effective" as yet another reason to avoid co-op. So, we tossed that idea out and went back to the drawing board.

Idea # 2: Make Diminishing Effects Not as Strong
We also discussed making all CC effects shorter from the start, but make them not diminish (this would apply for both single-player and co-op games). For example, we talked about making Ground Stomp always last for 2 seconds, even when you first get it at level 1. Sure, it's not as good at first, but at least it doesn't get worse with time.

Of course, this means that we’d have to make CC less powerful across the board. Although it solves the original problem of CC skills feeling weaker over time, it creates the new problem of "my CC skills never feel powerful," which is arguably worse.

Idea #3: Diminishing Returns
Another idea we considered was implementing diminishing returns the way World of Warcraft does. So, your first stun gets full duration, the second stun is cut in half, the third stun is cut by 75%, and for the fourth stun and beyond you get "IMMUNE."

While this works for WoW, it just doesn't seem like a good fit for Diablo III. Not only does it feel really weird to get an "IMMUNE" message, but it also puts a lot of limitations on you in co-op games when the order in which you and your teammate use CC can matter a great deal.

Let's say you have a 5 second stun and your partner has a 1.5 second stun. If you go first, the monster is stunned for 5 + 0.75 seconds = 5.75 seconds total. If your partner goes first, the monster is stunned for 1.5 + 2.5 seconds = 4 seconds total. That seems like more micromanagement than we want to place in a fast-paced action game like Diablo III.

Additionally, there are currently a few methods of CC which are already very potent. For example, certain wizard and monk builds can maintain extremely heavy CC on enemies. As we examined CC, we realized we wanted to make CC skills feel good on their own, while still allowing these dedicated builds and combinations to be successful. In effect, we want to buff the baseline usage without hurting the players who have figured out certain potent combinations (though in the big picture we are still keeping an eye on that). This was yet another reason not to adopt the WoW diminishing returns system.

As you can see, every one of the solutions we discussed had a pretty noticeable downside, and we were kind of left hanging. We went over the reasons together and Jay basically said, "I know WHY we reduce the durations, but I still don't like it. Keep working on it."

Developers, Assemble!

As we started to wrap up development for patch 1.0.4, I decided to get a fresh perspective on the situation and hit up some designers on World of Warcraft and StarCraft II. One of the great things about working at Blizzard is being able to tap the creativity of other development teams, while still being able to do what is right for the Diablo franchise. Although they work on a different game, many of the designers around the company have been playing the heck out of Diablo III, and I figured they would be able to offer me some deeper insight into what they thought worked and what didn't.

After tossing out ideas for a while, we had a small epiphany:What if we used diminishing returns, but developed a different set of rules for Diablo III?

What if monsters just never went immune? And what if, instead of reduced % durations, the durations were reduced based on the length of the CC, so that it didn’t matter which order the CC effects were applied when playing co-op?

Here's the system we arrived at:

How It Works:

Monsters have a "CC resistance" that is stored on a per-monster basis.

The CC resistance starts at 0%. For every 1 second CC that is applied to the monster, the monster receives 10% CC resistance.

Monsters lose 10% of their CC resistance every second that they are not CC’d.

Elite monster CC resistance is capped at the current reduction values already active for Elites. In other words, CC resistance on most Elite monsters is capped to:

35% in Normal

50% in Nightmare

65% in Hell

65% in Inferno

What This Means For the Player:

From a high level, diminishing returns are applied on consecutive stuns to reduce their effectiveness.

You will never get an "Immune" message due to diminishing returns.

Diminishing returns on Elite monsters cap out at the same values that are currently applied to Elite reductions.

As previous mentioned, this means that near-infinite CC strategies will still work. We're okay with these strategies remaining viable, as we love how powerful it makes players feel. (That said, we will continue to keep an eye on these strategies and may make some changes in the future if we feel it will be better for the health of the game.)

If two players are in a co-op game, the order in which they apply their stuns doesn't generally matter, so you shouldn't feel totally "screwed over" by the other person applying their stun before yours.

A character using only the occasional CC every 10-15 seconds will always get the full duration in all difficulty levels.

A Free Demonstration

Let's provide some examples to show how this new system can play out in real scenarios.

Example 1:

A wizard freezes an Elite monster in Inferno difficulty for three seconds using Frost Nova. The monster is frozen for the full 3 seconds and now has 30% CC resistance (+10% resistance per second for 3 seconds = 30% CC resistance).

The moment the freeze ends, a witch doctor casts Horrify which fears the monster for 4 seconds. Since the monster has 30% CC resistance, it’s actually only feared for 2.8 seconds (4 seconds * 70% CC effectiveness = 2.8 seconds). The monster now has 58% CC resistance (30% from the first 3 second freeze + 28% from the 2.8 second fear).

After 5.8 seconds (freeze + fear duration), the monster is no longer CC’d. Suppose nothing happens for 5 seconds. During this time, the monster loses 50% of its CC resistance and is now at 8% CC resistance (58% - 50% = 8% CC resistance).

A monk casts Blinding Flash, applying a 3 second blind. The monster is blinded for 2.76 seconds (8% CC resistance off of 3 seconds) and the monster now has 35.6% CC resistance (which we could round off as necessary).

Example 2:

A monk with the Pandemonium rune is in Nightmare difficulty and casts Seven-Sided Strike on a single enemy, resulting in a lot of possible 7-second stuns.

The first hit stuns the monster and lasts for a full 7 seconds, but adds 70% CC resistance.

The second hit also successfully stuns the monster, and lands 0.4 seconds later after the first hit. The 70% CC resistance is lowered to 50% because the game is currently on Nightmare difficulty, and Nightmare difficulty has a CC resistance cap of 50% -- so the stun is 3.5 seconds long. The 3.5-second stun gets applied, even though it is fully redundant with the existing 7-second stun. Since the new stun is shorter than the amount of time left on the current stun, no additional CC resistance is added. In effect, this second stun has no effect at all..<

Example 3:

A party of four monks attempts to stun-lock an Elite monster in Inferno difficulty. They are all using Blinding Flash with the Self-Reflection rune, which blinds an enemy for 4 seconds.

The first monk casts Blinding Flash and the monster is blinded for 4 seconds. It also now has 40% CC resistance.

The second monk also casts Blinding Flash, but times it to land the instant the first one ends. It lasts 2.4 seconds and increases the CC resistance to 64%.

Both blinds wear off 6.4 seconds later. The third monk lands his Blinding Flash immediately afterwards, which lasts 1.44 seconds. This increases the monster’s CC resistance to 78.4%.

It's now been 7.84 seconds, and the fourth monk wants in on the action. She uses her Blinding Flash. Even though the monster’s CC resistance is technically at 78.4% by now, it's capped at 65% because of the CC resistance caps in Inferno. So, the 4 second blind actually lasts for 1.4 seconds. This adds another 14% CC resistance, bringing the final to 92.4%. (The effective resistance is still at the 65% cap, but the 92.4% is tracked under the hood for the stun resistance to wear off.)

The poor monster has now been blinded for a total of 9.24 seconds, and the monks are out of Blinding Flashes. :(

The next blind will occur when the first monk’s Blinding Flash comes off cooldown. Since Blinding Flash has a 15 second cooldown, and only 9.24 seconds have passed, the party has to wait for another 5.76 seconds. During this time, the monster loses 57.6% CC resistance, leaving it at 34.8%.

The first monk uses his Blinding Flash as soon as it comes off cooldown. The 4 second blind is reduced to 2.61 seconds thanks to 34.8% CC resistance, and the monster’s CC resistance goes up another 26.1% to 60.9%.

Example 4:

Scenario 1

Player 1 applies a 1 second stun, it lasts 1 second. Monster has 10% CC resistance.

Player 2 applies a 6 second stun, it lasts 5.4 seconds. Monster now has 64% CC resistance.

Scenario 2

Player 1 applies a 6 second stun, it lasts 6 seconds. Monster now has 60% CC resistance.

Player 2 applies a 1 second stun, it lasts 0.4 seconds. Monster now has 64% CC resistance.

(Scenario 1 & 2 demonstrate that this system allows consecutively chained CC effects to be applied in any order. In other words, the math is commutative.)

We feel these changes should make CC abilities much more appealing (especially in those later difficulty levels), and are currently targeting them to go out with patch 1.0.5. While that patch is still a ways away, we encourage you to experiment with the math in the meantime, ask us any questions you may have about how the new diminishing returns system will work, and share your feedback!

Wyatt Cheng is a Senior Technical Game Designer for Diablo III. His favorite Iron Chef is Hiroyuki Sakai. A la cuisine!