Less server load in Multiplayer protocol.

Daniel Riba shared this feedback 5 years ago
Declined

The current multiplayer protocol puts WAY too much load on the servers. As I suspect, it checks EVERY behaviour of a player, voxel and grid.

Space engineers is NOT some sort of competitive game. The game has a lot of dynamic stuff in-game, this all puts too much load on the protocol, where the protocol should aim for syncing only the really-necessary stuff.

1; Character movement. I see the "reason" behind checking every character movement at the server. However, this came to a point where an average server will have a LOT of rubberbanding even with 1.0 sim speed, where it falsely detects fast character movement and / or position changes where the server was under heavy load for 1-2 seconds. Or even if it is not under load but I make a sharp turn along a grid's surface, and the server "thinks" I gone throught the wall so it puts me back with 5 meters. This makes the multiplayer utterly annoying. General idea: Make the server ZERO character position valiations.

2; Same for EVERY grid that is under character control. If 2 or more grids collide, the server takes over the control for a period of time while the 2 grids separate, and then let them to be controlled by clients again.

3; Same for voxel modifications. Let the clients make the heavy calculations, and the server only sync the changes across clients nearby.


FAQ:

What 2 player edit a grid at the same time?

The server "sync" the first one, and "invalidates" the latter one, if the changes exclude each other, for example put blocks in the same cell. Almost the same as now, except it makes less "validation" like "Can he put this block here?" (connection surfaces) it would only make a "Is there anything here already?" which takes far less performance.

What if 2 player edit a voxel at the same time?

Inventory would be still server-sided. Same as with Grids. The player whose "changes" are handled later won't get the resources from the voxel cells (that were "mined" by other client meanwhile, would get only the ones that is still "there" on the server).

What if a player cheats? (Goes throught walls, etc...)

Server only mods. Don't put unnecessary load on private servers. Public servers can load a mod that checks for possible cheaters. Private servers can happily play without rubberbanding... EVER.

And ground me for this: Probably any mod will do better validation that the current implementation.

Replies (1)

photo
1

Hi, We lately released multiplayer major, where we solved most of the problematic multiplayer performance issues. We are running our own public servers to be able to see if there are any other problems. If we find them, we will fix them. We are not planning any big change in our architecture tho.

Leave a Comment
 
Attach a file