Is level streaming support multiplayer?

I am now making VR multiplayer game.
There are several problems with level streaming.

First of all, Is level streaming support multiplayer?
It means, is “Load Level” works separatly on client and server ?
If the server loads particular sub level, is client-side going to apply automatically???

I want to make this function separately work…

I am working in 4.26.2 and I claim level streaming is broken for multiplayer.

My fix was to, essentially, write my own level streamer in that the issue with the “built-in” level streamer is that it only streams in levels for the host.

To write your own level streamer, you need to set all of your streaming levels to “OnDemand” which, essentially, turns off the “built-in” level streaming. Then recreate the logic for streaming levels; however, consider all player, host and client, locations when determining what levels should be loaded and what levels should be unloaded.

1 Like

To possibly be more clear… …I am running a listener server of which the up to 3 other clients connect to that listener server using lobbies and sessions.

1 Like

In my situation, “built-in” level streamer runs on client&server simultaneously.

I want to make them to work independently.

Then, do i need to implement my own level streamer??

I am not an expert on UE. I have been working with UE for a little over a year as a hobby or second part-time job. I am working the free side of UE and given this I claim this topic is beyond free UE in that somehow we need help from those that developed UE to fully understand what UE can do and what is needed from us the game developer.

I can communicate some of what I did.

When you say “independently”, I get confused. I claim the server needs to know everything that is going on in the game. Thus, I claim the client cannot have any “special” knowledge about the game or the game state that the server doesn’t know about. Thoughts?

Anyway, what I did is was create a BP called “MyGameStateBase” with a parent of “GameStateBase”. I then created an event that runs on the server which make a prioritized list of level streams to load considering all of the players in the game. In addition to prioritizing the list of streaming levels to load, it keeps track of all the player level streaming requests. The server then walks this list and calls a Multicast event to load each level in the list for the server and all the clients. Afterwards, I walk the list again and this time I check for loaded levels that have no level streaming requests to be loaded and call a Multicast event to unload these levels on both the server and all of the clients. I repeat the above, currently, every 5 seconds forever.

1 Like

I’m actually implenment a loading screen with level streaming.

The persistent level includes transition level which has loading widget and main-content level.

It can be used in non-blocking loading because the level will open super-light transition level directly, then load main-contents.

But this way has problem on listen-server…

If host finished the load of main-content, new client connect with blocked loading without transition level.

So i am wonder how to make streaming independently.

Anyway, Thank you very much for your reply :slight_smile:

I have not tried what you are doing; however, I am using a lobby, sessions and Steam for gathering players. This uses seamless travel and thus I have a transition level from the lobby; however, it is separate from the lobby level and the game level.

What is the motivation for doing what you are implementing? Maybe it is something I should be considering???

1 Like

Not sure if I am fully following; however, what if you travel to a temporary level with the loading widget and then seamless travel to the main-content level? Would that fix anything and/or get you the behavior you are looking for? Would you have to implement a partial duplicate of the main-content in the transition level if the loading widget allows the players to see thru the loading widget while waiting for all clients to connect to the transition level before the final seamless travel to the main-content level could occur???

1 Like

My project is based on VR, so i can’t implement the loading screen with Widget.

Therefore i used sub-transition-level, but it has also critical problem about VR-sickness.

If there are some lag during the loading map, they occur the VR-sickness because of screen tearing & shaking.

So, i can’t use the “Open Level” which occur lag…

Now, i am trying to use the async level load.

Hey bro, I’m also working on a multiplayer DS server VR project and encountering the same issue as you. Have you solved it now? Are you using the async level load? looking forward to your reply!!!