How to level stream in Unreal Engine 5?

Some time ago, I wrote a tutorial about loading and unloading levels in UE5, where we also discussed why level streaming is important and the meaning of common terms used when such systems are implemented. In this tutorial, we will focus on how we can level stream, along with short descriptions of the terms we need to know to understand this system better.

To understand how level streaming works in Unreal Engine 5, we need to get familiar with two terms: Persistent Level and Sublevels.

  • Persistent Level: A persistent level is essentially just another map. It is the map that is loaded first and remains loaded. Any assets, actors, etc., placed in this level will continue to exist until the map is completely unloaded or this feature is modified through blueprints. While often the persistent level is kept empty for organizational purposes, it’s also a common practice to place your ‘Level Streaming Volumes’ and general light setups here, which will affect all of your levels.
  • Sub-level: A sub-level is a child of a persistent level. It cannot exist without a persistent level, but can be displayed or hidden through programming or blueprints. These kinds of levels are loaded or unloaded whenever the player is traversing towards this area to save performance.
Lazy Loaded Image

Your advertisement can be placed here for $200 permanently. Suggested resolutions: 1800x663 or 1400x1400. Contact us.

Creating Sub-Levels In Unreal Engine 5

To access the levels window, you can follow this path:

  • Window > Levels
Lazy Loaded Image

First click on the ‘Levels’ button.

To create a new sub-level, first click on the ‘Levels’ button, then click on the ‘Create New…’ button in the revealed menu.

How to move things from one level to another?

When you have multiple levels and assets in your scene, you’ll notice that Unreal presents a new window at the bottom right of the viewport editor:

Lazy Loaded Image

Through this menu, you can display which level you are currently in. When you click on an asset in the game world, it will also reveal the information about which level that asset is in.

To move your assets from one level to another, you can select the assets you want, cut (Ctrl + X), switch to the desired level, and then paste (Ctrl + V).

Placing ‘Level Streaming Volumes’

Activate the ‘Place Actors’ window (Window > Place Actors) to quickly search for any Unreal built-in actors. Look for ‘Level Streaming Volume’.

Lazy Loaded Image

    A few important things to know about this actor:

  • The ‘Level Streaming Volume’ actor should cover the entire surface of your mesh/actor/components/etc. For example, if you place this actor half the size of your mesh/component/whatever you want to stream, when the player exits the level streaming bounds, the assets will immediately be de-streamed/unloaded, and player will start falling through the map.
  • If you do not wish to create enormous size of ‘Level Streaming Volumes’, you can always add multiple level streaming volumes that covers different or same areas of the mesh, that streams the exact same mesh.

After we place our level streaming volumes, we can go back to our ‘Levels’ window.

Lazy Loaded Image

Let’s say I moved the assets I wanted from my persistent level to ‘Cave_SubSystem_01’ and placed a ‘Level Streaming Volume’ in my persistent level.

Then I can open the ‘Levels’ menu, select the sub-level that I want to stream, and, from the following menu, under the ‘Streaming Volumes’ array, define that when the player collides with the placed ‘level streaming volume’ (which I named Level Stream Cave Area 01), it should be streamed. When the collision ends, it will be removed. Unreal takes care of everything else automatically. That’s all there is to it!

Lazy Loaded Image

Final Thoughts

If you have any questions or find any part of this tutorial confusing, please leave a comment below. Additionally, if you enjoy these tutorials, you can support me on Patreon for just $10 a month so I can dedicate more time into these tutorials!