TL;DR
The most interesting part about multi-threading etc. is to make even bigger worlds. But instead of targeting to multi-threading this can be achieved also, by concentrating more into interconnecting game-worlds (servers), cause that is similar - if made clever: The size of a world can be doubled by connecting a second server to the first.
This thread was a great read.
When I read this thread now I think multiprocessing is something, which comes to a limit in this or that way. It will make thinks too complicated and the argument with the RAM-Speed is something, which I also saw some time ago. So for me it is nothing which should be put too much afford into and instead of that, I think we (uhm, the devs
) should concentrate on connecting worlds together. What I mean I wrote a long time ago in this post:
viewtopic.php?f=5&t=8670&start=10#p69213
At that time I thought instead of multiprocessing in threads it might be possible to multiprocess in OS-processes. So that the game doesn't need to run 100% in parallel.
Now - after reading this - I think this is also no real solution. Cause of the RAM bottleneck.
And what I also think is this: Nice to have but does that bring more players to spent money for Factorio? I think not so much. Technically it's super interesting. From the game-play-side doubling the speed from 10 ups to 20 ups is great, but really not THAT important.
So how to make that "dream" I sketched in the linked thread make come true? What - I thought - what if we have multiple computers? I mean we already have this servers that run 24/7 Factorio and the community tries to connect those worlds together.
So that is the vision: A grid of "worlds" (World A, World B, C, D etc...) connected together by "exchange points".
What is an exchange-point? Think to a bridge for example:
The player/train etc. enters the bridge (Which has an exchange point in World A) and with that he
leaves World A and after some "transfer time" appears at the connected exchange point in world B.
From the sight of World A World B is nothing else than a "player". Some source of events. For World B World A is the same: Just a source of events like "A new player appears, now take over control from this IP".
There is no difference if the event comes from a player or from another World, that is connected. In both cases the events don't need to be determinsitic. As for the player for a world the events don't need to be real-time.
Let's think that a bit further: The player builds a belt in World B to the bridge and over this bridge into World A. And every entity on this belt is also nothing else than an event for World A. The worst case that can happen is, that if the connection breaks, that the stream of items will stop in World A. Nothing important.
So with this "trick" the size of any Factorio World can be doubled without loosing ups. And it offers such a great number of gameplay-variants, that I cannot count them.
[Some of the simplest for example: Three Worlds: A, B and C. A and B are forced to deliver to C some amount of item X. Who finishes first wins.
Two Worlds: Positive and Negative. Positive needs to send items to Negative, Negative to Positive.Both worlds are connected just with a belt. Negative items move backwards on belts. And if a negative item touches a positive it will be destroyed. And now the players in the Positive needs to bring some items to Negative and vice versa. (My picture about this is, that it will look similat to Harry Potter fighting against Lord Voldemort
).]