As with any online real-time multiplayer game, Spiral Knights suffer from inconsistent latency among players from different parts of the world. Latency is inevitable, but the effects it has can be mitigated.
I think latency is usually handled graphically in two different ways:
1) The client's world syncs with the server at fixed intervals (server sends out update after processing all data within a small window of time). The client's avatar updates with the rest of the world.
2) The client's world syncs itself with the server constantly (server sends out update after processing each piece of data). The client's avatar updates independently.
I'm thinking SK uses method 2. This makes latency harder to to deal with in gameplay.
Currently in PvE:
Latency allows a player to run across traps up to a second before they actually become inactive (on the computer screen). On the flip side, it also allows a player to be damaged by a monster that apparently missed them on the screen. Basically a player cannot effectively react to danger because they cannot perceive a danger based on where they see their avatar.
If you change to method 1:
The personal avatar does not update ahead of the rest of the world. While it may take longer for the avatar to respond to input, it's actions and position would be in sync with that of the rest of the virtual world. A player would always see his avatar get hit at the right place and can better anticipate future danger.
Although the player's effective reaction time is reduced, he can more accurately judge distances between his avatar and the objects of the world. It is much easier to adapt to a slowed reaction time than a skewed perspective of distance.
Impact on PvP
Consider this hypothetical:
Person A can send/receive a packet of data to the server every 20 ms. Person B can send/receive a packet of data to the server every 60 ms.
At a given time = 0: A and B are standing next to each other. The same thing is seen on both persons' client worlds. Person A and Person B then simultaneously press the button to move forward, holding it for exactly 50 ms.
Under the current system...
Since the personal avatar is updated independently from the world:
B sees B run from time 0ms to time 50ms.
A sees A run from time 0ms to time 50ms.
What is really happening in the server?
B runs from time 20ms to time 70ms
A runs from time 60ms to time 110ms
How will they see each other run?
B sees A run from time 80ms to time 130ms
A sees B run from time 80ms to time 130ms
In actuality (the server state): A starts to run 30 ms after B starts.
On B's screen: A starts to run 80 ms after B starts. (B's perspective lags the server by 50 ms)
On A's screen: A starts to run 80ms before B starts. (A's perspective of chronology is wrong!)
Chronology of quick actions are not preserved in A's world just because A has 40ms more latency than B!
This is supported by the phenomenon in Lockdown matches in which some people's sword hits appear to do damage a half second before the sword actually swings. I would assume a similar phenomenon occur in gun bullets and bomb blasts, but those occur too quickly for the eye to catch.
It also explains why in Blast Network, people often complain about getting killed in a safe spot that they moved into just a fraction of a second before the bomb blast.
Again, if the personal avatar is updated with the rest of the world, such problems would not exist. Simultaneous events in the server will still be simultaneous in client world (just equally delayed by ping times). This allows players to accurately judge distances at any given time at the cost of a longer response time for commands. I think most players with significant latency would much rather have an accurate picture of location than a slightly shorter response time. People with insignificant latency would not suffer from such a change since the response time can only grow as large as their ping.
Disclaimer: I understand I have no actual knowledge of how SK manages graphics; however, experience tells me that events that are supposed to occur simultaneously are not always displayed so. If each client world is mirroring the server world accurately, two events that intersect at a single location on the server world should not intersect at different locations on the client's world.
PLEASE DO SOMETHING TO ADDRESS THIS PROBLEM
I would appreciate it if people can keep this topic alive. It would definitely help with "drag lag" issues.