Re:Factorio 1.1 is getting close
by louwrentius on Friday November 13, 2020 @08:01PM
(#25089350)
The developers have explained their reasons for the current constraints regarding CPU multi-treading and AFAIK it's not as easy as this.
If you want to know more, they were very open about the development process so they will have a blogpost about this.
The game also allows multiplayer (I've seen 500+ players on a server). That requires some really strong consistency guarantees that you loose by adding threads.
Multi-threaded programming is in no way incompatible with utterly deterministic bit identical execution with sequential code.
Factorio is already written in a deterministic way.
The developers main argument is that they cannot get much speedup from concurrency because their software is primarily memory bandwidth bottlenecked and at least on consumer hardware using more cores doesn't substantially gain you access to more memory bandwidth.
This is really unfortunate. "Fortunately" it seems to be a result of the simulation engine using only a single core- there is the opportunity for the developers to get a 2-8x speedup from switching to a multithreaded simulation engine.
I imagine there's fairly loose coupling between, for instance, fluid calculations, biter pathing, and on-belt entities, which tend to require dedicated strategies for mitigating their outsized performance impacts. (to include using console commands to simply delete the biters) Those sound like fairly low hanging fruit for splitting off into three threads if there's no plan to completely multi-threadify the sim engine.