Diablo 3’s Damage Display Detailed


damage-numbers-v24Blizzard posted a blog describing the design decisions behind the revamp of the damage display numbers we see now in Patch 2.4 and Season Five. It’s a nice article with explanation and technical detail about how the changes work… and it even gets into the issues with showing larger numbers and commas vs. periods between digits. Remember the months of controversy over, “Why can’t we see commas in the Auction House prices?”

Here’s a quote:

Initially, we had the idea of highlighting the top 5% of numbers you’ve generated in the last few seconds. The first problem with this approach was that every build is different, especially when it comes to how each dishes out damage. Some pump out small bursts of floating numbers over time while others barrage your screen with a constant stream of information. In our first pass, another issue that arose was that the new system didn’t accommodate expected fluctuations in damage dealt. Take a Power Pylon, for example, where your damage is temporarily augmented. After the Pylon ends, you’ll still want to know when you’re dealing notable damage.

We developed our algorithm over time to account for these outliers, settling on the following rules for which numbers appear in orange:

  • Damage numbers must be over 10,000 to be considered
  • If the damage number to be displayed is larger than the last that was displayed in orange, then display this new number in orange
  • Decay the value of the largest number by 3% every second
    • This reduces the likelihood that you’ll go on too long without seeing any highlighted numbers
  • Ignore the first 10 large numbers
    • This allows for the system to calibrate itself
  • If no damage has been dealt for 10 seconds, reset the system

What do you guys think of the damage display figures in Patch 2.4? Do you like the abbreviated figures, e.g. 1211M instead of 12,107,873,087? Do the orange numbers for your biggest recent crit pop out better? Vote and let’s get some community consensus:

What do you think of Diablo 3's Damage Display System?

View Results

Loading ... Loading ...

I appreciate the effort they made to refine the system, and I like it being less spammy, but I think it’s basically broken and we’re well past the time when a DPS meter is necessary. Retain the pop up damage for those who want it, but put a numerical display in the corner showing total damage over the past 1 or 3 or 5 seconds. That wouldn’t be perfect since it wouldn’t account for overkill, would be very dependent upon the number of targets and bursts in your resource expenditure, etc. (Of course so is the damage display system.) But it would give players a much better sense of their total damage output, which we can now only imprecisely judge by our overall rate of progress/killing.

I don’t find the current system very useful to judge my character progression in the end game. At level 20, when I’ve got one crappy skill and no legs, sure. But end game, most builds are using at least one damage skill at all times, with variables such as: 1) main target vs secondary targets, 2) Splash damage, 3) DoT (often from multiple sources), 4) damage varies depending on your distance from the target(s), 5) whether you’re moving or standing still, 6) within range of a buff, 7) what element is your damage (CoE), 8) the monster type (+Elite Damage), plus also displayed are your pet damage numbers, passive damage from aura-type skills (often on items), etc.

There’s way too much going on at once for a few pop up numbers (that your eye hardly notices with all else you’re doing) to convey anything comprehensive about your actual damage output. Hence a DPS meter is needed to add all that damage up into something you could actually judge your performance from. And of course a punching bag in town to test new kit/build upon would be enormously useful.

You guys are free to disagree, which is why there’s a vote and comments. Click through to read Blizzard’s full blog post with Diablo 3’s Damage Display Detailed:

Engineering Diablo III’s Damage Numbers

To work in software development, whether it’s for business, entertainment, or your favorite video game company, is to know that simple problems don’t always have simple solutions. Game development is, in a word, complicated. There are thousands of moving parts where the smallest iteration can cause weeks of reversions and backtracking. On the outside looking in, it’s tempting to ask, “Why not just fix it?” That’s a bit like asking a baker why they can’t just substitute sugar for sucralose. The answer is similar across the board; “It’s not that simple.”

damage-numbers-v24

Numbers – How Do They Work?

In Diablo III, there’s lots of information thrown at the player. Let’s talk numbers. You see them everywhere! They’re on your gear, they’re in your character profile, and they float around your nephalem’s head while you’re in combat. Behind each of those digits is a huge amount of tech that makes them behave the way that they do.

We heard a lot of player feedback that combat numbers were starting to be overwhelming or difficult to comprehend in moment-to-moment gameplay. In the past, large numbers were exciting to see because they stood out above the rest. How do you bring back that emotional appeal without making players feel like they have lost power?

Patch 2.4.0 introduced a couple of new features to address this. First, we’ve introduced a new in-game option to truncate numbers and display them using abbreviations. Second, we’ve added an entirely new feature that highlights some of your largest damage numbers in a new color. Each of these additions presented their own challenges when we went to implement them; some were design issues, others created localization concerns, and at the end of all these decisions, the result needed to look good.

damage-display2

Initially, we had the idea of highlighting the top 5% of numbers you’ve generated in the last few seconds. The first problem with this approach was that every build is different, especially when it comes to how each dishes out damage. Some pump out small bursts of floating numbers over time while others barrage your screen with a constant stream of information. In our first pass, another issue that arose was that the new system didn’t accommodate expected fluctuations in damage dealt. Take a Power Pylon, for example, where your damage is temporarily augmented. After the Pylon ends, you’ll still want to know when you’re dealing notable damage.

We developed our algorithm over time to account for these outliers, settling on the following rules for which numbers appear in orange:

  • Damage numbers must be over 10,000 to be considered
  • If the damage number to be displayed is larger than the last that was displayed in orange, then display this new number in orange
  • Decay the value of the largest number by 3% every second
    • This reduces the likelihood that you’ll go on too long without seeing any highlighted numbers
  • Ignore the first 10 large numbers
    • This allows for the system to calibrate itself
  • If no damage has been dealt for 10 seconds, reset the system

Where Are My Billions? – Challenges in Localization

If you’ve played the latest patch, you may have already seen our new damage abbreviations. We’ve seen a lot of questions, primarily from our English-speaking audiences, about why we measure in millions, but skip counting in billions.

There are a few reasons, but one of the most important is localization. Diablo III is a global game, published in 13 different languages, so when we make a design decision that affects the written word (or, in this case, written number), we have to remain cognizant of what that change will mean in every iteration of the game. While you might think numbers would be the easiest thing to translate, that couldn’t be any less true.

Here’s an example where what might look like a simple translation can get complicated. Some languages, like Spanish or French, do not commonly use a unique term for “billion.” They instead refer to that amount as what literally translates to “one thousand million” rather than having their own word. In terms of etymology, this is a result of both American and British English evolving the word “billion” to mean “one thousand million” rather than the “one million million” it originally represented.

It gets even more complex when looking at languages like Korean or Chinese, where large numbers are grouped on a different scale. For instance, in English, the nomenclature of a number changes with every third place, such as thousands, millions, billions and so forth. In Korean, the naming convention of a number instead changes every fourth place, using a method called myriad squared. This is because in Korean, numbers are grouped every ten-thousand fold instead of thousand fold.

This issue is compounded by punctuation use. Not every language uses commas as breaks in numbers. Some use periods instead, which is very common in Europe, and others don’t use any punctuation at all.

As numbers in Diablo III grew and we decided to add in numerical punctuation, we needed a way to elegantly “translate” where—and when—this punctuation would appear for each localization. Our code uses a library called ICU, or International Components for Unicode, which provides a great amount of support for localizing software. ICU can be used in a number of ways, but for this feature, we took advantage of its ability to take a number and a locale (such as United States English, French, or Korean) as input and give back a properly formatted number for that locale as output, complete with any periods or commas. Our Localization team also keeps a table that shows what numbers each region chooses to publish and the end result.

A localization table, designating which language truncates at what point.

A localization table, designating which language truncates at what point.

Some localizations opted to abbreviate more or less, mostly out of cultural preferences. There’s a real psychology behind player satisfaction and the actual length of the numbers you’re seeing, and player preference varies on both personal and cultural levels. For example, in English, we opted not to abbreviate in the low millions because seeing “1,000,000” is much more satisfying than “1M.” Skipping the billions place also helped with this, as seeing “1,000M” tells a much more exciting story than “1B.” Of course, number size isn’t the only consideration; the visuals, colors, and movement all play a key role as well.

Making Numbers Pop – Refining Visuals

It’s important to make sure that when a player sees a number, they can quickly understand the implication behind it and what it means to them at that precise instant. In Patch 2.4.0, we aimed to provide even more in-combat information than ever before. This is where those Critical Hit highlight numbers come into play.

New orange crits.

New orange crits.

Simply changing the color was one of many ways we could have presented this information. We asked ourselves a lot of questions about how was best to communicate these big hits. Do we make these numbers bigger? Have them path differently? Make them flash? Do they hang on the screen longer? Or do we just give them a different color? How do you decide which of these options is the right one?

We gravitated towards color because we could present this new information to our players in a drastically different way that passed other user accessibility concerns. Orange numbers stand out; they’re not something you’ve seen before, so subconsciously you pay close attention to them.

Orange also passes the colorblindness-friendly test. When you’re looking at a color wheel, orange is in a different realm than the other colors we currently use for other information. This way players that are colorblind can tell something’s new, too!

color-wheel

When we look at changing colors in our interface, our artists take a look a three options for variation: Hue, Saturation, and Lightness. This is part of what’s called the HSL color space, a common digital standardization for the color wheel. Each aspect is key to adjusting a different emotion or evoking a new response from the player. Do we want to change the mood? Then we adjust hue. If we’re shifting an image from being juicy to more flat, then saturation becomes key. How about drawing attention or driving it away? Lightness becomes the go-to.

As an example, some of the most critical information in the game is how much healing you’re receiving. Healing is literally your life force, and we want it to be very visible. That’s why that information is some of the brightest in the game. We wanted critical hit information to be extremely visible as well, so we played a lot with its lightness levels to make sure you always know when your next big damage spike occurs.

Bring It All Together

When we talk about the Diablo III team, it’s easy to first think of our developers who tweak the way a class or an item functions, or put cool, new features in to explore. However, there’s so much more going on beyond what your hero is wearing or wielding, and our artists, engineers, localization experts, and so many more help us ensure everything comes together smoothly for all of our players around the world.

We hope you’ve enjoyed this in-depth peek behind the scenes of a small feature that, under the hood, is deceptively gargantuan! It’s a privilege to come in every day and work on this game, even when it’s on the little details. Thanks for reading!

Comments

You're not logged in. Register or login to post a comment.
  1. The dps meter is the number one most important utility that hasn't been implemented yet. You could just enable/disable it in the options menu for all the plebs who are too insecure about their own performance comparatively.

  2. A DPS meter would be nice and all but it seems silly to say it is 'broken' without it.

  3. I voted for a dps meter, but I don’t actually want one. I just want to be able to see how much damage I’m doing consistently. The problem is that even with non-crits filtered out, I can’t really read any of the numbers because there are far too many. If I take a screenshot when I think I got a big hit, I could check that way, but I’m not stopping my rift to go check a screenshot.

    I’m even fine with them doing something like swallowing all the damage and outputting a single number every 1-2 seconds, or doing that for each monster, that way I have some way of measuring my progress. Right now I can go “well I see a lot of 50m-80m from strafe, and before I was seeing 40m-70m, so I’m stronger? But trying to see how much damage a fan of knives does during strafe, when I know it should be much larger than the other numbers, yet being unable to identify the number because of spam on my screen is frustrating.

    • This is basically my argument. The number display now is useless (broken) since it's not comprehensive enough to convey useful information about your damage output. 

      Playing yesterday I improved my gear and build enough go to up from GR51 to GR63, and the number pop ups were completely irrelevant to judging my character progression. I just had to go by feel, as I switched gear/LGems/etc I went up to the next GR and estimated how fast I was going, depending on monster type, etc. Paid no attention to the number display, since it told me nothing valuable.

  4. Perhaps I’m in the minority, but I like a nice clean uncluttered immersive gaming experience. I turn all combat numbers off.

  5. If not a DPS meter then a training dummy please.

  6. I don't want a DPS meter that's sharable in any kind of way (it will become mandatory in groups to show a snap of your DPS meter if it happens, it has already happened in other games) but I do agree some more work is required.I lost a HC character a couple of days into the season and then didn't have a free set – sweet Jesus do you notice it when it's gone! My main problem has been that in HC I'm struggling to benchmark where I'm at DPS wise before pushing too hard into the upper Torment levels. The numbers don't really help because I've got Stalgard's Decimator in my cube (it was the only thing I had cubed when I re-levelled) which is +700% weapon damage as a ranged attack. All that means to me is every so often there's a number 5-10 million above what I'm normally seeing and that doesn't help me benchmark when I'm normally tracking other things like "not dying again".

  7. They need a total overhaul of the damage system. The constant dynamic variables and calculations are melting the servers. Rubbing banding is back and worse than in quite awhile. Bane of the Stricken has to go.

  8. Aesthetically I prefer the un-abbreviated damage numbers, but more options is always better in my book so I’m glad they added it. Other than that I would really love a personal dps meter just so I can more accurately compare builds and items etc. I can think of no reasons why this would be a bad thing to implement.

  9. A DPS meter would be a bit weird in this game. In games like WoW it makes sense because people only care about them against bosses, not against every single piece of trash. So you're hitting the boss consistently for some time, very few breaks in your attacks. In Diablo you're constantly stopping hitting one enemy, then hitting another, running to the next one. The enemies are all different, have different toughnesses and so on. It would be a completely meaningless stat.What would be better is something like what Diablo 2 used to have in terms of hit chance and dodge chance. It would say "Chance to hit [last enemy hit]". Well it could figure out the DPS against the last 3 enemy types you fought and store it in some part of the character menu. The heavy dependence on crit chance in some builds would kind of mess this up, though. The problem with DPS is that when you're taking into account crits, it only makes sense over a relatively long time. You may have a 5% chance to do 1,000,000 damage but 95% of your hits are just going to be 10,000 damage, let's say. Yet despite that, your supposed DPS will be 59,500 (I make no guarantee of the accuracy of that maths) – an amount of damage you're never actually doing to anything and, for 95% of hits, will be doing about 1/6 of. What if that crit-derived million damage comes and hits an enemy that only has 10,00 HP anyway? Your actual DPS, as in "damage the enemies have taken because of you" hasn't gone up by a million; 990,000 of that crit damage was just wasted.

  10. I voted for – Better in Patch 2.4 but still needs work.

    I’ve no burning desire for a dps metre. I’d much prefer a way to personalize the display so 9999k would appear as 9.9M. After reading blizzards explanation, i cant understand why its so hard to simply offer a localization toggle in options somewhere.

  11. What good would a DPS meter do when my DPS depends mostly on trash density?What we really need:- Show damage numbers from (these skills only) (pick from active ones).And the big one:- On the character sheet show how much damage EACH SKILL does. No more orange diamonds for elemental and skill damage. No more simple "DPS" display which is lol wrong. (IAS should be one of those orange diamond stats. It is too often useless.) If I have Explosive Blast – Chain Reaction, Arcane Orb – Orbit, Frost Nova, and a bunch of shields/passives, then show me two DPS numbers where my current useless DPS stat is. And obviously my fire% and EB% are factored into the EB number. Not hard.

  12. I like the new system better than the old one, at least it’s readable and not a ‘was that 100m or 1billion?” when it flys through your screen being overwritten by everything that is hitting every .1 of a second. I would like it is your ‘highest damage’ number that gets shows in red lasted a little longer though, and/or was a little more noticable, they are neat to see and actually harder to catch that you’d think when numbers are still flying around.

Comments are closed.