Large multiplayer worlds in UE4

I am not sure why UE4 doesn’t support large multiplayer worlds out of the box? As far as I have seen we have some very basic level streaming, so it should be fairly simple so create some level streaming for large worlds.

I also found an network importance volume.

And UE4 seems to use origin shifting under the hood. At least I have an option in my actor called “Ignore Origin Shifting”.

So what is really the problem for large multiplayer worlds? As far as I can see we have all tools that are needed to create large multiplayer worlds, what am I missing?

I believe the difference is in scope.

UE4 has code that can talk, client/client and client/server.

UE4 does not have code that can emulate or actually operate a server.

I’m not sure this is accurate.

The recent networking tutorials made it sound like it can.
Unless i am misunderstanding your meaning?

Yes, Unreal can actually operate as a server. After all, any multiplayer scenario will have a server in one way or another.

In most cases the real problem with having large worlds is floating point precision. Especially in multiplayer scenarios this can be a problem due to not being able to reset origin.

This is usually fixed by having multiple servers and traveling between them.

Does origin shifting actually work in Unreal?

I tried making a large landscape and started to notice cracks appearing at the extremes which suggests to me that single landscapes are not the answer for large worlds. Not seen any docs on how to setup streaming content OR about origin shifting, but if both of those work, then I would assume that large worlds are indeed possible.

But as with the majority of the docs… they don’t appear to exist yet :slight_smile:

Okay that makes sense, so I probably have to create some sort of a master server with many subservers , distribute the world into chunks, create a server for each chunk and handle the player server transfer.

Do you think this could be achieved with a plugin?

Out of curiosity, how big can you make a level without running into precision errors?

Possible solution -