Loading...
  OR  Zero-K Name:    Password:   

Autokick desynced players

14 posts, 502 views
Post comment
Filter:    Player:  
sort
12 months ago
Desynced players should automatically get kicked from games.

You can't see chat when someone desyncs, because it keeps being spammed by error messages.
You can't get votes to kick to pass because of the chat spam, since few know what needs to be done and you cant tell them because of spam.
The desynced player is not part of the game anymore, he's playing his own game.
+2 / -1

12 months ago
Sounds like it would be better to just fix the spamming problem and try to fix the desync somehow, if that's even possible.
+2 / -0
12 months ago
How about trying the lesser evil first and mute those debug messages for unaffected players or reduce to "is now desynced" and "is synced again"?
+4 / -0
12 months ago
A desynced player that is not removed from the game is a permanent handicap for the team he is playing on, it's not fair for his team to be sentenced to a loss because a large portion of their team units are now acting irrationally.

There's nothing a desynced player can do to fix the situation aside from leaving the game. I don't know if reconnecting has any effect on it.

A player stops playing the same game as rest of the server when he desyncs, he's already gone from the game in every way that matters. He can't interact with the gamestate in any meaningful way. There's no point in leaving them in the game.
+3 / -0


12 months ago
It's not fair to the player being kicked from the lobby for something they cannot control nor is it fair to expect people to have to carry the lost players' weights (especially when you get 3 players on a single team desyncing). These instances where a significant enough amount of players should be exited, and a path cache clear on the effected parties should be applied automatically. Ideally from here, the game should prompt the user, if it continues, to verify game files in their local language.
+0 / -0
12 months ago
Ideally, a desynced player needs to be presented with such options as soon as desync is detected.

I agree with unknownrankTinySpider in that the player is not playing the same game as everyone else anymore, so he (/she/it) should sit it out and try to see if any of the presented options (re-download files, reconnect, etc) can fix his game for the next round.

I also agree with unknownrankShaman in terms of it being unfair to get kicked from the lobby. The game should, however, eject the player from the ongoing game if the problem is not automagically fixed within an few seconds.
+0 / -0

12 months ago
Why not autokick potentially cheating players?
Also if there is a real desync units are lost to the team as well..
If kicked just display a message ( why kick ) in Lobby after he / she / it got kicked from game.
+0 / -1
12 months ago
Can we at least have a big modal dialog that appears when a desync happens that explains everybody what a desync is? Explaining the details as a playing player in chat is hard while trying to play and also people have to take your word for granted.

Regarding what to do, I hope that we can at least agree that continuing a game with desync-ed player(s) without doing absolutely anything (current state) does not make any sense and can lead only to frustration and confusion.
+3 / -0

12 months ago
What is the effect of a desync? Does it mean you will deviate further and further away from the "truth" as time passes? Or does it sometimes not matter at all?
+2 / -0
12 months ago
A desync means that the simulations produced different results on different computers. So you are correct, probably both cases (deviate further and not much impact) can happen. but there is no easy way of knowing which is which.

The way the engine works is that only player commands (mouse movement, clicks) are sent over the network and the whole simulation is done only locally.

We can easily imagine cases in which a desync can propagate (ex: a retreating cyclop with 1 hp was hit or not by a recluse - that will have probably a large impact down the road if for one player cyclop is repairs while for other player it is dead) or not matter (ex: same case as above but then a nuke fell over the cyclop killing it).
+2 / -0
12 months ago
While it is possible to rewind a simulation but evidently there is no such feature in Zero-K. I would love to have such feature because it would be possible to rewind in replay and likewise we no longer need to wait 20 minutes to catch up a game, because in order to rewind, you need snapshots of different point of time so we can use the same snapshot to teleport forward in time.

The reality is this feature does not exist and has not come into existence for decade of Zero-K. So, why not accept that it will not come to Zero-K in future as well and accept that the desync need to be kicked?
+1 / -1
12 months ago
I am relatively new so I dont know much about the engine, but is it not possible to do something like show up a dialog and give people a choice to wait lets say 5 seconds or kick the player? I mean, 5 seconds is nothing compared with most game starts and people wait, so I dont think it is a big issue in case a player desyncs. What I do not know if there is a way to "enforce state" on the desynced player, kinda like making sure that the user resyncs in those 5 seconds. As far as I understand the simulation is done locally, but if the game gets paused I think there might be a way of sending the current game state to that player and get him to the same "playing field" if the player keeps disconnecting the dialog will pop again and people will get to decide what to do: pause another 5 seconds and wait for the player to resync or kick him.
+0 / -0
12 months ago
(disclaimer: not an expert on this) Save/load mechanisms could be used to send a desynced player the current simulation state so that he can continue from clean slate. But save/load was never implemented for a multiplayer game, only worked for single player.

Solutions are always possible, it's about effort and prioritizing one over another. Fixing the issues that make desyncs appear are better always than trying to fix a desync after it happened. Nowadays desyncs seem to me rarer than they used to be let's say 5 years ago, so it's not like there is no progress.

I think the initial requests of the thread make lot of sense considering status and effort. I would summarize the issues as:
  • log error spam (helps nobody, but would need another mechanism to highlight the problem is there, otherwise one message can be easily missed)
  • problem is not understood (limits what actions can be taken and leads to people that do understand to be frustrated)
  • game continues (I have seen games in which people from different teams were happy they are winning - would be hilarious if was not sad)

One thing not touched here is: are desyncs games rated? (I knew they are not, but not sure anymore). Because if they are rated they could be used as cheating (desync game if you are loosing).
+2 / -0

12 months ago
Some remarks.

There is no authoritative source of truth, the server doesn't actually run the simulation (we can't afford it). So for example in a 1v1 the players are desynced with each other but you can't point to the one who is "guilty" and the other who is not, they just disagree with each other. You can even have a 3-way desync where everybody has their own version truth.

The engine doesn't expose good Lua API for checking desync. I think the logic is that engine devs would rather just fix the desync than make APIs related to desync. So things like showing a pop-up are more tedious than they should be. I think you'd have to do some fragile parsing of the log spam and hope your logic reflects what is actually happening underneath.
+5 / -0