Stream levels during Play in Editor

Hi,

my world is a big streamed open world city using world composition. When i package my game and start its working fine. The levels are streamed during runtime without any lags. When i start my game in the unreal editor first time it takes +5 minutes before the window game appears. When i start to move the game everytime starts to freeze and lagg when it starts to stream the parts of my city. This is very annoying when i need to test my game. I have already turned on under editor settings “Stream sub levels during play in editor” but its doesnt work. How i can force the editor to stream the sub levels during PIE from the disk (like in the packaged build) instead of duplicatem them into memory? (i think this is the reason why its so lagging) I dont think the only one solution is to everytime to package the whole game which also takes long time. How can i test my game in editor without only lags? Please help

Maybe a bug?
Version:
Unreal Engine 4.20.1 costum source build with Simplygon integration

nobody can help me?

You can alternatively “cook” the project assets then instead of playing on Viewport, “launch” the game (play in Standalone Mode).

Yes i know and tried that but its everytime recooks my 17 GB project with 72.000 Files for 3 -4 hours like packaging…
I just wont to test my game without waiting 3 hours for cooking and lagging when play in editor.

There is no reason for such a big delay. The kit demo project is a 25GB project and a huge, high quality map and has no delay on my machine playing in the editor.

You decide when your sub-levels are loaded, so first thing to do is to make sure you are not trying to load them all at the same time. So you can load using blueprint using your own customer triggering mechanism and the LoadStreamLevel node, or you can use LevelStreamingVolumes. If you are only testing one sub-level, you can just unload all of the others. You can do all of this really easily via the Levels window (see Window > Levels). If you clicking on all of your sub-levels and RMB > Change streaming method to Blueprint, they will not be loaded.

There is a map in the Content Examples called Level_Streaming which shows you how to do all of that. And it is covered quite well in the documentation

You might also want to look into the Async Loading Thread and the Event Driven Loader which you can find under the Package streaming part of the Engine - Streaming settings, which could reduce your load times.

Async Loading Thread and Event Driven Loader is already on. I cannot change the streamed method because world composition is on. I think its automatically loads and unloads sub levels. I can also see this in the level window during play in editor. I noticed that HDD load is 100% in Task Manager and is constanly loading data into ram. But this only happens when i play in editor or start the editor in game mode using "-game " command. In packaged game are no lags and it loads smooth the Levels.

Did you ever find a solution to this ?

You cannot change streaming method when World Composition is on.
But you can create new layer in World Composition and disable Streaming Distance on this layer. Then levels on this layer will not be loaded initially, you have to load them on demand.

Problem with that is when you have multiple levels to load when playing in PIE.
When level streaming works on callback basis in the game build. When playing in PIE it only calls OnLevelLoaded for the first level and does not load other levels.

One solution I found so far is when you detect that you are playing in PIE mode
then you iterate over streaming levels (you can data asset with list of levels you want to load when playing in PIE mode or load all of them).
To do this you need to call on ULevelStreaming methods: SetShouldBeLoaded(true) and SetShouldBeVisible(true).

To check if you are runnig in PIE you can use:
World->WorldType == EWorldType::PIE

To stream every level:

auto StreamingLevels = GetWorld()->GetStreamingLevels();
		for (auto StreamingLevel : StreamingLevels)
		{
			StreamingLevel->SetShouldBeLoaded(true);
			StreamingLevel->SetShouldBeVisible(true);
		}