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

Help us solve the desyncs

31 posts, 2943 views
Post comment
Filter:    Player:  
Page of 2 (31 records)
sort

8 years ago
Lately there has been a desync problem related to corrupted path cache (you'll note that players desync immediately when the game starts).

The bad news is that we still don't know how it happens.
The good news is that you can help us solve this by reporting desyncs in the following fashion (windows instructions, linux users can get assistance from players in the lobby):

If you find yourself in a desynced game please do the following:
1) Exit the game (can be during the game or after it)
2) Get your infolog.txt (Settings->Game Diagnostic Log in ZKL) copy its content and paste it in http://paste.springfiles.com/
3) In the settings tab there's also "Open game data folder" go there and enter the folder "cache\100rel-\paths".
4) In that folder you will have many files, at least two of them having the name of the map you have just played followed by a number (e.g. "Fields_Of_Isis337485254.pe.zip")
5) Upload all the files with the map's name (there can be more than 2, please verify you didn't miss one).
6) Make a post here with a link to the infolog (see (2)) and to the path files (see (5)).

It is crucial that from a desynced game I get at least 2 reports - one from someone who desynced, and one from someone who hasn't. If you're not sure, get everyone to report.


We can do this! :)

Thanks,
hoko.
+8 / -0
8 years ago
As a side note: Playing on http://zero-k.info/Maps/DetailName?name=LongCat32 leads to desync between Linux and Windows users (https://springrts.com/mantis/view.php?id=3436). How can I help to debug this?
+0 / -0
Was about to post the same USrank[I]burp :P
No idea if it is same desync as the pathcache one, but that map was desyncing in Spring 91.0, and our recent game on it proved it still does in 100.0.
+0 / -0

8 years ago
I'll try to look into it, thanks!

(it's possible to reopen your closed mantis reports if they weren't fixed)
+0 / -0

8 years ago
Also USrank[I]burp since you're on linux, can you send me your path cache of the map?
+0 / -0
curl http://paste.springfiles.com/view/raw/d4f255a1 | base64 -d > LongCat32704460309.pe.zip
curl http://paste.springfiles.com/view/raw/ba7e50de | base64 -d > LongCat32704460333.pe2.zip

Wait, you certainly would not have asked if you were on linux yourself:

http://s000.tinyupload.com/?file_id=76671982893411196989
http://s000.tinyupload.com/?file_id=00918562103512365872
+0 / -0
Thanks!

quote:

Wait, you certainly would not have asked if you were on linux yourself:

It's great to work with smart people! :D
(although I do have curl, because mingw32)

EDIT: They're identical to my local path cache, so unfortunately that'a different issue.
+0 / -0
8 years ago
If it helps, I think it might be somewhat older problem.
https://springrts.com/mantis/view.php?id=4688

https://springrts.com/mantis/view.php?id=4688#c14150
path-checksums were different for players. Maybe noteworthy that checksums were not "randomly different" but that 3 players had one checksum and two had another.

another desync that went away with deleting cache\paths but afaik was not really solved, in 94.1:
https://springrts.com/mantis/view.php?id=3809
+0 / -0
8 years ago
Link
http://paste.springfiles.com/view/c0e7ce33

http://s000.tinyupload.com/index.php?file_id=75447211367474099276
http://s000.tinyupload.com/index.php?file_id=03790351207541378264
+2 / -0
I think this is a good place to ask a question I have about sync error messages.
I Codmo's infolog there is:

quote:

[f=0000410] Sync error for Codmo in frame 402 (got 8edcb77f, correct is
[f=0000813] Sync error for snokeciffer in frame 803 (got c94e221c, correct is 6c58bc86)


Does that it imply that both of them were desynced from the rest?
Or only Codmo was, and snokeciffer was just unlucky enough to have his state compared with Codmo's?

The fact that only Codmo had different path checksum would imply that it is the second option. And this is my understanding of the desync message, it only means that the gamestates differ between some players, but the player shown in the message is not necessarily the one with the "wrong" gamestate.

But the popular understanding is that when player name shows in the desync message, then he is definitely desynced from the rest.
From my experience not necessarily so, and I keep telling people that, but actually I am not sure either way.
Could a Spring dev (@hokomoko) please explain this better?
+0 / -0

8 years ago
Since every client is simulating the game indpendently, there are two situations:
1) The game is synced - everyone share the same state.
2) The game is desynced - not everyone share the same state.

There is no correct state and wrong state (how would I know which is which).
The error message is based on the order in which checksum packets reach the host (that's why the error changed in the example you quoted).

When I used "one from someone who desynced, and one from someone who hasn't" in the post, I meant: "one from someone who appeared in the errors and one from someone who hasn't"
+0 / -0

8 years ago
hey.
for Linuxers I made this simple script.

http://s000.tinyupload.com/index.php?file_id=01581263662438198912

it collects all necessary files and uploads them to transfer.sh. Just copy the link after you executed it.

How to use?
Download file above and make it executable with:
chmod +x spring_desync_helper_script
start it:
./spring_desync_helper_script

I tested it on linuxmint and my arch here.If any problems occur ask me in chat.
+3 / -0
quote:
Since every client is simulating the game indpendently, there are two situations:
1) The game is synced - everyone share the same state.
2) The game is desynced - not everyone share the same state.

There is no correct state and wrong state (how would I know which is which).
The error message is based on the order in which checksum packets reach the host (that's why the error changed in the example you quoted).


I knew all that, except about the order of packets.

Let me rephrase the questions:
Are checksums compared in player-player pairs?
And host doesn't try to find which gamestate is shared by most clients? (which we later could call the "most correct" one)
So when comparing checksums it only uses info about these two clients, and ignores data from others?

When checksums differ between these two at least one of them differs from the rest. Then sync error message only prints name of one randomly chosen player from the pair (based on packet order which can be considered random), right?

So the final question:
When we get sync error message containing player name, do we know his state differs from (most of) the rest, or it is entirely possible it just differs from 1 other player, who in fact is the one which differs from the rest?
+0 / -0

8 years ago
Here's the code which governs most of it.
https://github.com/spring/spring/blob/develop/rts/Net/GameServer.cpp#L603

Disclaimer: I'm not 100% sure in what I write below.

The host does try to split into groups and make a majority vote when generating the errors.
Since the packets don't always come when they should (latency etc.) the vote may not wait for all players.

For a checksum to be wrong there must be at least 2 clients with different checksums.

The sync error is dependent on packet order but also on player order.

quote:

When we get sync error message containing player name, do we know his state differs from (most of) the rest, or it is entirely possible it just differs from 1 other player, who in fact is the one which differs from the rest?

Statistically if it's a big game and only one player appear in the desync error messages, it's very probable that the game is split into two groups where one contains only that player.
+0 / -0
RUrankHuj
8 years ago
http://paste.springfiles.com/view/119d2164
http://rghost.net/6K876dKsX
http://rghost.net/7pCTzFF9N
+1 / -0

8 years ago
Thanks RUrankHuj
Do note that I need at least 2 reports from each game (from CArankRocketFish in your game). In CHrankCodmo's game specifically I was present, so there was no need for a 2nd one.
+0 / -0

8 years ago
Got desync on Ravaged, Here is the replay-file:
https://dl.dropboxusercontent.com/u/56814843/20150909_222954_Ravaged_v2_100.sdf
+0 / -0
For the Ravaged desync (same as _edrush), using Chesti's script:

https://transfer.sh/KzurN/ravaged-v2

Including replay (not sure if it is needed):
https://transfer.sh/YvQ2g/ravaged-v2-malric.zip
+1 / -0
8 years ago
same ravaged game:
infolog.txt
http://paste.springfiles.com/view/1677e4f6
infolog_.txt
http://paste.springfiles.com/view/c4e357b3
pathcache:
https://www.dropbox.com/s/qok64sixq3pumr4/Ravaged_v24285285679.pe.zip?dl=0
https://www.dropbox.com/s/tvwpyitwhttf42l/Ravaged_v24285285703.pe2.zip?dl=0
+1 / -0
Skasi
Same game as previous three:
http://paste.springfiles.com/view/18a52b9c
http://s000.tinyupload.com/index.php?file_id=10213962351249445522
http://s000.tinyupload.com/index.php?file_id=04482119041349157847
+1 / -0
Page of 2 (31 records)