Friday Facts #18

Posted by Tomas on 2014-01-24


today the Factorio Friday Facts turn 18. That is considered an age of maturity in many countries. So the glass of Jagermeister on my desk is completely justified :)

The time here in Prague feels just like whooshing around us faster and faster with the end of January approaching rapidly. That was the original estimate for the release of 0.9 but now it seems that it will take a week or two more. The usual "everything takes longer than expected" has applied this time as well. The current development version has placeholders for some new entities (like a plain rectangle box saying "oil refinery" or another one with "chemical plant") and we really want to make proper graphics for these and deliver the basics of new oil content as a whole package.

Recently we got a bug report claiming that the game is too slow. The guy who posted it was right, the game was running well under 60fps. In our defence it needs to be added that his factory was pretty monstrous. It was actually the biggest one we have seen by far. Just to get an idea, his factory had 9000 solar panels, 15 000 laser turrets and thousands of logistic robots. So kovarex took it as a challenge to squeeze as much performance from the engine as possible taking this save as a reference. He has been working on it for the past couple of days. The most significant optimizations he made are:

  • Efficient dispatch of pending logistic robots. This was probably the cause of the biggest slowdown in the given save.
  • Wake-on-demand mechanism for inserters. Until now the inserters always asked every tick the objects in front of / behind itself whether they should transfer anything. Now, instead they put themselves to sleep and the object wakes them up when its state changes (that means there is a chance a transfer will be required).
  • Improved cache locality for the electric energy network.
The result: game update dropped from roughly 30 milliseconds per 1 update to about 10 milliseconds (and there is more to come). Of course not everybody will get this amount of performance improvement (the optimizations are aiming at the game update for big factories). But in general this batch of improvements pushes the bar for the size of the factory further up.

The work on the oil industry has entered the last phase. The fluid and recipe mechanisms as well as new entities are ready and now it is all about adding the actual content. I have been studying the oil refining process quite a bit recently and also I took this opportunity to refresh some bits from my high school chemistry curriculum. The way it shapes now the oil industry will be a middle to late game resource. Its usage will start somewhere between the green and blue science pack and its products will cover a variety of areas (fuel, plastics, lubricants, explosives, etc.). There has been quite some discussion about the oil industry on the forums. If you are interested and want to contribute your opinion you can do so in this thread for instance.

Kuba and Albert have been working together a bit on the integration of the new doo-dads into the map generator. The goal is to approach the scenery compositions shown in the previous posts . Though that is difficult (because those compositions are hand made and imho very good) the doo-dads should greatly improve the current flatness of the landscape anyway. On top of this Kuba has been busy with a neat feature when the game will natively treat zip archives as directories (so the saves / mods can be zip packages). And of course Albert's table is full of "oily stuff" - now comes the interesting part - the oil mining drill, the oil refinery and the chemical plant.

Today's picture is a glimpse into the internals of Factorio. The screenshot shows a diagram of entities' (objects on the map) class inheritance structure generated by doxygen.

If you feel like expressing your opinion regarding anything above then go ahead and do so on our forum.