Issues with World Partition HLOD loading on server-side

I’m having a problem in my Unreal Engine 5 game. When I host a multiplayer game using the Listen Server Mode, I’m encountering issues with World Partition HLOD loading.

On the client machine, the World Partition HLODs (Hierarchical Level of Details) are loaded without a hitch. When I input the command wp.runtime.HLOD 0 , any distant objects properly vanish from the screen, indicating that everything is functioning as expected on the client-side, and my framerate remains stable and correct.

The problem arises on the server machine, where HLODs aren’t streamed in at all. The whole World Partition is loaded, leading to a poor framerate. When I implement the wp.runtime.HLOD 0 command on the server, distant objects don’t disappear, making it seem as though the World Partition loading range is infinite.

Can anyone help me understand why this issue is happening and how I can fix it? Has anyone encountered a similar problem on the server-side during multiplayer mode in Unreal Engine 5 and found a solution to overcome it? Any advice or guidance that you can provide would be greatly appreciated.

I’ve just come across a similar issue but for me the Hlod’s show on close distance and none of the distant objects get culled also resulting in performance loss.

I’d love to share some positive progress, but regretfully, I am yet to find a resolution. :confused: Perhaps bumping this post might summon a guardian angel. :crossed_fingers:

Only temporary solution I found was to just disable it using wp.runtime.hlod 0 command. But not much of a solution if it requires you to disable the thing haha.

Lets hope the angels are listening in.

Hello!
The issue is that normally World Partition loads everything on servers. This is the default behavior. So in your cases, you are not seeing HLODs as every World Partition cell is loaded.

There’s a few ways you can improve this, but it may require additional work for your game to work correctly.

First, you can turn on server streaming
wp.Runtime.EnableServerStreaming=1
A bit better but still, cells loaded by clients will be made visible on the listen server too. And since we don’t have server streaming out enabled, well those will remain loaded/visible forever.

Next, you can turn on server streaming OUT
wp.Runtime.EnableServerStreaming=1 + wp.Runtime.EnableServerStreamingOut=1
This is great, as long as your clients streams mostly the same set of cells as the server.

This ia a core limitation at the moment, and I can’t give you a timeframe for when we’ll manage to improve the Listen Server configuration.

I hope this helps!

@_DySands I’m not sure I can explain why you are seeing HLODs up close however. This looks like a different issue to me!

2 Likes

Thanks a ton for getting back to me with that comprehensive response. We are already on board with the approach you’ve suggested around server streaming and are planning to delve into testing this in detail.

Our team’s going to take it for a complete spin, test it from back to front, and inspect how it gels with our specific setup. I appreciate the heads-up about the potential requirements of additional work for our game and the core limitation at the moment. Hoping for the best!

I’ll make sure to circle back to this thread with our findings so that others can benefit too. Thanks again for your guidance! :slight_smile:

1 Like

Thank you!

What is the best way to open a level with these options? It works in PIE if I enter the commands in the console command line of the Unreal editor. But does not seem to work if I put the commands in the options field of the Open Level blueprint node.

Put them into /Project/Config/DefaultEngine.ini, e.g.

[/Script/Engine.RendererSettings]
...
wp.Runtime.EnableServerStreaming=1 ; Turn on server streaming - cells loaded by clients will be made visible on the listen server too
wp.Runtime.EnableServerStreamingOut=1 ; Turn on server streaming out
1 Like