Guild Wars 2 (GW2) launched with a system called “culling”, explained by Habib Loew of Arena Net (AN) as follows:
In order to cut down on the network resources that were used by the game and to reduce the client-side system requirements, we implemented a culling system, which imposed a limit on the number of characters that could ever be reported to your client. This meant that only the characters closest to you would actually get reported.
While this achieved our goal of limiting bandwidth and client-side resource utilization, it had the unfortunate side effect of causing large battles in WvW to be confusing, as there were sometimes many enemy players that were completely invisible. Additionally, there were side effects of culling which could result in stealth characters getting up to two seconds of additional invisibility when coming out of stealth.
While culling created some negative experiences and was a sore point with the community, it also helped to prevent the kind of client-side lag due to mass combat that I’ve experienced in every other MMORPG, including WAR, Aion, and SWTOR. In those games in mass combat, the frame rate dropped significantly and the game client sometimes froze for periods of time as it struggled to render all of the characters and their actions.
ArenaNet’s Solution to Culling
In the article linked above, Habib explained that culling is being removed, and that AN is providing 3 settings that enable you to tune the experience / performance related to characters in WvW:
- How characters are rendered: high resolution, low resolution “fallbacks” until the high-res loads, or nameplates only
- The WvW character limit: how many of the reported characters render with a model and how many are rendered only with nameplates
- The WvW character quality: how many of the characters rendered with a model use the high resolution models and how many use the lower resolution fallback models
The new system will allow players to fine-tune their WvW mass-combat experience, or as I like to call it: “choose your own lag.” We’ll have the see these changes in action, but on paper AN is providing an innovative and flexible solution for a very difficult technology problem not unique to GW2 or even MMORPGs. For most games, you have control over the graphics settings in general but not as much control as the 3 settings described above for character rendering.
I have a very solid Sager gaming laptop, but I know it’s not beastly and I hate lag, so I’ll probably try out the low resolution “fallbacks” option for how characters are rendered and with a limit of 25-30 characters, and see how well it works. For WvW, the most important thing is knowing the numbers of your opponents, then after that knowing what class/spec each player is. I’d rather have lesser graphics than lag that impacts performance.
Server performance will probably not be improved by these changes. It’s possible that with a higher amount of data for characters being sent from the server to the client that server performance may be negatively impacted.
This brings us to the next point: server performance.
The Removal of Culling Doesn’t Address Server Performance
There is a lot going on in real-time in an MMORPG: each game client talks to the server to relay each character’s actions, the server manages all the mob AI and combat calculations to determine outcomes of ability uses (damage, healing, players states due to CC, etc), and the server communicates back to the game clients what is going on, and each game client renders this information so that you see the visual effects of the combat, updates to HP bars, etc.
It’s important to note that culling does not address server-side load, which is why even with culling in place there are times when zones in WvW have server-side lag. After all, even if other characters are culled, the server still knows that they are there. You can tell when there is server-side lag when you and other players experience a noticeable multi-second delay before an ability activates.
What is causing the current server-side lag? I’m not sure, but ArenaNet made at least one design choice which increases server load: the way conditions were implemented. Colin Johanson discussed the performance of conditions when explaining why there is a cap of 25:
Colin: Currently no. Interesting statistic for you: every condition in the game costs server bandwidth. ‘Cause we have to track how often the condition is running, what the duration of that condition is and what the stack is. So the more stacks we allow them more expensive it gets because we’re tracking every additional stack on there. And so we could, say, you can have infinite stacks. Number one: that becomes really unbalanced. But number two: it’s actually extremely expensive for us, on a performance basis. That’s one of those weird, kind of back-end server issues that can help make game designer decisions regardless of what you want to do with it.
But there’s more to tracking the condition stacks on a target – consider also that condition damage is dynamic in GW2 – that is, it changes over time. In World of Warcraft (WoW), if you cast a Damage-over-Time (DoT) spell on a target, the damage is fixed for each tick at the time of the attacker’s spellcast – that is, the damage is static and does not depend on the attacker’s “state” at the time of each tick. “State” is a term in computer programming that describes all of the variables for a particular thing, e.g. a character. The WoW model for DoT simplifies the calculations performed by the server. By comparison, when you cast a DoT in GW2, the damage inflicted for each tick of the DoT changes based on the state (in this case how much condition damage) the attacker has at the time of each tick. This is why the ticks from burning or bleeds on a target sometimes change over time. If you consider multiple attacker’s placing stacking bleeds on the same target, each set of attacker bleeds requires its own calculations based on the state of each attacker each time the conditions tick. These calculations add up (no pun intended).
Server-side scaling is a very challenging problem, and as I recently wrote in my first article on The Elder Scrolls Online, no game developer has delivered a system that gracefully scales for a high number of players in a small area.
We’ll have to see how AN’s removal of culling coupled with the new character settings pans out.
What do you think of the AN’s proposed system?
- 2013/03/16: fixed “bugs” in my writeup per Michael’s Chowns comments, and reordered the sections for clarity