Download

Networking recommendations

Hi all,

I’m looking for some networking related recommendations. My situation is as follows:

I’m making a multiplayer space game. As you might be able to guess, i’m running into the WORLD_MAX problem.
I’m familiar with world origin shifting, level streaming and world composition but there are some complicating factors:

  1. The players can be in totally different places.
  2. I Want the server to be authoritative in terms of physics

From what I can find, this excludes world origin shifting, level streaming and world composition
I also tried zoning it through multiple servers but that didn’t quite pan out either.

So now i’m looking at alternatives and thought off the following:

  1. Edit UE4 to use double precision physics for the server and replication part while keeping clients using floats for rendering
  2. Use a self made networking solution with custom server software
  3. Use raknet / photon / smartfox etc.

Personally I don’t really like any of these options for the following reasons:

  1. I did get 1 replicating correctly but somehow things broke afterwards and its a headache. Would also require implementing a different physics engine
  2. Is a lot of work and wouldn’t know where to begin with regards to integrating it in UE4. I can’t find anything related to UE4’s networking protocol to implement the current stack
  3. Is possible - but I fear I’ll spend a lot of time and then find its restricting in something else. Would also require implementing physics.
  4. Photon / Smartfox are really very expensive

Do you have any recommendations? If so what are they and why?

Thanks!

Thanks, but i’m not comfortable with hosted solution so i’m looking for something I can host :slight_smile:

Just a wild guess, what if you increase WORLD_MAX in the engine source and everything related to double precision?

The problem isn’t so much WORLD_MAX - that I could indeed get around by doing that.

The problem is float accuracy. So without changing all position related dooda’s to double’s (including PhysX) it wouldn’t work due to float accuracy drop off

Every mmo based on Unreal is running server instances (single map) * channels + travel portals.

This way floating point precision is completely neglected in production.

Could you explain a bit further? Not sure what you mean here

I guess he just means running a bunch of 100 man servers with the normal unreal networking limits and different parts of the map/world are on different servers, then portals connect you to the server running that part of the map.

But aside from that, Well then you’re basically trying to recreate the segmented worlds feature of lumberyard / cryengine that star citizen added with double precision I mean they have 150 million so far for that project so I’m not sure how hard that will be to remake. Why not just use spatial? Any reason you dont like hosted solution?

“Channels” are multiple servers running instances of the same map.
If for whatever reason channel 1 is full, master server spins up channel 2, 3, 4… (for that one map location).

Portals simply allow players to travel from one location to another; isn’t open world at all.

The problem isn’t so much the amount of users. Instead its the amount of space I need to cover within a single map.

How would you combine the server instances btw? That every user sees every other user on the same part of the map?

A lot of reasons:

  1. It requires me to hand out the data to a third party.
  2. What if they go bankrupt?
  3. What if it becomes too expensive? I’ll need to do it all over again with something else
  4. No control over availability / connectivity etc.