Process world parts on different servers

Valery Tikhonov shared this feedback 5 months ago
Submitted

Hi all, maybe this idea was already suggested, but I went though the fist 3 topic pages and haven't found it.

What?


So - currently the PCU/player number on the server is limited, which impacts playability. It is not that interesting to play in a world, where there are only 16-20 other players. It is also not that interesting to play in a world, where you can't build big base/station because of the PCU limit.

My suggestion is to add ability to clusterize server machines and process different world's sectors/planets on different machines. This will improve the performance.

Instead 4 official servers for 16 max players each - we'll receive 64 in a single world.


Why?

  1. The game becomes really MMO - which would make it unique -> you'll get more players
  2. Many game mechanics (stations, trading, quests, corporations) becomes relevant -> you'll get more players
  3. Average players (who spends time in a single location building his own stuff) won't suffer from limits/heavy calculations happening on the other side of the galaxy -> players become happier

How?

  • One can set up multiple SE server machines in a cluster (cloud) for single world
  • Each server machine is responsible for the part of the world and processes objects/physics there
  • Machines talk to each other to synchronize speed and transfer objects (travellers from one planet to another)

Thanks.

Comments (2)

photo
1

Still, many people will be able to gather at close distances from each other, or build automated builders and put millions of blocks, so this will ease, but won't solve the problem.

However, this is powerful way for parallel calculations, which can make it possible to keep tousands of players on the one server if they are keeping some distances. And there's a ways for improvements: I would add to this in-game sectors intersections system and intersection area calculation priority, to make clear order, rules and "rights" to process objects which are close enough to interact somehow or which are right on the borders of multiple sectors. Also, possibly would be a good idea to make these sectors with dynamic size, letting some "general" server to decide which physical machine will process sector, and this sector size depending on it's load.

There's a lot of variations for this idea - from one powerful server with a lot of cores to physically separate servers, the only thing is that all of these requires big code changes, and I don't think that KSWH will do anything without significant funds motivation.

photo
1

Hi, I've also recommended to look further into load balancing of server clusters and mentioned Kubernetes which maybe could help as a good solution [1]. It is a system for automating deployment, scaling, and operations of application containers across clusters of hosts [2][3]. It can also make the development easier in collaboration with a good DevOps lifecycle tool (I am currently looking into GitLab [4]).

[1] https://support.keenswh.com/spaceengineers/pc/topic/server-optimization-more-online-players

[2] https://en.wikipedia.org/wiki/Kubernetes

[3] https://k3s.io

[4] https://about.gitlab.com/topics/devops