World Partition is completely Host Dependent. Meaning that any Dev creating a large open Co-Op world is completely out of luck. Listen Servers using World Partition should allow the Clients to keep track of Terrain Streaming. Keeping the ground under the Players feet is NOT a Security Task. There is NO Reason for the player Hosting the game to suffer the cost of loading every player’s terrain on their machine.
For a long time the ongoing joke in my studio is that Unreal’s Listen Server is just a Dedicated Server with a Character Controller Duct Taped onto it. This needs to change. Most users will not be able to truly afford Dedicated Servers and this Kills any of these new features for Co-Op Devs like myself. I see Open Source Unity Listen servers with 10 times the performance and it makes me frustrated that I shifted to Unreal , Only to watch the networking I need ignored.
It would be simple to have a Listen Server setting where each machine independently handles all terrain features and it needs to happen for Unreal 5…
But it is. Otherwise the other player could just claim to walk through a mountain and nothing would happen.
You don’t need to “afford” a dedicated server. Players can launch them too, just give them the executable.
Collisions is one reason, if not for players than for npcs
Clients could report to the host what areas collision is spawned. Then the host can use the information to decide NPC spawning.
Having client launch their own server is more complex then the standard Co-Op game. And we are offering this. But it still does not solve the issue of Listen Servers with large Open Worlds.
If someone goes through that much effort to cheat on a listen server game with their friends, A Dedicated Server would not stop them from finding a cheat.
Bad idea, letting clients control anything. But in the end, it is up to the developer on how you want it to run and how you want it to be exploited.
My team is about 1.5 years into making our Co-Op game, And I can say that we haven’t had issues with this so far.
What Unreal needs is there own version of Mirror.
Do you mind telling more about what you miss from Mirror?
I have a few years of experience with both Unity Mirror and Unreal Networking code, and in general they are very similar for me in how they work. The only major difference I see api-wise that I miss from Mirror is that you can easily set a Command (equivalent to UFUNCTION(Server)) to ignore authority (but this is easily manageable).
But I agree that it would be great to have more control about what can and can’t run on the clients, in Mirror we can easily have a P2P-style experience by allowing all clients to hold all the state that the host has, something that so far I haven’t figured out how to do in Unreal (like all players having access to all PlayerControllers, to the AIControllers, and so on).
I miss Mirror for the reasons you mentioned and easy Host Migration among other things. In general I miss the Dev Deciding how the Networking will proceed.
Earlier someone mentioned a guy cheating by passing thru a mountain. In truth if the Host received Player positions and Only generated the colliders on distant terrains, Then he still couldn’t cheat and walk thru mountains. And in a big way this is my frustration. It wouldn’t take much for Epic to change the tools to support Proper Listen Servers. Then Devs could enjoy these Great New Features without the cost of Servers.
They could just do what I’ve always done: Run the dedicated server on the same machine they play the game with.
In fact, what I’d suggest is to make an easy to use dedicated server startup script (and/or even have it launch from within the game when hosting) rather than waiting for Epic to change listen servers to work how you desire.
While this will still incur a performance hit on the player hosting the server, it’s still more performant than using the listen server.