Level Streaming - what's the point?

Good Day. I Have a question about level streaming: What is their purpose?
I thought it was to increase performance and FPS, so I tested it out.

I created a persistent level (contains only floor and lighs) with few sub-levels (each level was a room in my persistent level)

One room, which was behind corner and not visible from player start, had a lot of quixel bridge stuffs imported in High Quality - point was to drop down FPS.

Then i created Volumes to unload and load that room and build a game - and I had around 45 FPS when I was in empty room and room with all that stuffs was unloaded, when I walked into that room and loaded all that Quixel stuff, my FPS dropped to arround 20-30 as expected.

Then I created antoher build, where everything was loaded immediately and again spawn player in empty room on Begin play.
I expected lower FPS, because everything was loaded, but no, FPS was exactly the same as when I was using level streaming (45 in empty room, 20-30 in populated room)

So I wonder, doesnt Level streaming supposed to improve performance by not everything is needed to be loaded and drawed on begin play?
By my testing, it doesnt matter, if I unload that populated room on level startup, or that room is allways loaded.
Or did I do something wrong?

1 Like

Level streaming IS improving the performance for you, that MS wasn’t loaded until it needed to be. So, things are better while it’s not loaded.

Level streaming is how to do endless open worlds, if you want more control than world partition. You get to load and unload stuff while the player is moving around the world without them knowing.

If you’ve got a level that’s heavy to run, naturally, level streaming won’t make any difference to that particular area. It’s not magic :slight_smile:

Rereading your post, when you have already loaded the MS stuff, but are not in the room with it, the engine is not drawing it, because it’s occluded. So the performance would be fairly good, but maybe not as good as if the room was totally empty.

Yes, the engine automatically hides stuff we can’t see, but we can’t lean on that system totally and just fill the world with 400 million MS meshes. I’m sure you can see, that won’t work :slight_smile:

1 Like

Thank you for clarification.
Level streaming is not very powerfull in very small maps (which we are currently creating for our project)
Maybe in our next project we will go Bigger :slight_smile:

One follow-up question: You said that engine hide meshes and stuff which are occluded (like by wall, etc.)
But what about , if they are out of camera Focus in TOP-DOWN View? (meshes and actors, that are not currently in our viewport, but are “just around corner”).
Will engine not draw them as well, so I don’t have to worry about Culling?

1 Like

Yes, you don’t need to worry about culling, because that’s all done by the engine. Anything that’s not visible with the camera, will be removed, for that frame.

It doesn’t matter if that’s because it’s hidden behind another mesh, or just not on the screen.

Look up the ‘freeze rendering’ console command if you want to see it in action. You can stop the game, and pan the camera around, to what’s being drawn and not :slight_smile:

2 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.