Will concurrent entity update ever be implemented?
Posted: Sun Jun 25, 2017 9:25 am
Hey Dev Team,
the title says it all, basically. As already noted by others, with the blueprint sharing, one can create huge factories in a few hours. In addition, with the introduction of rocket science, the game fosters working on much larger mega bases (if you really want higher rocket science research, you need a tremendous base, which launches multiple rockets per minute).
For me, the fun in factorio is now slowly but surely degrading (and this should be a warning sign to you), because my base has quickly gotten large enough so that the Entity Update is limiting my FPS (I have a very high end system and my FPS are currently down to 30). The game is still playable at 30 fps, but any more base growing just has no use anymore (this is what makes this so severe): If I increase the number of products I produce by a further factor of 2, then the FPS will roughly drop by a factor of two, as the entity updates will take twice as long. Thus, in the end, I will not produce more products per second. So, the whole point of the game (which is to scale out) suddenly vanishes once Entity Updates are the bottleneck.
Therefore, my question: Will you guys ever implement concurrent entity updates? Then, the game could run fast for a much longer period of time, as modern CPUs feature more and more cores. In addition, it might run faster in the future when CPUs have even more cores (while the single thread performance is unlikely to evolve).
I know that concurrent updates is hard, as I happen to write concurrent C++ as a living. But I think in factorio it is certainly doable. You just have to find (and refine on every update) a partitioning of entities, such that entities in one partition can only have side effects on entities in the same partition. Then, you could compute all partitions embarrassingly parallel. Of course, the internal datastructure on which you do these updates have to be somehow thread safe.
So will this ever be a thing? I really think that this might increase the long term fun that people have in the game tremendously.
the title says it all, basically. As already noted by others, with the blueprint sharing, one can create huge factories in a few hours. In addition, with the introduction of rocket science, the game fosters working on much larger mega bases (if you really want higher rocket science research, you need a tremendous base, which launches multiple rockets per minute).
For me, the fun in factorio is now slowly but surely degrading (and this should be a warning sign to you), because my base has quickly gotten large enough so that the Entity Update is limiting my FPS (I have a very high end system and my FPS are currently down to 30). The game is still playable at 30 fps, but any more base growing just has no use anymore (this is what makes this so severe): If I increase the number of products I produce by a further factor of 2, then the FPS will roughly drop by a factor of two, as the entity updates will take twice as long. Thus, in the end, I will not produce more products per second. So, the whole point of the game (which is to scale out) suddenly vanishes once Entity Updates are the bottleneck.
Therefore, my question: Will you guys ever implement concurrent entity updates? Then, the game could run fast for a much longer period of time, as modern CPUs feature more and more cores. In addition, it might run faster in the future when CPUs have even more cores (while the single thread performance is unlikely to evolve).
I know that concurrent updates is hard, as I happen to write concurrent C++ as a living. But I think in factorio it is certainly doable. You just have to find (and refine on every update) a partitioning of entities, such that entities in one partition can only have side effects on entities in the same partition. Then, you could compute all partitions embarrassingly parallel. Of course, the internal datastructure on which you do these updates have to be somehow thread safe.
So will this ever be a thing? I really think that this might increase the long term fun that people have in the game tremendously.