The way I look at it, the best bet to fix server lag is to generally reduce calculations on the server. Which can be implemented in a variety of mechanical changes to the game. Generally zerging is the root cause of server lag, where anything that is used by zergs will drastically raise server calculations. Most of the lag/ping you see is due to the servers unless you are from extremely long distances. As a reference, for me in the North east corner of the US connecting to the NA server in Texas I sit around 110ms ping, where my connection to Texas sits around 11ms.
gcd = global cooldown (1 ability per ~second)
dot = damage over time
hot = healing over time
aoe = area of effect
proc = when a condition is met, an effect will happen
For a basic understanding of how calculations affect server load causing lag Try to recognize the trends that happen as population increases
Calculations for single targets
1v1 each uses a single target for their gcd = 1 player * 1 player hit * 2 teams = 2 calculations
10 man v 10 man each uses a single target for their gcd = 10players*1player hit*2 teams = 20 calculations
20 man v 20 man each uses a single target for their gcd = 20players*1player hit*2 teams = 40 calculations
30 man v 30 man each uses a single target for their gcd = 30players*1player hit*2 teams = 60 calculations
Calculations for a 10 tick dot
1v1 each uses a 10 tick dot for their gcd = 1 player * 10 ticks * 2 = 20 calculations
10 man v 10 man each uses a dot for their gcd = 10players*10 ticks*2 = 200 calculations
20 man v 20 man each uses a dot for their gcd = 20players*10 ticks*2 = 400 calculations
30 man v 30 man each uses a dot for their gcd = 30players*10 ticks*2 = 600 calculations
Calculations for aoes
1v1 each uses an aoe/single target for their gcd = 1 player * 1 player hit * 2 teams = 2 calculations
10 man v 10 man each uses an aoe for their gcd = 10players*10players hit*2 teams = 200 calculations
20 man v 20 man each uses an aoe for their gcd = 20players*20players hit*2 teams = 800 calculations
30 man v 30 man each uses an aoe for their gcd = 30players*30players hit*2 teams = 1800 calculations
combination of aoe and dots in one (think seige, caltrops, destro ult, wall of elements, etc)
1v1 each uses a 10 tick dot aoe for their gcd = 1 player * 1 player*10 ticks * 2 = 20 calculations
10 man v 10 man each uses a 10tick aoe dot for their gcd = 10players*10players*10 ticks*2 = 2000 calculations
20 man v 20 man each uses a 10tick aoe dot for their gcd = 20players*20players*10 ticks*2 = 8000 calculations
30 man v 30 man each uses a 10tick aoe dot for their gcd = 30players*30players*10 ticks*2 = 18000 calculations
Where Procs come in
Where things get worse is when procs get introduced on top of this. For instance, when the meta shifts towards proc sets. Especially when those procs end up doing an aoe or dot which hit other players. Imagine taking #calculations + (proc chance*number of chances * proc effect)
for a worse case scenario a 30v30 aoe dot from before, but everyone had single 10tick aoe dot proc 10% chance set
30players*30players*10 ticks*2 = 18000 calculations
==> 18000 +0.1chance*10chances*(30players*30players*10 ticks*2) = 36000 possible calculations from each player just pressing one button each.
Where time plays in
Now to further put it into perspective, all of the above is just summing up a single round of gcds. It may look like maybe aoes are the issue and maybe they should be capped (zos tried before), but the underlying issue is when calculations can all overlay at once. so lets look at comparing a round of 30v30 aoe vs 30v30 dots over 5 gcds.
Dot
600,.,.,.1200,.,.,.1800,.,.,.2400,.,.,.3000 = 3000 Calculations across 5 gcds
Aoe
1800,.,.,.1800,.,.,.1800,.,.,.1800,.,.,.1800 = 9000 Calculations across 5 gcds
Aoe Dot
18k,.,.,.36k,.,.,.54k,.,.,.72k,.,.,.90k = 90,000 calculations applied across 5 gcds
(notice the ramp up effect, the more ticks and duration an ability has, the greater the ramp up effect)
What is funny is how lag pushes players to cause more lag. For instance say over the 5 gcds you can only seem to get 1 ability off, well then find what does the most damage in that time. I'm sure you will find that the longest duration aoe dot will most likely do the most dps reliably ....which in turn furthers the lag.
Here are the summed up inherent issues with how over time effects and aoes affect the server. I also provided solutions talked about over the years in multiple forum threads. To make it easier to discuss certain solutions I have numbered them. There are other issues with the servers also talked about in threads before like the bot checker affecting the server. Keep in mind that just about any of these could be implemented through battle spirit so pve is not affected.
dot/hot issue: Calculations will stack, causing the load on the server to essentially ramp up in calculations and later remain at this ramped up state once in rotation. This will cause a wave like feeling, where the server is fine> dot rotation> lag> durations die down>lag dies down> reapply rotation> lag>>>>repeat
Direct Mechanical Solutions to Reduce Calculations from dots
1-Make over time effects no longer stack (reduces the ramping effect, only hurts mindless zerg spammers, promotes build diversity, prevents future dot proc metas like sloads)
2-Cap how many over time effects can be applied on a target (prevents Xv1 suffocation by numbers, won't have the issue of two players running the same ability, prevents zergs from stacking hots to limit the ramp effect)
3-Make over time effects snapshot the attacker's/healer's stats to avoid recalculating the base value each tick (stops recalculations of the base values)
4-Less ticks, balance for equal damage (will just result in less calculations, will feel more like how seige ticks on you)
Indirect Solutions to dots
5-Nerfing damage so dots are used as a tool instead of a lifestyle (Will just cause community uproar, but would eventually lead to less calculations, don't bother discussing)
6- Try to remove any unnecessary dots tacked on to abilities(pretty trivial, but less dots = less calculations)
aoe issue: Can instantly cause a "burst" of calculations. This would cause a spike feeling, where the server appears to freeze for one instant (seen when a good bomb goes off)
Direct Mechanical Solutions to Reduce Calculations to aoe
7-Aoe caps(tried before, but made zergs practically not wipe-able, drastically hurt solo/smallman potential)
8-Place aoe caps on non ultimate abilities (would promote group coordination over mindless uncounterable spam, Reduces how much smallman would lose with blanket aoe caps)
9-Make Aoes scale with players initially hit, like how proxy det works but with a smaller modifier, for example [+5% per player hit] (over time leads to zergs spreading out, less aoe calculations)
10- Make Heals apply to only group members when in a large group (could talk about also reducing the max group size to 12)
Indirect Solutions to aoe
11-Nerfing Aoe damage (again would cause uproar and drastically hurt solo/smallman, but eventually leads to less builds utilizing only aoe, don't bother discussing)
12- Remove unnecessary aoe (again trivial, less aoe = less calculations)
Edited by MincVinyl on February 19, 2020 4:55AM