So I am currently developing a level for my game which is loaded from the main menu which is on a separate level, Right now when I click the button it can take up to 5 seconds to load the level completed and until then the user is just stuck staring at the main menu.
I know its not much but I was wondering is there anyway to build in a REAL loading level (Not just a UMG widget that pops up with a 2 second delay or whatever)
I mean a real one that stays up until the level is ready
I have looked around and found tutorials transferring between levels but none going from a main menu to the level itself
Thanks for sharing this, however I have very little skill when it comes to C++ and have been building the project using blueprints etc, but thanks anyway
Depending if your menu level is interactive. Such as if it has actors which are used as menu props. Then you want to be able to unload that level, and load another. Well! To do this is not entirely crazy.
You do this with Level Streaming. The way level streaming works is by having one persistent level, and other levels which you stream in at even given moment. So this persistent level will be the the “Transition” level. All it is responsible for is loading, and unloading levels.
There is a tutorial on level streaming here.
So what you essentially do is on loading the persistent Transition level first. Then the persistent level is your constant state. Actors in this level will always be active, allowing your full control while other levels are interchanged. Next, you load your menu level. Then the player does whatever, and tells the menu it wants to load Deathmatch. Menu level now communicates to transition level, open Deathmatch. Now put up some video animations, and keep the main menu up. Keep in mind – while Deathmatch is streamed into the Transition level. Everything on the menu is still going. You can hide it or update it after Deathmatch is finished. Then jump in Deathmatch, unload the Menu. Done!
Doing it that way, you never once pause the state of the game preventing any unwanted waiting or unresponsiveness.
For future reference, you don’t need to do transition levels or persistent level with streaming, you can add a loading screen via game instance in C++ (easy to do)
That works fine if you don’t want to have any movie play synchronously, ie no stutter, or if you don’t want UI that has no stutter. You also are then limited to one gamemode, playerstate etc, which is very limiting and not possible for certain situations