BackgroundOur multiplayer code uses Deterministic Lockstep to synchronize clients. "Deterministic lockstep is a method of synchronizing a game from one computer to another by sending only the user inputs that control that game, rather than networking the state of the objects in the game itself".
Simply put, what it means is that all of the players need to simulate every single tick of the game identically. If any computer does something ever-so-slightly different, a desynchronization (desync) occurs. That means that that player has to reconnect and re-download the map from the server in order to get back in sync with everyone else. Unfortunately making a fully deterministic game is not easy, so you will notice desyncs, especially at the beginning of a new experimental release.
Reporting DesyncsWhen a desync occurs, the game generates a desync report. This report contains the game state from the server and the client and by looking at the differences, we can try to determine what went wrong. Please post them as a bug report in our bug report forum, make sure you read the How to report a bug (...) announcement as well.
The desync bug report must include:
- The desync report: You will find it in the archive folder in the Application directory (%AppData%/Factorio/archive for Windows). There you will find files that look like this: desync-report-2017-04-28_15-46-04.zip. Take the relevant one. You can upload it directly to the forum if smaller than 128 MB, otherwise share it via hosting service (dropbox, google drive, you own server, etc...).
- As much context and details as possible, such as what you and other players were doing as the desync occurred, especially if the desync happens often. Finding a way to reproduce the desync, such as "load this save, wait for friend to connect, rotate this inserter and desync occurs" means we can identify the cause and fix it very quickly.
- The game version it occurred in, in the title of the report.
- In order for the desync-report to be created, it is imperative that after the desync, the desynced client stays connected to the server until the server information is completely downloaded, this takes significantly longer than the normal map download.
- Mods, if written incorrectly can cause desyncs very easily and it is not feasible for the factorio devs to fix those bugs in mods, therefore desync bug reports of modded servers are to be created in a separate subforum. Those reports must additionally include the complete .ziped mods folder.
As a reminder, we use this forum as a bug tracker. Reporting bugs and desyncs in other topics, on the steam forums, in private messages or emails will mean they won't get prioritized, or they can even get lost.