Right now those with high pings have less time to react to any given attack vs those with low pings. This idea would be to implement a change to normalize ping to a given threshhold so everyone has equal time to react.
first set a duration to normalize to, in this example lets say a ping of 200ms, 100ms in each direction (this could easily change to any other appropriate value if 200 is too high/low)
know the average one-way ping time for each user (averaged over the last x-many seconds as it may change).
user A with 20ms pings (10ms each way) charges a weapon, add 180ms to the minimum charge time (time it takes before you can release the swing at the earliest)
user B with 100ms pings (50ms each way) charges a weapon, add 100ms to the minimum charge time (time it takes before you can release the swing at the earliest)
user C with 200ms pings charges the same weapon, no additional time would need to be added
user D with 300ms pings charges the same weapon, again no additional time should be added
lets look at how this would play out
using a weapon with 500ms swing charge time
"but wait" i hear you say, "they all have different amounts of time to block! its not fair!" and this is true, however, the timing works out such that player A has the same amount of time to react to a reciprocal attack. examine the following table (feel free to re-do the example above with whatever ping times you give for each user to verify)
the times are reciprocal for attacker/defender pairs until you go over whatever ping the times were normalized at. thus player D is at a disadvantage vs lower ping players.
it would help players have an equal chance/handicap vs other players (so long as they're both below the normalization time), and also remove the need for the ridiculous swing delay after you actually release the weapon, allowing combat to feel more fluid in general.
there are some caveats to consider:
-barcode
first set a duration to normalize to, in this example lets say a ping of 200ms, 100ms in each direction (this could easily change to any other appropriate value if 200 is too high/low)
know the average one-way ping time for each user (averaged over the last x-many seconds as it may change).
user A with 20ms pings (10ms each way) charges a weapon, add 180ms to the minimum charge time (time it takes before you can release the swing at the earliest)
user B with 100ms pings (50ms each way) charges a weapon, add 100ms to the minimum charge time (time it takes before you can release the swing at the earliest)
user C with 200ms pings charges the same weapon, no additional time would need to be added
user D with 300ms pings charges the same weapon, again no additional time should be added
lets look at how this would play out
using a weapon with 500ms swing charge time
0ms | user A starts charging his weapon |
10ms | server knows user A is charging |
60ms | user B knows user A is charging |
110ms | user C knows user A is charging |
160ms | user D knows user A is charging |
500ms | user A would have finished charging, but needs to add the artificial delay 180ms |
540ms | last chance user D has to block (540-160 = 380ms to react) |
590ms | last chance user C has to block (590 - 110 = 480ms to react) |
640ms | last chance user B has to block (640 - 60 = 580ms to react) |
680ms | user A finishes charging, releases his attack immediately |
690ms | server sees user A has released his attack |
740ms | user B sees user A's attack |
790ms | user C sees user A's attack |
840ms | user D sees user A's attack |
"but wait" i hear you say, "they all have different amounts of time to block! its not fair!" and this is true, however, the timing works out such that player A has the same amount of time to react to a reciprocal attack. examine the following table (feel free to re-do the example above with whatever ping times you give for each user to verify)
min reaction time vs attacker | A defending | B defending | C defending | D defending |
A attacking | 660ms | 580ms | 480ms | 380ms |
B attacking | 580ms | 500ms | 400ms | 300ms |
C attacking | 480ms | 400ms | 300ms | 200ms |
D attacking | 480ms | 400ms | 300ms | 200ms |
the times are reciprocal for attacker/defender pairs until you go over whatever ping the times were normalized at. thus player D is at a disadvantage vs lower ping players.
it would help players have an equal chance/handicap vs other players (so long as they're both below the normalization time), and also remove the need for the ridiculous swing delay after you actually release the weapon, allowing combat to feel more fluid in general.
there are some caveats to consider:
- stamina drain: even tho low ping players will be charging for longer, their charging stamina drain (different from 'holding' stamina drain) should only apply for the normal charge time of the weapon, not the additional time
- charge times: higher ping players will take longer to charge, meaning they cant swing as fast as other players. The charging circle should charge as normal for the weapon, so their minimum release time would have a more full charge circle than those who have no artificial delay to their charge
- abnormal/erratic ping times: this could result in getting various artificial charge delays but its not clear how much if any advantage it would afford you
-barcode