Hi there, your explanation was a little vague(are you breaking the server map up between servers like eve online or have a server farm updating each other like WoW) and are you optimizing for multi threads? but I think you and I are both barking down the same rabbit hole.
I’ve been developing a multi-player video game set up for 3000 players per game instance. I have 2 game server packed builds one for the game instance running in a subnet cluster of 3 5995WX threadripper workstations. each workstation is clustered piont to point(switchless) with 2 100gbs 2 port nics. 1 for out going data to the other 2 nodes and 1 for incoming date. A third nic in each node is used to to connect all 3 nodes in the cluster to the main server running the main game server package(intro lobby for connecting websockets, and load balancing to the cluster, so on)
I’m currently working with rancher kubernetes, kafka, chep, and mongodb. Im still looking at things like am I better off with agones then rancher or what not. My unreal server packages I’m still optimizing for multi threading the three threadrippers. This kind of network architecture makes it easier to scale the hardware of any kind aslong as the server map instance is on the cluster and set up the same way (any identical hardware systems can work) to the games needs.
With (p2p) clustered system latency is low
And multi threading overhead between the cluster is not to bad because only data internal to the game instance is in that subnet. Then all trafic from the main servers web sockets in my case are going through 3 duel port 100gbs nics to the server.
My system takes away the need for large data centers that game server farms need, but still self healing with ceph. And where eve uses a trunk system and splits the map up like UE world partition that can cause latency and lag if to many people are in the same area. Where my fully meshed cluster runs the same as AI LLM systems and you dont need to split up the map and still have load balancing and plenty of bandwidth do to the data being split.