Friday Facts #188 - Bug, Bug, Desync

Posted by Klonan & Twinsen on 2017-04-28, all posts

0.15 release

I would be surprised if you are reading this blog and didn't know that we released the 0.15 experimental this Monday. After more than 6 months of work and effort put in, we are really happy to finally see everyone playing and enjoying it so much. We'd like to thank you all for the feedback and suggestions we've received, and for being patient with us when we couldn't keep to our plans. The whole team here is committed first and foremost to making as great a game as possible. While the delays were not insignificant, we really hope we have met your expectations and delivered on what we have promised.

Initially we had a small issue with our new config system and a script we use for Steam cloud syncing, leading to the game looking for a value which was no longer there. Thankfully HanziQ solved the problem in short time, and we released 0.15.1 just 3 hours later. The rest of the week ran pretty smoothly with the typical bugfixing, while the majority of the GFX department takes a well deserved break.

If you are interested in seeing an overview of all the new features, you have a choice of British or American flavour, provided by MangledPork and Xterminator respectively:

Help us fix desyncs! (Twinsen)

As you may or may not know, our 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 inputs that control that game, rather than networking the state of the objects in the game itself". You can read more about that in this article.

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 such as this one. When 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.

So this is where you come in. Next time when you are in a multiplayer game and you experience multiple desyncs, go to %AppData%/Factorio/archive (on Windows). There you will find files that look like this: desync-report-2017-04-28_15-46-04.zip. Take the relevant one and report it in our bug report forum. You can upload it directly to the forum or share it any way you like (dropbox, google drive, or you own server). Simply uploading the desync report won't help too much so try to add 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, click this inserter and desync occurs", together with a desync report, means we can hopefully identify the cause and fix it very quickly.

We will try to improve how the game behaves when a desync occurs, and possibly make uploading of report easier, but for now fixing the major bugs in 0.15 is a priority. Meanwhile please be patient with us, this is an experimental release of an early access game, and we still need your help to make the game better.

As a reminder, we use our forum as a bug tracker, so please report any bugs on our bug report forum. Reporting bugs 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.

Community spotlight

I think we all expected that with the introduction of the Programmable speaker, it would open a whole new category of crazy combinator contraptions. Not even a whole day had passed before Tritexio posted this wonderful rendition of Portal's Still Alive:

As usual, let us know what you think at the forums.