Fmulder points us to Gamasutra, where Wyatt Cheng’s GDC Panel on Diablo 3 panel has just been posted, Iterating on Diablo III’s game systems. There’s no embed video option, so click to GamaSutrat to view it, though I’m going to add a transcript and summary to this post ASAP.
Eyeball the table of contents for a good idea of what Wyatt covered during the hour panel, and you can refer back to our earlier posts on this for some pre-show hype. (If you’re wondering, video of Jay Wilson’s GDC postmortem has yet to be posted online.)
System 1: Health Recovery
* Iteration 1: Potion Dilution
* Iteration 2: Non-combat Regeneration
* Iteration 3: Defensive Regeneration
* Iteration 4: Health Globes
* Lessons Learned from Health Recovery
System 2: Command Input
* Command Input: “Lost” Clicks
* Command Input: Animation Structure
* Command Input: Wizard Skills
* Iteration 1: Secondary Animation Powers
* Iteration 2: Interrupting Powers
* Iteration 3: Queue
* Command Queuing Details
* Command Queuing Rules
* Command Input Summary
* Lessons Learned: Command Input
System 3: Skill System
* Starting Point: Traditional D2
* Skill Rune As Items: Result
* 10 Runes Become 5
* Runestone System: Result
* Lessons Learned: skill System
Recap: Big Picture Lessons
Wyatt’s talk is an interesting and detailed summary of some of Diablo 3’s core systems. It’s not real critical or probing, but it’s very informative and yields a lot of insight into the development process of Diablo 3. I’ve typed up a nearly-exact transcript and added some commentary here and there, plus supportive links and more.
Here’s the start of that, and you can click through for much, much more. (It’s quite long, since Wyatt was non-stop talking and showing slides and videos throughout his presentation.)
Hi everyone and please, turn off your cell phones.
I’m Wyatt Cheng and I’m a Senior Technical Game Designer for Blizzard Entertainment. My talk today is called “Through the Grinder” and I’m going to discuss a bunch of systems in Diablo 3. For some background info, the game was released on May 15, 2012, and it has sold over 12 million units to date. There are a lot of systems in Diablo 3, but one of the most talked about and praised aspects of the game is the combat system. People feel that it’s visceral, enjoyable, and tactical, and for today’s talk I’m going in depth about 3 systems that we designed to support the combat.
Those systems are Health Recovery, Command Input, and Skills. I’ll talk about each and try to tie them all together to show how these systems work together to support that visceral combat feel.
Design Through Iteration: There’s a theme in my talk, and it’s something that anyone who works in the industry knows all about. Iteration. Design requires a lot of iteration. I’m going to demonstrate this by going through a bunch of the early versions of these systems in Diablo 3 and you can see where we failed, what we got wrong, and how we learned and got better. This sort of analysis is one of my favorite things to do as a designer, and I’m just going to go postmortem style.
Avoid the Grand Reveal: Iteration requires what we at Blizzard call, “avoid the grand reveal.” We have a set of design values we share at Blizzard and Avoid the Grand Reveal is this idea that creative types don’t like to show their work to other people. Whether you’re an artist or writer or designer, we’re never really happy with our own work. It’s important as part of the iterative process it’s important that we show our work to other people.
Our thought process is something like, “I’m not happy with it, so I don’t expect you to be so I’m not going to show it to you until I’m happy with it. You might think less of me or I’ll be embarrassed.” You have to fight against that instinct and it’s a very natural reaction as a creator. So we need to create environments where it’s safe to fail. How do we create that sort of environment which is important since it supports that sort of approach.
System 1: Health Recovery
To talk about the health recovery system, let’s take a look at how Diablo 2 handled this. We are making a sequel, so when we sat down to work on Diablo 3 we looked back at Diablo 2. We really wanted tactical combat. What are the steps we must take to create a more tactical combat system and experience for the player.
One area we identified was potion spam in Diablo 2. A lot of the gameplay revolved around drinking potions. A belt could hold up to 16 potions. Not only does this give the player unlimited healing, but it devalued other features such as damage reduction abilities, or debuffs on enemies, or crowd control skills. There are a number of other options that we really wanted to see as part of the combat experience, and they were diminished when players had unlimited healing.
[All the bullet-pointed lists like this one are transcripts of Powerpoint slides Wyatt showed during the panel.]
- How does the player heal?
- Diablo II: Potion Spam
- Non-stop potion guzzling
- Devalues skills.
- Gives player access to unlimited healing.
Another aspect was Combat Pacing. Healing and monster damage are two sides of the same coin. If the player has more healing then the monsters have to do more damage to threaten the player. You must achieve an equilibrium or else too much healing is easy or too much damage is too hard.
Health potions run into spiky damage in Diablo 2, where huge damage comes in all at once. That’s how players mostly die in Diablo 2. Through a lot of play testing we found that we really liked the idea of there being about 3-5 seconds to go from full health to death. I’ll show you what that looks like.
- Game: Tactical Combat
- Access to unlimited healing is worse.
- More player healing = more monster damage.
- “Spiky” damage is bad.
- Instead, 3-5 seconds of heavy damage.
[Short video of a low level Monk punching some flyers in the Festering Woods and taking damage, while Wyatt explains that the red orb in the lower left is the health display.]
Three to five seconds is critical to:
- 3-5 seconds allows:
- Recognize the danger.
- Assess the situation.
- React accordingly.
This is something we realized we had to create monster damage and healing rates to support this system. Here’s what it looks like with spiky damage: [Short video of the same Monk in the Festering Woods punching some flyers and taking about 70% damage per hit. Two hits = dead.]
Now this looks silly and we sort of chuckle about it. “Who would want to play that game?” But at various points during development and even at various points during live, this is what it looks like. And that’s what happens when the player has access to lots of healing and lots of spiky damage. If you’re on a game dev project now and you see lots of spiky damage, I’d take a look at your healing systems and see if they’re too powerful.
[Flux: You can recreate this effect today in Diablo 3 by playing with gear very far below the quality required for a given area.]
Iteration 1: Potion Dilution
The first iteration was called potion dilution. This was an idea we tried very early on, and said, “what if every time I drank a health potion, it had less effect.” The idea was that if players knew their potions weren’t going to heal for as much, they’d be more frugal with the potion use.
I’ll say right now that we weren’t totally thrilled with this even as we put it in. But that’s what iteration is all about. You have to try things and be willing to fail. We knew that even if it wasn’t a solution we’d ship with, it would teach us a lot more about the problem.
- Every Potion reduces the effectiveness of potions for 8 seconds
- First potion full effectiveness.
- Second potion heals for 75%.
- Third potion heals for 50%.
- Fourth potion heals for 25%.
What we wanted was for players to be frugal with potions. What we got was even more potion spam. Think about it, “If my potion is only going to heal me for 25% as much, I’ll just drink four times as many.”
One of the big lessons we learned from this is that diminishing returns or soft limits aren’t always a good idea, particularly when you’re in a fast-paced combat situation. When players have to make a decision whether or not to drink a potion based on the dilution of future potions, that’s simply not going to happen.
Potion dilution: Result:
- What we wanted:
- Be frugal with potions.
- What we got:
- Fights player instinct.
- Set limit is not a good idea.
Obviously that didn’t work, so we stepped back for a bit and thought about what to try next.
Iteration 2: Non-combat Regeneration
Next we tried what we call non-combat regeneration. This is an idea we borrowed from World of Warcraft. In that game if a monster is aware of me then I’m in combat. If no monsters are aware of me then I’m out of combat. That sounds pretty cool! So here’s what that looked like.
[Short video of a Monk in Leoric’s Torture levels. As Wyatt narrates he kills one Cultist, takes about 25% damage in the process, and as soon as the Cultist dies the Monk quickly regenerates his hit points to full.]
The goal we set out earlier, 3-5 seconds of combat pacing. You can imagine if there were lots of enemies around this monk he’d have to play a lot more carefully and use tactics. The idea was for players to play with more strategy, to think how much damage I’d take in the battle, and then heal up after the fight.
It had a couple of problems.
[Short video of the Monk killing Cultists in Leoric’s dungeons, one at a time and not in a group, but never with enough space between them for the out-of-combat healing to kick in.]
One problem. As we played the game more and more, we found some issues. You’d fight some enemies, start to get low on health, and think, “I should probably find a way to heal up some, now.” But there keep being more monsters coming at me from off the screen, so I’m never healing. Not to mention that in an action RPG, if I’m lockedin non-stop combat for five minutes, that’s a really good thing. I don’t want mechanics requiring me to drop out of combat.
Another problem. [Short video shows the Monk kill a zombie in the Act One Jail level, but he’s standing near the barred wall of a cell with more skeletons on the other side, and thus those enemies are aware of him, so he’s not technically “out of combat” range to heal.] The problem was monsters would be “aware” of the character, even if they couldn’t path to him, so they were locking him in combat and no healing.
- In combat: No healing.
- Out of combat: Slow healing.
- Combat is defined as a monster trying to attack you.
If you think about this from a WoW perspective, that game has monster, empty space, monster, empty space. It has this nice pacing that allows you to go in and out of combat. That’s not the case in Diablo 3 since there are monsters everywhere. The idea of dropping out of combat didn’t work in Diablo 3. And we needed it to be really obvious if you were in or out of combat, and monsters that were out of sight or in stealth or off screen would keep you in combat. Since that was our core healing mechanic.
- In combat is hard to understand.
- Doesn’t meet ARPG requirements.
- Need to heal even while engaged with a monster.
- Geometry is important.
- Constantly fighting enemies.
Iteration 3: Defensive Regeneration
The next thing we tried was called Defensive Regeneration. Here the idea is that if three seconds pass without taking damage, your character will slowly heal back to full. [Note that the Demon Hunter’s Brooding passive skill worked this way at launch, before Patch 1.0.4 removed the three second requirement.]
This made a lot of sense, since we had an in/out of combat system. It had promise, but maybe the rules weren’t right. It also made sense because many FPS games, in fact most First Person Shooter games use this. You’re out in the world, you’re not taking damage, you recover. It works so well that some FPS games don’t have a health bar at all. They set the edges of the screen to turn red, you hear your heartbeat or a lot of heavy breathing, etc. These are all cues that you’re taking damage. So what do you do? Back off a bit, don’t take damage for a few seconds, and you heal right up and get back into battle.
- In combat / out of combat had promise.
- Simpler rule:
- If 3 seconds pass without taking damage… slowly heal back to full.
This didn’t really work in Diablo 3. [Short video shows a Barbarian fighting two Unburied. He’s losing and after he gets low he runs away, and circles around a bit while his health quickly refills before returning to battle.] I left the mouse cursor showing in this video so you can see what the player is doing. And it’s not that fun, since you can only run around like a chicken with its head cut off, trying to stay away from enemies just long enough for your hit points to refill. It’s not engaging. Most importantly, it’s not fulfilling my fantasy of battle. “I’m just running around in circles?” We got a lot of complaints about that during internal testing.
- Game mechanics induce behavior.
- Design fantasy-fulfilling mechanics
The lesson from that is, the mechanics will induce particular behavior in players. We all know this to be true. But the behaviors we induce we want to be fantasy-fulfilling. Why does the three-second rule work so well in FPS games? It’s because hiding, lying prone, taking cover, going inside a room… these are all parts of my core fantasy in a First Person Shooter. But they’re not part of the core fantasy in a top down ARPG like Diablo 3.
The lesson is that just because a mechanic works in one type of game doesn’t mean you can port it over and expect it to work. So in this case we had to continue to iterate.
Iteration 4: Health Globes
In thinking about the next mechanic, we knew we wanted the mechanic to match the fantasy. And that’s what got us to Health Globes. The idea here is that, “maybe if need to heal, my best course of action is to get further into combat and when a health globe drops I’ll get healed and keep fighting.” And for those of you who have played Diablo 3, you know that’s the system that we ultimately shipped with.
- Monsters drop health globes at random.
- Health globes heal you when picked up.
We’re very happy with it, here’s how it works in the game. You kill things, get the globe and whoop, you’re back to full. [Short video shows a quick fight, a character with lowered hit points, and then quickly healing with a health globe after the enemies are dead.
Huge success. We were very happy with the pacing, it achieved our goals. It was fantasy-fulflling, it enabled us to limit monster damage (3-5 seconds before you were dead). As well as giving the player the opportunity to heal up.
While we’re on the topic, a little bit OT. A lot of people ask me, “Hey Wyatt, is the health globe drop rate truly random, or are you guys cheating a little bit? Do you normalize out the rates, do you look at my character’s health and dropping more when I’m low?”
No, it’s a true random system. We talked about tweaking it, but we didn’t. At the end of the day, sometimes those random systems are really good for the game. You still have health potions, you still have skills and items, so we wanted to be sure that some of the drama and the peaks and valleys in the health system still existed. So we were pretty happy with that.
- True Random:
- Random fluctuation is good.
- Health potion still available.
- Room for skills and itemization.
Lessons Learned from Health Recovery
So, what did we learn from the health recovery system? Like I said, we put in the potion dilution system at the beginning, even though we weren’t sure if it was going to work. A lot of that just says to me that it’s okay to experiment and iterate. Let the team know it’s going to be an experiment.
Lessons Learned: Health Recovery:
- When you don’t know what to do, experiment.
- Limit healing so you can limit damage.
- Results in more tactical combat.
- Game mechanics should fulfil the fantasy.
We had to limit healing to limit damage. That’s how we create a canvas for tactical combat. The next question is, now that the monsters are doing less damage and the player has time to move around, I alluded to earlier that we wanted player skills. Things that would debuff, or crowd control the enemies. These were very hard to create in a game with health potions, and that leads me to the next topic I wanted to address, the Command Input.
[Flux: Disappointed that Wyatt didn’t do some more postmortem on this issue. Travis Day did address this during the live stream back on Anniversary Day, when he admitted that the health orb system kind of breaks down in the end game, since most characters at that level are surviving (or not) based on skills and life steal, and health globes become somewhat irrelevant.
This is, of course, exactly how things worked in Diablo 2, and it’s been driving me crazy since the Diablo III devs first starting throwing out those “D2 was all about potion spam” comments in 2008. Yes, low level characters spammed potions in D2, but potion drinking was almost irrelevant in the end game, where survival was entirely about life (and mana) leech.
Most well-equipped Diablo 2 characters hardly ever drank potions (very occasionally a purple rejuv in an emergency), and that’s what we see for most players today in Diablo 3, where Health Globes are not often necessary, health potions are almost never touched, and survival is all about life steal, Life on Hit, and defensive skill effects.
That said, I do think the D3 health and resources system is a huge improvement over what we saw in the previous games in the series.
This covers the first section of Wyatt’s talk. Check back later today for sections two and three. In the meantime you can watch the whole video yourself, if you can’t wait for the transcript/analysis.