5 ms·
I wouldn’t think that if you get a desync error the only option is to quit. Couldn’t you give the user the “Desync Detected” dialog box, but then allow them to
by roryokane 15y ago
I wouldn’t think that if you get a desync error the only option is to quit. Couldn’t you give the user the “Desync Detected” dialog box, but then allow them to choose a player whose version of the game state should be considered the correct one? Then you would wait a few minutes while the most-chosen player sends all players all state in their copy of the game, and then the game can resume from that state. It may frustrate the user to have a long pause in the middle of their game, but not as much as it would frustrate them to have all of their game progress so far lost.
You would choose a player to be considered to have the master copy by who is least likely to be cheating. In the case of a tie in votes, the player with the master copy could be chosen with a deterministic random number generator instead.
- iam 15y agoI think this would essentially amount to having save/load game for multiplayer, and how often have you seen games have one of those? Still, desync errors are pretty common in early versions of RTS, I remember pulling my hair out while playing Starcraft and getting desynced non-stop. Or maybe it was the cheaters!
- seabee 15y agoMultiplayer save/load is not prevented by technical issues as much as it is by development time constraints and the ideal that such a situation is unnecessary. A scenario editor is not that far removed from dumping the current game state. Robustness is no incentive either, since people will put up with a lot of bugs from games.
- nopassrecover 15y agoI think the point was that resyncs (exchanging game state) are too intensive (hence the prohibition on "join in game") - as you say if people are prepared to wait a few minutes it's less of an issue. Having said that, this explains load screens on joining multiplayer games much better for me (first load is a state sync, but subsequently input-sync could be sufficient).
- algorias 15y agoI think we'd be talking about seconds here, not minutes. 1K units might be a lot to update in real time while doing a bunch of rendering etc, but a dedicated sync pause shouldn't really take very long in isolation.