Page 1 of 1

Connected servers / Split game worlds

Posted: Sat Jul 16, 2016 1:50 pm
by Rednax
Hello everyone,

My friends and I have run into something of a problem: my poor little 3.2Ghz CPU does not like it when we try to produce a super bazillion trillion items per second, while fighting of a horde of aliens that makes Attila's hordes seem cute little parades, while experimenting with a high throughput sorter + balancer + train loading and unloading system that only uses inserters (like 100k of them), and no belts (because I can, not because it makes sense).

So here is my idea:
Allow the player to travel between different worlds. Each world is run on a different thread, or even a different server altogether.
This causes issues when players travel often between the worlds (downloading large maps all the time), so it would require some careful consideration with regards to the joining process. Maybe create a diff system where the player only needs to download all the changes since the last autosave.

However, not only players should be able to travel between worlds. Trains, and if they will ever exist, ships can travel between worlds. This allows the players to set up different factories on different worlds and transport goods between them. This is much less of a technical miracle to pull of, since you can just destroy the train in one world and spawn it in another.

Alternatively, trains and boats are stuck to the same world, and we interpret a world as actually being a world. This means travel between them requires space travel.

There are problems that will need solutions with a multi world system. For example, how are you alerted to attacking aliens when you are on a different world?

There are plenty of creative options to fill in the gaps of the idea, and plenty of things to consider, but the important part here is that we can load balance our factories over different CPU threads and different physical machines.

Re: Connected servers / Split game worlds

Posted: Sat Jul 16, 2016 5:09 pm
by ssilk
Kovarex answer to this would be: "There is plenty of optimization possible, before doing such things."
:)