Desync reports - Comparison of levels

Post your ideas and suggestions how to improve the game.

Moderator: ickputzdirwech

Post Reply
CrushedIce
Long Handed Inserter
Long Handed Inserter
Posts: 57
Joined: Sat Sep 13, 2014 8:52 am
Contact:

Desync reports - Comparison of levels

Post by CrushedIce »

I recently noticed that in case of a desync one player gets a "desync report", which is stored in the folder "archive".
In this report is the desynced level and the reference level.
I thought it would be a great addition if we would have some sort of a tool which allows us to compare these 2 levels. As a result it should give the entity which caused the desync.
This would make it much easier to find out what actually caused the desync and may help to reproduce it.
Maybe the devs already have something like that but even if not i think it would't be too difficult.
What do you think about this idea?

BTW: In my last game i got stuck in an endless desync loop and it worked with loading the desynced-level.zip of the desnyc report - may help someone ;)

User avatar
cube
Former Staff
Former Staff
Posts: 1111
Joined: Tue Mar 05, 2013 8:14 pm
Contact:

Re: Desync reports - Comparison of levels

Post by cube »

The desync reports are not too useful in the current state. The problem with generating more detailed info about the entities is, that the whole factorio saving/loading code is fairly heavily optimized for speed and there is no explicit information about which entity is which in the save, you need to read everything before a byte to know what meaning this one has. When we are debugging it, we compile a very slow and large version of factorio that contains this extra info and do it manually.

Another problem is that the game doesn't compare checksums of everything all the time, only some key values. And when a desync appears, it generally takes a few ticks to propagate it into these checked values. This means that the saves you get as a desynch report have differences that don't directly correspond to the real problem. And that complicates things.

So, yes, having a built-in save diff tool would be useful, but it would require changing a lot in the desync detection and handling. We might implement this later, when the desyncs become more rare and harder to detect.

Post Reply

Return to “Ideas and Suggestions”