so today is Saturday (more specifically half past six on Saturday morning). The point of Friday Facts is that they are written on Friday. So what went wrong? Yesterday we were working all day long to make the promised release happen. We gave up on social life on Friday evenings long time ago:/ There were new and new things coming up. At one point we were ready to "push the release button" but then we found out that the game performance can drop significantly due to some strange Allegro sound issues. As a result the game was not playable at all. That was already late in the evening and we started to fall asleep over our keyboards.
There has been numerous bug reports regarding the "biters getting stuck". The reason for this is that our pathfinder has been first-come-first-serve until now. If there was some very costly path to calculate (for example around a big mass of water) then all the other paths (even the tiny ones) had to wait. So the biters were stuck, because they couldn't use the path finder that was busy with someone else's very costly path. Kuba has been working on this. The result is that the pathfinder behaves more like a processing unit which allocates fixed time (amount of steps) to every biter who needs to calculate the path. So it runs X steps of calculation for the first one, then for the second one, etc. The "context" of the calculation (all the information associated with the progress of the path find calculation) is stored in the meantime, when the biter is waiting for his path. This way all the biters are calculating their paths simultaneously (though not in parallel). The result is that short paths can be calculated even when there is a long path calculation in progress. And so biters can happily find their way to the approaching player. In the future we will be implementing some Hierarchical Pathfinding which should significantly speedup searching for long paths and improve the solution even more.
Kovarex's quest for making the game fully deterministic has seen an interesting twist last week. The replay functionality is working quite well (still now and then there is desynchronization but it is a work in progress). But when we tried to load the replay on a machine with different operating system it desynchronized immediately. It turned out that in C++ basic trigonometric functions (sin, cos, asin, atan, etc.) are not guaranteed to give same results across different platforms. We are not talking about precision here, it is about getting the same (though possibly imprecise) outcomes. Even more surprisingly there is not that much discussion / solutions for this on the web. So Kovarex reminded himself of his student years and wrote our custom implementations of these that give the same results on Win, OSX and Linux. It sounds like a strange thing to do, but without this the multiplayer for players with different operating systems wouldn't work. We were considering an alternative solution where we would have three "rooms" - one for Windows, one for OSX and one for Linux players and you could only play with people having the same system as you:D. Joking aside, it is suspected that cross platform determinism issues are not over yet...
Albert has done quite a bit of research and sketching on the player. Check out another model below (there are way more on our internal Graphics page which you can see if you have a Mining Drill operator tier). Also he is communicating with the freelancer doing the icons update a lot (so there will be new inserter icons in 0.10.0 for instance). In the meantime, Pavel (new addition to the "Factorio 3D force") started getting his hands on the game. He will be redoing the beacon. This way he will get familiar with what is needed to make complete sprites for the game entity. And we should get a better graphics for an object that is really bad looking (just a very old version of the laboratory). Some of the proposal sketches are below as well.
The regular comment thread at our forums is ready.