Possible Workaround for dedicated server? (UE5)

I was following this closed issue. Multiplayer Origin Rebasing Support Notes · Issue #480 · CesiumGS/cesium-unreal · GitHub and Convert subset of terrain into Unreal landscape · Issue #351 · CesiumGS/cesium-unreal · GitHub

I learned that a client/listen host is able to replicate world terrain collision for clients but only within the client/listen host’s camera frustum. However, due to the nature of a dedicated server having no viewport, when clients connect and spawn they stutter for a moment but once authority saids collision isn’t loaded they will fall through.

I’m currently trying to set-up a multiplayer server with a certain CesiumGeoreference origin that has Streaming Sublevels of Buildings (No origin-rebasing). The users are able to control a Walking Pawn and Flying Pawn. If we restrict everyone to no-clip flymode then i can kind of ignore the problem but when any client switches to ground pawn they will fall through.

Possible hacks i was thinking of:

  • Is there a database i can pull from to make my own collision mesh that will conform to the Cesium World Terrain at it’s highest-level-of detail. e.g https://www.usgs.gov
  • I see people using RenderDoc or other methods to get 3D geometry from the GPU then edit in blender.
  • Can we spawn a grid of dummy camera or pawns on the dedicated server to ensure that an area on the World terrain is loaded?

Hi @Darb_Dude,

Sounds like you have an interesting project going! My first instinct is to say that Cesium’s streaming would work better with client-authoritative physics (at least for the players themselves). This would avoid having to exhaustively load the superset of geometry that the clients are interacting with, since that could span the entire world.

If that wouldn’t work however, you could use the Cesium Camera Manager Blueprint API to add custom virtual cameras to guide the streaming of Cesium tilesets. An example of how to use the API is available in the PR description here. You could use this to stream arbitrary areas to authorize physics on the dedicated server.

-Nithin

Hello!

I’m currently working on a multiplayer experience with the Cesium plugin. I looked into the Cesium Camera Manager Blueprint API and was able to add virtual cameras that follow each user who joins the dedicated server. This prevents the users from falling through the floor.

However, it seems that there is no blueprint node to remove a virtual camera when a user quits the game. Is this something that I should implement myself, or is there another approach already available?

Oh yeah that seems a bit of an oversight. I wrote an issue for it:

I think it should be fairly straightforward to add if you’re up for it; we’d welcome a pull request!

Kevin

1 Like