If you played Diablo 3 long enough, this is likely a familiar experience to you:
You are fighting innumerable denizens of Hell (or sometimes innocent wild critters) in a hallucinatory nightmare created by ancient Nephalem spirits, commonly known as a Greater Rift. The enemies outnumber you one hundred to one, they surround you on all sides and you can see bloodlust in their eyes. And yet, not even a shadow of fear lingers in your mind. In fact, you have them right where you want them. A devious smile crosses your lips as you prepare to unleash your devastating powers on those who dare stand against you.
With all the buffs active and enemies grouped up, you finally use your main damage skill. But something is amiss. Your character obeys your order and swings their weapon but no light or fire is coming out. You try it couple more times - to the same effect. You change tactics and try to move away, but as soon as you take a couple of steps in any direction you are forcibly teleported right back where you started. You are trapped.
At this point you notice that the enemies suffer from similar condition: they move a bit and try to attack you but nothing happens. You see your latency indicator in bottom right corner turn red. With bated breath you move your mouse cursor to hover over it: "3762 ms". Resigned to your fate, you continue holding down your attack button and await your judgement. For a while nothing at all happens and then suddenly BOOM - with a bright explosion of light multiple attacks and all the skills you tried to use but couldn't come out in an instant. You teleport 5 meters to the left and, last but not least, the "You Have Died" message appears. You slam your table and shout out in frustration: "Bull$#@! This game is unplayable!".
But then you click "Revive on Corpse" button and continue playing anyway...
This article covers different kinds of lag you can encounter in Diablo 3, ways to deal with it or to prevent it altogether.
Understanding the Lag
"I'm lagging" has been a top-tier excuse used by gamers since times immemorial. Nearly every game (especially online games) has lag in some capacity. They are usually caused by some deficiency in your hardware or internet connection, which causes your inputs to desync with your avatar's actions in-game. Diablo 3, of course, has these same lag but they are not the focus of this article. After all the only thing you can do to fix these lag is fix your stuff: upgrade your PC, call your ISP and shout at them, you know the drill.
In Diablo 3 all the game logic is calculated on the server. The game works at 60 ticks (or frames) per second, so each tick in only 17 ms long. During this time the server has to process all the actions performed by the players, calculate all the damage done and send the results back to the players. If the server fails to do all the calculations in time, then the client won't have any information about the updated game state and will have to revert the game to the previous tick. From here on out, there's several scenarios that can play out:
- Good Ending. If the lag is caused by a single event that produces a lot of calculations then the server will catch up after a few ticks and continue normally.
- Neutral Ending. If you are continuously creating more calculations than the server can handle, then there are two ways this lag can be resolved: either you reduce the amount of targets (by killing some of the monsters) or you reduce the amount of attacks (usually happens when you die).
- Bad Ending. If no one is dying and you continue creating more and more damage calculations for the server to process, then eventually the server will just give up and you'll get "Connection Lost" or "Game Terminated" error.
Causes of Lag
- More Monsters. This is undoubtedly the root cause of this entire lag problem. Back before Reaper of Souls people were complaining that there's is not enough monster density. Eventually the devs caved and massively buffed monster density across the board. So we arrive to present day, where it's not at all uncommon to fight 100 or 200 enemies at once (especially if you have a zBarb pulling them). As it turns out, the engine is not built to handle such large numbers so we get lag if we try to attack those monsters too much.
- More Players. With each player you add another source of damage and you also have one more client that needs to receive all the game data on every tick from the server. Because of that, the game gets more laggy with more people in it even if these people don't do anything.
- AoE Skills. Pretty much the same as more monsters. To actually create a lot of calculations for the server you need to hit many monsters at once. If you use a single target skill (even a very fast one such as Strafe or Corpse Lance), you will only produce 10-20 damage instances per second. At the same time a simple Wave of Light or Multishot hitting 50 monsters with 2 APS results in 100 damage instances per second.
- Area Damage. This stat makes the number of damage calculations go completely out of control. In the above example out of 50 mobs hit, on average 10 proc AD. Each proc damages the 49 remaining monsters and the total amount of damage instances generated each second shoots up from 100 to 1080.
- DoTs and Channeled skills. Most DoTs in the game tick 4 or 5 times per second producing as many damage instances as a character attacking with max Attack Speed. Moreover, it's very easy to have multiple DoTs from one character, and in some cases multiple stacks of the same DoT. DoTs that damage every enemy in an area are typically more laggy than DoTs that function as a debuff on monsters. Channeled Skills are also dangerous because they tend to have huge Attack Speed Coefficients, which make it possible to hit 10-15 times per second.
- CC and other effects. The lag doesn't have to be caused by damage, if you hit a lot of enemies with any debuff, crowd control effect or anything like that, you are making server to do more work and bring it closer to that threshold where 17ms is just not enough.
Dealing with the Lag
When you're playing solo, you have the ultimate tool to deal with any lag - the ESC button. In solo opening the menu pauses the game and that gives server the time to catch up. As soon as you start lagging press ESC. Watch enemies in the background, when they freeze it means the server has caught up. If the lag is small you can unpause the game and continue playing normally. If the lag is bad and you start lagging immediately after unpausing, you need to fully commit to "ESC gaming" until you clean up the current pull. It goes roughly like this, starting from the game being paused:
- Press ESC to resume game.
- Press one skill with an animation (You can also press any amount of skills without animation if needed).
- Immediately press ESC again.
- Wait to the server to catch up.
- Repeat from step 1.
This is quite easy to do but can be very annoying and a single 10-second long fight can take over a minute of real time if you play it like this. Unfortunately some builds rely on this technique so you have no choice if you want to push them to the limit.
In multiplayer there's no pauses so you have to play through the lag. When dealing with the lag you have to be aware of one thing. That thing being the unstoppable marching of time that is slowly guiding us all to an inevitable death. It goes without saying that even lag can't stop time (unless you are on console). What that means is all the actions you take will happen exactly when you press the button.
For example, lets say you started lagging on frame 0. Two seconds later (on frame 120) you can only see frame 10 on your screen and you realize that you are lagging. You cast Serenity to protect yourself. This Serenity will only activate on frame 121, not on frame 11 (and if the lag is bad enough you will only see this frame 10-20 seconds later). The same goes for every action you take. In essence, if you close your eyes and pretend that there's no lag, you can continue playing normally and perform your DPS rotation no matter how complex it is, even while lagging. Below are some general guidelines that can help you to do what you want, despite the lag.
- As a DPS you need to focus on dealing damage, so try to cast your main damage skill and keep all the major buffs active. As a support (or RGK), it's best if you do nothing. Just use a single defensive skill and/or move away.
- Don't spam more than one skill with an animation. If you need to cast some other skill once to activate a buff, take it slow: stop spamming your main skill first, cast the other skill once or twice and then wait a bit to let it resolve.
- If you want to move or use a movement skill, issue exactly one command. After you move for the first time you camera position will change, but you won't be able to see that for a while. If you issue another movement command before that it will often make you move in unpredictable direction depending on pathfinding and map geometry. For the same reason, moving also messes up your ability to aim any of your skills. In general, you should only move during lag when it's the only thing you do.
Preventing the Lag
There are a number of things you can do to try and prevent lag altogether, starting from before you even launch the game and down to small adjustments of your playstyle in each rift.
- Choosing the Region. Not all servers are created equal and not all servers have the same population. In terms of lag the order goes: EU is by far the worst, NA is noticeably better and Asia is the best. Depending on your location and internet connection you may have decent ping even when playing not on your home server, and since all progress is reset every season it's easy to make the switch.
- Choosing the Server. You can change the server your game is hosted on simply by going to menu and creating a new game. In some cases your server can have higher than average load so if you think that you're lagging more than usual, remake game. It's also a good idea to remake a game if it has a lot of map discovered in Adventure Mode (e.g. don't play GRs in the game where you just did the Bounties).
- Choosing the time. Again the same principle: less players = less lag. Evenings are the most laggy time of day and weekends are the most laggy days of the week. On a larger scale, the first couple weeks of a season are significantly laggier than the rest of it.
- Choosing the activity. The lag is really only a problem when you are pushing high GRs, if you are doing Nephalem Rifts or Bounties you will never lag, and if you're speedrunning GRs in 2-3 minutes the lag is very mild. It's a good idea to plan your pushing sessions later in the season or at least outside of peak hours.
- Choosing the build. It's not uncommon for several builds to be close to each other in performance in any given season. You can't see it on the leaderboards because the build that is considered the best takes the top spots and soon after everyone else copies what they see on rank 1. Nonetheless other options are usually only a little bit weaker (if at all) and you can choose to play a less laggy alternative. Check out our 4-player META post to learn about possible team compositions.
- Removing Area Damage. As explained above, Area Damage massively increases the number of damage instances you produce with your attacks. In 4-man groups only the Trash Killer (and in rare cases the RGK) are allowed to have Area Damage. As a support you need to make sure that none of your items have Area Damage and also remove it from your paragon.
- Don't make massive pulls. On some maps and mobsets it's very easy to make a pull with 100+ monsters, but if you lag out and die on such a pull, then it does you no good. It's much better to do two pulls with 50 monsters and kill them smoothly, even if it feels like you're wasting time.
- Watch out for Elite Affixes.
- Illusionist is by far the most dangerous one. They add a bunch of mobs to the pull and for some reason illusions are a lot more laggy than normal enemies. You have to make way smaller pulls when an Illusionist pack is involved.
- Health Link can also cause extra lag but it's very dependent on your attacks. Some skills don't trigger Health Link properly and some others cause crazy lag.
- Missile Dampening can cause some projectiles to bunch up and produce more hits than usual.
- Only attack during your DPS window. You want to kill enemies in as few hits as possible. Hitting them without killing is what causes by far the most lag, so it's often better to do nothing while waiting for your Convention of Elements, even if it means losing some potential damage.
Notoriously Laggy Builds
Lag is something you can't avoid completely but there's a number of precautions you can take to minimize them.
- Don't push during prime time.
- Remove Area Damage.
- Pull less enemies.
If you do lag despite all that, then try to not panic, don't spam all buttons, just stand still and play like you normally would.
Written by Northwar
Reviewed by Facefoot