Diablo 2: Resurrected server issues caused by popularity and legacy code

A Diablo 2 player in the middle of a battle in hell

Blizzard has peeled back the curtain on the technical side of Diablo 2: Resurrected’s server issues, which have plagued the new PC game since launch. Community manager Adam Fletcher has posted a lengthy explainer on Diablo 2’s blog sharing what’s happened, why it’s happened, and what the team is doing to tackle these issues going forward.

Alongside surges of popularity overwhelming the servers, Fletcher says that part of the issue comes down to legacy code. In staying “true to the original game”, the team kept a lot of the old code, with one legacy service in particular “struggling to keep up with modern player behaviour”.

“We mention ‘modern player behaviour’ because it’s an interesting point to think about,” Fletcher says. “In 2001, there wasn’t nearly as much content on the internet around how to play Diablo II ‘correctly’ (Baal runs for XP, Pindleskin/Ancient Sewers/etc for magic find, etc). Today, however, a new player can look up any number of amazing content creators who can teach them how to play the game in different ways, many of them including lots of database load in the form of creating, loading, and destroying games in quick succession. Though we did foresee this – with players making fresh characters on fresh servers, working hard to get their magic-finding items – we vastly underestimated the scope we derived from beta testing.”

Essentially, Diablo 2: Resurrected has a global database that acts as a central hub, and various regional databases to help carry the load. What the team has found, though, is that they’re saving too often to the former, which means the latter aren’t aiding as much as they should.

“There is no need to do this as often as we were,” Fletcher says. “We should really be saving you to the regional database, and only saving you to the global database when we need to unlock you – this is one of the mitigations we have put in place. Right now we are writing code to change how we do this entirely, so we will almost never be saving to the global database, which will significantly reduce the load on that server, but that is an architecture redesign which will take some time to build, test, and then implement.”

YouTube Thumbnail

Fletcher also talks about progress loss. Players’ characters were becoming stuck in regional databases during the server outage. The team had no way of moving characters over to the global database, so they felt they had two choices: unlock everyone with unsaved changes in the global database, or bring the game offline entirely for a time. The team felt the former was the correct decision as it allowed people to keep playing the game.

Moving forward, though, the team believe they have a way of restoring characters in a way that doesn’t lead to any significant data losses. Fletcher says it should be “limited to several minutes of loss, if any”.

So what is the team doing about all of this? You’re getting rate limiting, for now, to limit people from doing item farms that create and join too many games. Diablo 2: Resurrected is also getting login queues to keep the game from being overwhelmed during popularity spikes, and critical pieces of functionality are being broken into smaller services.

The Amazon using the Lightning Fury skill to destroy numerous enemies in Diablo 2 Resurrected

“Our server outages have not been caused by a singular issue; we are solving each problem as they arise, with both mitigating solves and longer-term architectural changes,” Fletcher says. “A small number of players have experienced character progression loss – moving forward, any loss due to a server crash should be limited to several minutes.

“This is not a complete solve to us, and we are continuing to work on this issue. Our team, with the help of others at Blizzard, are working to bring the game experience to a place that feels good for everyone.”

{"schema":{"page":{"content":{"headline":"Diablo 2: Resurrected server issues caused by popularity and legacy code","type":"news","category":"diablo-2-resurrected"},"user":{"loginstatus":false},"game":{"publisher":"Blizzard","genre":"RPG","title":"Diablo 2: Resurrected","genres":["RPG"]}}}}