It's usually a better idea when using scripted level streaming to use the Get Streaming Level node and call Set Should Be Loaded and Set Should Be Visible instead of the Load and Unload Stream Level nodes. The Should Be Loaded and Should Be Visible functions essentially add the sub-level to a queue to be loaded and made visible according to their priority, while the Load and Unload nodes try to load the level immediately. Also, since they're Load and Unload are latent action nodes, if you have a list of levels you want to load or unload you can't use them in a loop, as until the loading or unloading process for the first level in the list finishes all subsequent calls to that node will be ignored. But really, you shouldn't ever be using blueprint for level streaming. Level streaming volumes are way better, and if you want more granular scripted control just call Set Disabled on the streaming volumes in blueprint instead.
I'm kinda new to unreal, thank you for this advice! Currently i'm working on a game for Uni where i sometimes wanna make the level change when the player turns around (kind of like in Antichamber). For this i would obviously need to do this in blueprints to run the check for the player rotation, right?
I suppose blueprint could be useful if you wanted to code levels being streamed once the player or an object gets to a certain distance from or when a character is looking a certain way (first person) So everything behind you becomes un streamed and everything in front of you becomes streamed.. is this possible and viable? I kind of imagined classic silent hill using something like this.. Everything past the fog that you cant see is being loaded
Thank you so much! When UE5 came out I did not understood this concept that well but your video made me understand it and also helped me to apply it. Especially if using Lumen and VSM Beta. I remember reaching a point where I broke the shadows of my levels due to using many small dynamic lights. I was quite frustrated back then with that issue. I made a quick test in one of my levels with this method and it works like charm! I just need to think different design-wise now. Either way, this method opened my mind to so many new possibilities! This will help both my Unreal Engine and Roblox work. Thank you deeply! What you explained here is gold to me!
what im wondering is if this level streaming technique can be used for levels that were already created. unless im mistaken, in this video it seems like its somethings that is primarily used for brand new levels.
Odd question, but I assume "Persistent levels" Don't affect culling right? Like, say your 3 cubes are in the persistent level, but are behind a wall and out of view. Would they still get culled out the same as any other object, or would it remain rendered? It is 2 am when I write this, so I'm sure when I wake up the answer will seem more obvious. I have a large project that consists of many floors with a good transition piece between them, helping smooth out the loading of each level, but would like to ensure it's the best way before changing things to use streaming.
Thank you for the video always womdered how it worked, but i thought unreal can help with lowering LOD enough so that loading screens wouldnt be neccessary anymore. Maybe im missing something. Thanks for the upload.
@@UnrealUniversity No, it's not. You should use World Partition as it makes your level easier to deal with and it doesn't create a huge file that could also risk to be corrupted.
Yes, although when any player steps into a level streaming volume, the connected level will load for every player, even if players are not inside that volume
yes, Aliens fireteam elite has this problem, even on SSD it drops frames to 0 to load everything at once. I would advise, if you have this problem and only if you have this problem create more levels and load them 2-3 seconds from each other.
OFC it works fine but I'm little confused now ;/ How does it relate to UE5 WorldPartition system and Data Layers? Doesn't they serve the same purpose- you can enable/disable datalayers? I (probably wrongly?) thought LevelStreaming is more connected with idea of Sublevels and therefore old UE4 World Composition system, now replaced by World Partition? Other matter I thought OcclusionCulling also works here= these blocks in second room are rendered only from the moment you began to see its first slightest element,first pixel of rendered object image?So I thought they aren't there anyway till moment I began to be able to see them. EDIT: But now I think I see the difference- Occlusion and rendering happens and relates more to CPU/GPU operations and streaming level you have shown here is more about count of actors in the scene(level)= more MEMORY issue? But then still I thought now WorldPartition and DataLayers deals with that?withn occlusions at back seat;) Sorry for chaotic questionS= simple manifestation of "performance ideas" chaos I have in my mind now ;)
@@UnrealUniversityspent a day googling. The only thing I've found is that people are using the MoviePlayer to show an async widget up while the OpenLevel is running synchronously. afaik you can't do any nice transitions or even just fade in/fade out that way, but at least you get an animated throbber. Hopefully this is something epic will address in future engine updates. Our game needs multiple levels where each one is its own world partitioned terrain.
Thank you, could you please make third person toturiol with all details like 8 directional movment and ik system, and animations crouch and equip and unequip pistol and guns with physics properties
but how does it work i n addition to WorldPartition systems? deosnt worldpartition system do the same, loading /unloading (kind of distance culling) parts of the map. Yes I understand WPartition is about unloading/loading parts (regions) of 1, megalevel and here we have many levels. Not sure if these 2 techniques are mutually exclusive? Isn't this method you showing here from OLD , UE4 WorldComposition mindset, way of dealing with big maps (btw isn't it said to be deprecated?)
Well i guess with level streaming, you can load and unload in all 3 dimensions. World partition only has a 2d grid and not a 3d grid. So although world partition is easier to set up, level streaming gives you more flexibility. Lets say you have 5 buildings. So with world partition you can load only the building you are in. But with level streaming, you can load only the floor you are on. It doesnt make sense to load the 10th floor when you are on ground in world partition. For example if you have played subnautica, with world partition safe shallows and lost river both will be loaded whereas with level streaming only the safe shallows will be loaded. Subnautica is coded in unity and uses almost level streaming type system also although they used octree implementation iirc.
i need this so much! thank you!
please feel free to share more Optimize videos
Will do!
It's usually a better idea when using scripted level streaming to use the Get Streaming Level node and call Set Should Be Loaded and Set Should Be Visible instead of the Load and Unload Stream Level nodes. The Should Be Loaded and Should Be Visible functions essentially add the sub-level to a queue to be loaded and made visible according to their priority, while the Load and Unload nodes try to load the level immediately. Also, since they're Load and Unload are latent action nodes, if you have a list of levels you want to load or unload you can't use them in a loop, as until the loading or unloading process for the first level in the list finishes all subsequent calls to that node will be ignored.
But really, you shouldn't ever be using blueprint for level streaming. Level streaming volumes are way better, and if you want more granular scripted control just call Set Disabled on the streaming volumes in blueprint instead.
I'm kinda new to unreal, thank you for this advice!
Currently i'm working on a game for Uni where i sometimes wanna make the level change when the player turns around (kind of like in Antichamber). For this i would obviously need to do this in blueprints to run the check for the player rotation, right?
I suppose blueprint could be useful if you wanted to code levels being streamed once the player or an object gets to a certain distance from or when a character is looking a certain way (first person) So everything behind you becomes un streamed and everything in front of you becomes streamed.. is this possible and viable?
I kind of imagined classic silent hill using something like this.. Everything past the fog that you cant see is being loaded
Thank you so much! When UE5 came out I did not understood this concept that well but your video made me understand it and also helped me to apply it. Especially if using Lumen and VSM Beta. I remember reaching a point where I broke the shadows of my levels due to using many small dynamic lights. I was quite frustrated back then with that issue. I made a quick test in one of my levels with this method and it works like charm! I just need to think different design-wise now. Either way, this method opened my mind to so many new possibilities! This will help both my Unreal Engine and Roblox work. Thank you deeply! What you explained here is gold to me!
This is a great and easy way to handle it without scripting, thanks a lot! 😀
My dear teacher I am wanted this tutorial! Thank you so much
Glad it was helpful!
Bro you are a legend thank you so much.🎧🎧
Thank you for this, very helpful! :)
what im wondering is if this level streaming technique can be used for levels that were already created. unless im mistaken, in this video it seems like its somethings that is primarily used for brand new levels.
thanks a lot! very good information!
hi, thanks for your great Tutorial
is this possible to use world partition and level streaming at same time?
Odd question, but I assume "Persistent levels" Don't affect culling right? Like, say your 3 cubes are in the persistent level, but are behind a wall and out of view. Would they still get culled out the same as any other object, or would it remain rendered? It is 2 am when I write this, so I'm sure when I wake up the answer will seem more obvious. I have a large project that consists of many floors with a good transition piece between them, helping smooth out the loading of each level, but would like to ensure it's the best way before changing things to use streaming.
Great tut! Good or bad to have Main Menu level persistent?
Thanks I haven't tried to physically do level streaming yet I wanted to research it first. Does this work for parts of landscape and dynamic lighting?
How to get the project that contains particles with jumping and footsteps at the beginning of the video?
how do you do fade in and fade out level stream appoarching closer or far away?
You could you use the second method in this video
Thank you!
can we replicate it so it will work separately for each player?
Yes.
Thank you for the video always womdered how it worked, but i thought unreal can help with lowering LOD enough so that loading screens wouldnt be neccessary anymore. Maybe im missing something. Thanks for the upload.
Hi, thanks for your content !
What's the benefit compare to world partition ?
Should they be mixed for some usecase ?
Thanks !
I have not really explored world partition yet, although world partition is more for open world maps
Use World Partition, don't use Level, they are discontinued for a reason.
@@UnrealUniversity No, it's not. You should use World Partition as it makes your level easier to deal with and it doesn't create a huge file that could also risk to be corrupted.
will check it out although I have only seen it be used on large open world maps thats why@@OverJumpRally
hey :) is this work with multiplayer game too? or need to set some code to make it replicated?
Yes, although when any player steps into a level streaming volume, the connected level will load for every player, even if players are not inside that volume
but what if there are a lot of objects, will this lead to freezing or long loading when entering this trigger zone?
yes, Aliens fireteam elite has this problem, even on SSD it drops frames to 0 to load everything at once. I would advise, if you have this problem and only if you have this problem create more levels and load them 2-3 seconds from each other.
Yes , although you could add a loading screen using the second method and wait for the level to be loaded and then show it
OFC it works fine but I'm little confused now ;/
How does it relate to UE5 WorldPartition system and Data Layers? Doesn't they serve the same purpose- you can enable/disable datalayers?
I (probably wrongly?) thought LevelStreaming is more connected with idea of Sublevels and therefore old UE4 World Composition system, now replaced by World Partition?
Other matter I thought OcclusionCulling also works here= these blocks in second room are rendered only from the moment you began to see its first slightest element,first pixel of rendered object image?So I thought they aren't there anyway till moment I began to be able to see them.
EDIT: But now I think I see the difference- Occlusion and rendering happens and relates more to CPU/GPU operations and streaming level you have shown here is more about count of actors in the scene(level)= more MEMORY issue?
But then still I thought now WorldPartition and DataLayers deals with that?withn occlusions at back seat;)
Sorry for chaotic questionS= simple manifestation of "performance ideas" chaos I have in my mind now ;)
how would you stream from one hub level to another hub level?
You only have one main hub level, then you stream in and out the other levels
@@UnrealUniversity you can't seam to stream in a level with World Partitioning in it.
oh in that case I guess have to open that level to get to it, I have not used world paritioning but I heard for like open world maps
@@UnrealUniversityspent a day googling. The only thing I've found is that people are using the MoviePlayer to show an async widget up while the OpenLevel is running synchronously. afaik you can't do any nice transitions or even just fade in/fade out that way, but at least you get an animated throbber.
Hopefully this is something epic will address in future engine updates. Our game needs multiple levels where each one is its own world partitioned terrain.
Thank you, could you please make third person toturiol with all details like 8 directional movment and ik system, and animations crouch and equip and unequip pistol and guns with physics properties
I don't have plans to maybe I could an IK one
but how does it work i n addition to WorldPartition systems? deosnt worldpartition system do the same, loading /unloading (kind of distance culling) parts of the map. Yes I understand WPartition is about unloading/loading parts (regions) of 1, megalevel and here we have many levels. Not sure if these 2 techniques are mutually exclusive?
Isn't this method you showing here from OLD , UE4 WorldComposition mindset, way of dealing with big maps (btw isn't it said to be deprecated?)
I’m to broke to afford ur courses
sorry bro, but don't worry this black friday one of my courses will only be $1
@@UnrealUniversity dawm ok
@@UnrealUniversity I gotta save up cuz I don’t even have $1 I’m so broke
@@masterdum.. bruh, thats tough
@@UnrealUniversity I am a kid tho that just happens to love unreal
lost me at 4:30 smh
Why are you still using Levels when World Partition is a thing? This makes zero sense, especially if you work on a project with multiple people.
Well i guess with level streaming, you can load and unload in all 3 dimensions. World partition only has a 2d grid and not a 3d grid.
So although world partition is easier to set up, level streaming gives you more flexibility.
Lets say you have 5 buildings. So with world partition you can load only the building you are in. But with level streaming, you can load only the floor you are on. It doesnt make sense to load the 10th floor when you are on ground in world partition.
For example if you have played subnautica, with world partition safe shallows and lost river both will be loaded whereas with level streaming only the safe shallows will be loaded.
Subnautica is coded in unity and uses almost level streaming type system also although they used octree implementation iirc.
maybe not everyone wants to make an open world game, world partitions aren't good for linear maps like an office building for example
@@Ngornix You can use World Partition with Data Layers
"Hello. In this video, we're going to go over how you can optimize your Unreal Engine game products..."