The second season of WoW classic’s Season of Discovery (SoD) is live—and the layers are acting up again, this time in Stranglethorn Vale (STV). For the uninitiated, this season brings Blood Moons to STV: 30-minute PvP brawls that tick around every three hours. The main issue? The bouncers at the door aren’t great at their jobs.
SoD’s server infrastructure runs on layers, which are meant to chop up the server load and keep things running nicely. Ideally, players engaging in these large-scale PvP events would let the layer system plonk them somewhere with a balanced amount of players.
In reality, they’ve been shuffling into different layers on purpose by grouping up, leading to what one dev describes as a “gross” user experience. Senior game producer Tom Ellis took to Twitter to go over the technical details this weekend (thanks, WoWHead). As he notes, layering actually has its roots in a system which pulled World of Warcraft out of the fire 10 years ago, despite putting SoD in hot water now.
Where it all started
“Once upon a time, a realm ran one copy of each zone locally on its own hardware … it was all running in the same place, you could kite mobs across zones, escort quests had NPCs pathing across zone boundaries,” Ellis writes. “As hardware improved and performance improvements were made, expansion after expansion we raised the cap on the number of concurrent players we allowed to log in.”
This caused major problems however, when the CPU cores started to struggle under high loads. “This all came to a head in Warlords of Draenor when in the face of a very successful launch the starting zones in WoD were completely unable to handle the load they faced.” Ellis outlines how a former Blizzard developer spent “three days and nights (we don’t condone that sort of behaviour anymore!)” developing what’s now known as sharding technology.
“It made the game feel less cohesive, but it meant the realm cap and zone capacity were now disconnected entirely, it also gave us the ability to have specific values for specific zones.” Ellis says the team wasn’t intending to use sharding in classic, but “we had to find a way to use modern sized realm caps but not crush the zones with players.”
The major issue? Sharding messes with Classic-era vibes. At the time, it wouldn’t let players kite mobs or hunt each other in PvP across zones: “both people should keep chasing each other into the new zone and in a sharded world, they could end up on different destination shards.”
From sharding to layering
Instead, the sharding tech was reinvented by Omar Gonzalez, a developer who had apparently “locked himself away for weeks” to get Classic running as per an interview with Ion Hazzikostas in 2019. Ellis says “he took sharding and started stitching the shards together into something that became known as layers. Yes, a layer is actually just sharding with a lot of sticky tape.”
This solved a massive problem for Classic, but the technical debt would rear its ugly head again in Season of Discovery. “The biggest problem we are slamming into at the moment is some early code assumptions for layering are now very problematic, all zones in a layer have the same number of players that can be in the zone. We can’t for example say, 500 people in Ashenvale, 1,000 people in Orgrimmar, they all use the same value. This is a nightmare when zones perform very differently based on what players are doing.”
As Ellis points out, layering doesn’t just cause problems for the zone it’s happening in. “If the entire server goes to STV during the blood moon, we spin up entire layers to handle the extra STV, so we may be running 16 empty copies of every other zone just because we need 16 STVs, gross.”
In a second thread, Ellis does a deeper dive into Season of Discovery’s woes. “Since everyone is forming five-man groups and usually one person arrives ahead of the others, it’s running into the max value for the zone and not allowing the rest of your group to come into the same copy … think about it, if the zone can handle 500 people, and allows them all in then they each invite 4 more people, ah crap, we’re going to crash. So we have to have a hard limit somewhere.”
The full thread’s absolutely worth a read if you’re interested in this sort of thing, but to keep things brief here: “The TL;DR? Groups are hard for the layering system to handle, and once a zone is full the [user experience] at that point is gross. As the Classic team already mentioned, there’s changes coming to help improve that.”