TLDR:
1. Introduce a new armor rating (condition armor)
2. Bundle up condition stacks
3. Fix condition damage at the time it is applied
all of which will eliminate low value condition traffic and free up capacity for other combat system improvements.
GW2 has a wonderfully rich combat system for small scale (max 5v5) PvP. This is great for the few of us who spend our GW2 time doing small scale PvP.
Unfortunately, a lot of us spend time in larger battles (PvE events and WvW battles) where the small scale optimisation of GW2’s combat system has resulted in a dumbing down of its large scale combat.
The biggest issue is GW2’s condition system which, while great for small scale PvP, comprises the bulk of combat processing and traffic. This creates a massive performance load in larger scale battles where the level of this processing/traffic increases exponentially. The limitations imposed to allow large scale combat with this system have degraded the quality and fun of large scale battles in GW2. Specifically:
- AoE capped to 5 targets (to limit the number of condition calculations) has made mindless zerging the dominant strategy for large scale battles.
- Condition capping (to limit the number of condition calculations) has removed condition based combat styles from large scale events.
Part of the problem is that every build of every class constantly generates conditions on their targets regardless of whether or not the build was designed with condition damage in mind. This means the combat engine spends a large part of this time processing a lot of low value conditions.
But what if the combat engine didn’t have to spend so much time processing low value conditions?
Suggestion #1: Condition armor
- Condition armor is an armor rating that ignores conditions below a certain damage threshold. The threshold may be different for different conditions (e.g. the threshold for Burning may be higher than that for Bleeding, because Burning has a higher base damage).
- The code: Each target has a condition armor rating (by condition type) which is passed to the client. When the character generates a condition on the target, the client checks against the targets condition armor rating and only reports conditions to the server that exceed that rating.
- Scaling events: the condition armor rating can increase as the event/battle scales up.
Suggestion #2: Condition bundling
- Condition bundling is where conditions are held back until the character has stacked enough to apply them as a bundle. This reduces what would be 25 individual applications each requiring processing, down to a much smaller number of higher value bundles. (E.g. Instead of applying each stack of Bleed individually, the character’s Bleed stacks are held back until it has generated at total of 5 stacks which all get applied as a single bundle.)
- The code: Targets have a bundle level for stackable conditions. When the character generates a condition on the target, the client checks against the targets bundle level and holds back stacks below the bundle threshold. When the character has accumulated the number of stacks required for the bundle, then the bundle is reported as single large application of the condition.
- Scaling events: The bundle level can increase as the event/battle scales up.
Suggestion #3: Fix condition damage at the time it is applied
- Set the +/-cond duration and +cond damage values at the time the condition is applied, rather than adjusting these each tick. This reduces processing each tick to reporting the damage applied only.
- Code: Set the +/-cond duration and +cond damage values at the time the condition is applied.
- Scaling events: Use this whenever the server starts to come under load.
Overall, these changes will free up server capacity and bandwidth for things like removing the 5 target cap on AoE (the biggest single driver of mindless zerging). Other effects will be: non-condition based builds will do less condition damage (cond armor); some condition based builds may do more damage (easier to get on the stack); some condition damage will be delayed (bundling); minor changes to the level of condition damage applied (fixed cond damage).