Level Streaming Queue Causing Long Load Times?

Hey there!

TL;DR - Level streaming requires a level to load before it can unload and begin loading a second level. This is causing long load times in zones with many smaller streaming volumes like a town. Any way to avoid this?

My small team and I have a published Early Access game on Steam built in 4.26. It’s a cooperative open world RPG and the world is quite large. We use player-hosted listen servers for multiplayer currently with a dedicated server in the works. We’re still learning what optimization practices work best for the project and level streaming is something we’re utilizing quite heavily right now. But we’re running into a bit of a hang up.

We have a pretty large town in part of the game and all the buildings have full interiors. We’re using streaming volumes for each of these buildings and have merged many of the interior assets to make loading quicker, but we realized a strange quirk with level streaming and we’re hoping there’s an easy fix.

When you enter town the first building to load in is an apothecary. If the player rides a mount straight past it and into the general store instead, the general store can’t load until the apothecary finishes loading, it seems. This is relatively quick, but when players run through the entire town and into a building on the other end, even though those first handful of streaming volumes are already queued to unload, they’re still required to load fully first, then unload, one at a time, meaning the loading queue starts stacking up and players end up waiting upwards of 5 to 10 seconds depending on their hardware and the number of players online for their desired building to load.

We’ve been digging for a way to either async stream levels or to cancel loading to no avail.

Anyone have any ideas? Or if this is the intended functionality, then any ideas on how to better set up our level streaming to avoid this?

Thanks!

You probably already solved this, but we used volumes in the doorways to signal the interior loads. Instant load time. We use lots of instanced static meshes as well.

Haven’t solved it quite yet. Thanks for the advice! We’ve just been merging all of our interiors into as few meshes as possible, then extending our load volumes to be pretty far from each building to give them plenty of time to load by the time you reach a door or window.

Are you using a blueprint to manage the instanced static meshes? I assumed they all needed to be contained in a blueprint and didn’t lend well to free form level design where we’re placing static meshes to decorate our world.

Yes, the Instanced static meshes are in their own blueprint. Click add and type “inst” and the option will show up. There is no need to load interiors early unless you have large windows and you want the player to see inside. Use world partition to its fullest to load just what you need. The worst thing a gamer hates is waiting for load times. It just kills the experience.

Man, unfortunately we can’t use world partition because we’re using a listen server. And using instanced static meshes won’t really work for us. It would be pretty difficult to decorate an interior for our level designers if they had to do it within a blueprint viewport rather than just dragging meshes into the scene.

We’re probably just going to have to find a different solution here.