Exactly that I explained in viewtopic.php?f=5&t=8670&start=10#p69213orzelek wrote:One possible solution to allow for overall bigger Factories would be making them multi-surface. Factorissimo already does that on small scale.
It would allow for each surface to run on separate thread (should also help with memory bottlenecks - each core can have own cache and memory controller can handle more requests looking at stats given in this thread).
Then we would need some nice in game abstraction for this
But now I think RAM is the limiting bottleneck and so it is not possible/useful to go that way (increasing world by using more CPUs but everything on one computer) much further.
Yes, but imagine how it would be if the game can spawn a new surface, which is not on this host but computed ON ANOTHER HOST! A remote process call.Something like caves/varying levels of terrain and then entities that would share power and transport items/fluids between those.
Yes, that is one possibility of hundreds, no thousands!Quite plausible would be making terrain semi-3d. And when you go over to higher level you would switch surface. With ability to dig through lower levels and build ramps up/down plus pillars for levels above this would make game both 3d and nicely scalable for multithreading. Seems like win-win
No. I thought through this very deep. We can follow here Einstein's relativity theory: Everything is relative.hoho wrote:Biggest problem with connected worlds is how to ensure they all stay synchronized.
Which means for Factorio: Two worlds/surfaces can have completely different speed. It doesn't matter, cause the exchange between the two worlds/surfaces is (must be!) event-based.
So it doesn't matter when I get an item from "the other side". If it's there, it's there. No need to synchronize both.
Well, it's of course useful to have both worlds/surfaces synchronized, so that both run more or less with the same speed. But that is just an option.As it stands, each player simulates actions of all other players. If you have several different worlds running in a grid, how would you verify that they're all still running in same overall state? If one server slows down for whatever reason and tick rate drops <60, would others also have to drop lower? What if some items get sent from the faster server to slower one and due to lower tick rate it won't be able to accept them all?