Friday Facts #62 - The automation of Factorio

Posted by kovarex on 2014-11-28, all posts

Hello,

Tomas is in India already, so the place is more empty again. The more empty it is, the harder we have to work to make for it :)

The automation

If you have to put the coal manually into the boiler every few minutes, you would build a transport belt with inserter soon, so you just don't have to think about it. The same applies to some of the Factorio repetitive tasks. These tasks involve testing if the game isn't broken when preparing the release. Testing if the multiplayer still works. Testing if the campaigns still work. Testing if the replays are not broken again etc. etc. Cube is starting to prototype the solution on our new build server. One of the main tasks of the server will be that it will try to make a test release every day. It will try to run the automated test suites in all the systems and possible configurations, and let us know if anything goes wrong. It can even track the changes that broke the tests and email the people to fix it automatically, this feels like robotic manager to me, and I like that because this is the Factorio style. Once the release is needed to be done, it should upload the release packages, create the release update post, and enable the links on the page. We should definitely buy some big red button that will activate all of this machinery :) This will mainly mean, that when we are doing the release, we can work on new tasks in the meantime, so our productivity should be higher again.

The automation tests

The automated test counts are slowly rising. The covarage of the code is still pretty small, but the we try to cover the most tricky situations and the most complicated parts of the code first, so it helped to find lot of problems already. With all the desync problems it helped us to find I'm quite sure, that without the automated tests, the stable multiplayer release date would be delayed a lot. We are quite aware, that once the multiplayer gets stable, one of the main issues will be the bigger CPU requirements, as more players on the same map means more (or bigger) factories. The automated feedback wheter we broke something important or not should give us better confidence in making more aggressive (or smarter) optimisations and code rafactorings.

The multiplayer and the 0.11.4 release

There are times, when I look for a single bug for 3 days and I feel like I'm starting to loose my mind over it, just to find out there are 3 different bugs covering each other at different times. We are working hard to make the 0.11.4 release a big step towards multiplayer stability. The release is planned on the thursday (4.12.2014). There are 8 desync bugs fixed already and when looking at some of those, I'm wondering how can people play the 0.11.3 for hours without desync, they are probably super lucky, or they are just byte magicians :) I personally feel, that all the techniques and new stuff we had to learn to fix all the multiplayer synchronisation problems, while having partially multithreaded algorithms for things like map generation and people with different systems and computer setups is really giving us a huge boost of our experience gain.

The regular comment thread at our forums is ready.