Loading Screen System (Level Transitions w/ Progress)

That should be all then, it’s working fine. Yet again, thanks for taking the time to help me out :slight_smile:

You’re very welcome!

Thank you for your response to my map settings/event binding question, that does help some but I haven’t gotten that far. I still have a number of issues that I don’t know how to work through.

  1. I don’t know how to bind events to my first level - the one whose map settings i put in the LSS Actor’s ‘Level to Load on Play’ - I’m trying to use the MainMenu from the examples which has the persistent level bind the main menu widget showing and hiding to ‘on open’ and ‘on close’ but that leads me to #2
  2. I can’t call the LSSAddLevel function in my persistent map’s BeginPlay due to LSSInProgress returning true and fast failing that function (LSSAddLevel) without doing anything. When Am I supposed to do it? For my main menu I would need to do it before the MainMenu level is opened for the reason described in #1.
  3. Forgetting LSSAddLevel, I also can’t bind any evens to MainMenu using LSSBindLevelEvents (Again because of LSSInProgress returning true)
  4. How do I change the Loading Screen to use for each level when using map settings? It doesn’t appear that I can do it in the map settings for the level. I don’t see any options for setting the loading screen for a level outside of just the LSS Actor itself for the starting level. Can I do it in blueprint? Calling QueueLoadingScreenLevelToUnload and LSSAddLevelAsLoadingScreen in my persistent level’s BeginPlay doesn’t work when I’m using map settings.

Thanks! Help on this would be a life saver as I think I need to use the actor pool feature which is only available when using map settings.

#1 through #3: Disable “Autoplay” on the LSS_Actor, do your bindings, then initialize loading via Blueprint (“LSS Load Level” node).
When using Map Setting files, see “15_PawnHandling_Map” for an example. The persistent map’s Level Blueprint does exactly that.

Example map “02_BlueprintSetup_Map” shows the same but with the basic approach (level names), while “06_AdvancedEventHandling_Map” deals with all possible variations of event bindings.

Use the “LSS Set Default Loading Screen” node (requires a map settings file as parameter).

Thanks again for the response. When I disabled Autoplay it didn’t do anything but it finally worked when I removed the ‘Level to Load on Play’ as well :slight_smile: Now the LSS functions are working and I’m moving on to pawn handling!

Hi. I’m having some issues with compiling a packaged build on 4.25. I keep running into this error.


ATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: begin: stack for UAT
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: === Handled ensure: ===
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error:
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: Ensure condition failed: GetSuperClass() [File:D:/Build/++UE4+Licensee/Sync/Engine/Source/Runtime/Engine/Private/BlueprintGeneratedClass.cpp] [Line: 1515]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error:
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: Stack:
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa823251e9 UE4Editor-Engine.dll!<lambda_edd2bbdbf9da04bf6104de7d718b849d>::operator()() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\BlueprintGeneratedClass.cpp:1515]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa80d88d06 UE4Editor-Engine.dll!UBlueprintGeneratedClass::NeedsLoadForClient() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Engine\Private\BlueprintGeneratedClass.cpp:1515]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa8a58b029 UE4Editor-CoreUObject.dll!ConditionallyExcludeObjectForTarget() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\SavePackage.cpp:641]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa8a58af75 UE4Editor-CoreUObject.dll!ConditionallyExcludeObjectForTarget() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\SavePackage.cpp:613]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa8a57cbd5 UE4Editor-CoreUObject.dll!FArchiveSaveTagImports::operator<<() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\SavePackage.cpp:1001]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa8a5cc2fd UE4Editor-CoreUObject.dll!FDelegateProperty::Serialize() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyDelegate.cpp:164]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa8a47990c UE4Editor-CoreUObject.dll!UStruct::SerializeProperties() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Class.cpp:1768]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa8a47443c UE4Editor-CoreUObject.dll!UStruct::Serialize() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Class.cpp:1846]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa8a473c6e UE4Editor-CoreUObject.dll!UFunction::Serialize() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Class.cpp:5555]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa8a5bc022 UE4Editor-CoreUObject.dll!UPackage::Save() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\SavePackage.cpp:3876]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa708f3907 UE4Editor-UnrealEd.dll!UEditorEngine::Save() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Editor\UnrealEd\Private\EditorEngine.cpp:4511]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa7079503f UE4Editor-UnrealEd.dll!UCookOnTheFlyServer::SaveCookedPackage() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Editor\UnrealEd\Private\CookOnTheFlyServer.cpp:4550]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa70797b59 UE4Editor-UnrealEd.dll!UCookOnTheFlyServer::SaveCookedPackages() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Editor\UnrealEd\Private\CookOnTheFlyServer.cpp:3440]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa707a4d83 UE4Editor-UnrealEd.dll!UCookOnTheFlyServer::TickCookOnTheSide() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Editor\UnrealEd\Private\CookOnTheFlyServer.cpp:2871]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa70611031 UE4Editor-UnrealEd.dll!UCookCommandlet::CookByTheBook() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Editor\UnrealEd\Private\Commandlets\CookCommandlet.cpp:921]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffa7063bd5b UE4Editor-UnrealEd.dll!UCookCommandlet::Main() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Editor\UnrealEd\Private\Commandlets\CookCommandlet.cpp:595]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ff7aaa7363a UE4Editor-Cmd.exe!FEngineLoop::PreInitPostStartupScreen() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:3391]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ff7aaa6b7ec UE4Editor-Cmd.exe!GuardedMain() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:127]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ff7aaa6bb5a UE4Editor-Cmd.exe!GuardedMainWrapper() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:137]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ff7aaa7e31d UE4Editor-Cmd.exe!WinMain() [D:\Build\++UE4+Licensee\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:268]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ff7aaa8040a UE4Editor-Cmd.exe!__scrt_common_main_seh() [d:\agent\_work\5\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffaba187bd4 .DLL!UnknownFunction ]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: [Callstack] 0x00007ffabb96ce51 ntdll.dll!UnknownFunction ]
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error:
UATHelper: Packaging (Windows (64-bit)):   LogOutputDevice: Error: end: stack for UAT

Repro steps:

  1. Create a new project in Unreal 4.25
  2. Add LSS to it
  3. Click File -> Package Project -> Windows 64 Bits

That error and 4 others should appear in the logs, and the build should fail.

Hello!

I have a problem with loading in levels that are in world composition. I have set the streaming distance to false on all the levels, and controlled everything is correctly spelled in the list of levels, but they still don’t seem to load. How can one fix this issue?

I can confirm that I’m able to reproduce it on my end, but so far have been unable to resolve it.
Logs don’t give anything useful to work with. It’s reported as “ExitCode=25 (Error_UnknownCookFailure)” with no errors related to the asset itself (there are some warnings about legacy ReflectionCaptures, but resolving those makes no difference).

Make sure the map you set as your “Loading Screen Level” is also present in the folder where your other levels are and assigned to a layer with Streaming Distance disabled, as well. World Composition will not allow you to load levels from other directories.

If that doesn’t resolve the issue, please get back to me with screenshots of your particular setup, I’ll do my best to help (you can email me here: https://www.unrealengine.com/marketplace/en-US/profile/).

Hello!

It worked to assign the loading screen level to a layer with streaming distance disabled! Thank you :smiley:

I have made some progress in identifying the issue and should have a hotfix soon.

VR Support? Wanting to use this to create a 3d environment loading screen for VR.

Also, do you need to use level streaming? I cannot for the setup we have.

The Loading Screen System should work properly in VR out of the box, with the exception of the Screen Fade Component, which by default uses a UMG overlay for smooth fade effects. To work with VR the Fade Component has to be set to utilize the PlayerCameraManager class.

In order to use this option set “Use CameraManager (instead of UMG)” on the component to true.
You can further set the default color of the fade effect as well as have Audio also faded out automatically.

Level Streaming is required. You can use multiple persistent levels and transition between those with the standard OpenLevel node, but each level still needs to stream in the transition map and actual game level with your content.

Update resolving 4.25 packaging issues has been submitted.

Edit: as of May 19th the update is still awaiting approval by Epic. Hopefully it won’t take much longer…

Hotfix for 4.25 has been *finally *processed and is now available in the Launcher.

Hey there,

Just got started with this and I have a question. I have some pretty large levels to load between. I’ve got it set up to use the level streaming, and am using a 3d level map as the Loading Screen Level with input required to continue.

However, it seems like all the loading is happening after I input on the loading screen level. After I input, I get taken to the black screen where the cogs play in the upper right. After that, the level loads.

My question is, how can I make it so that all the loading happens on the loading screen level, and not after the fact?

Input request is only displayed after levels have been loaded. All that happens after the final Fade to Black is setting the visibility of those levels to true.
The cog animation usually would only occur when some events are bound to this stage (e.g. procedural placement that needs to occur on visible levels but behind loading screen/fade to black).

Can you drop me an email [^] with some screenshots and info about your setup? I’ll try to figure out what could be wrong.

Hello,

I have an issue(s) with what I think has to do with BPC_ScreenFadeComponent. I’m currently using UE 4.23.1
The issue I’m having is that sometimes while loading a level, the loading level widget will switch over to the Fade Widget (cogs) and stay on that widget.
When this happens, I go into BPC_ScreenFadeComponent and watch to see if events are still firing and they are not.
I have been trying to get a consistent repro on this but the only thing I can come up with is that it’s most likely tied to CPU load or UE4 not being the focused window.

Repro steps:

  • Load onto a level using LSS.
  • While the loading screen is up, and is actively loading, alt+tab to another program on your computer; this will force UE4 into it’s “background behavior” (slower fps).
  • Wait until the fade widget comes up (cogs).
  • At this point, it will no longer progress, even if you re-focus UE4 as your active program.

I have been also semi-successful in just constantly traveling between 2 root levels, with each root having logic to drive LSS loading, but with this method, I haven’t been able to have reproducible steps; success rate in repro-ing this issue with this method is around 20%.

I’d appreciate any input you have on this matter.
Thanks!

I’m in the same situation. I added this to my game, then read the earlier posts about level streaming. Are there any suggestions for using this with level streaming?

Do you mean *without *Level Streaming?
Entirely without, no. You would have to at least embed your actual level (the one containing assets) within an empty root level.
You could then, however, transition between two such sets of levels to keep them separate (to use different GameModes, for example).

See this video:
https://www.youtube.com/watch?v=2uXt1gdZffs