Level Streaming from Splash Screen to Main screen **SEAMLESS**

Hi all, I have another question…

I have a splash screen and when you click the “Enter” button it loads up the next level,I have a “throbber” loading widget, I wold like the level to load and the throbber still play but when I try to click it the throbber just freezes and then goes to next level. I was reading this thread A new, community-hosted Unreal Engine Wiki - Announcements - Epic Developer Community Forums and I thought it was exactly what I needed however nothing happens when I set my one up… anyone point out my mistake?

thanks

Is it possible its loading and destroying your 0_SPLASH fast enough that you never see it animate?. It would probably make more sense to have the throbber in the persistent level. one way to test may be to put a delay node before you unload the stream level but print something like ‘Loaded’ before and see if it animates.

Thanks I did try a delay after loading the throbber, it was playing for the desired amount of delay then it all freezes whilst loading up the next level. so I was wondering can you have the splash and next level loaded at the same time? maybe then i could lower the priority of the next level until it’s full loaded or will that not work?

If your splash/menu screen is a different persistent level entirely from your level itself, then Load Stream Level will not work because you can only stream levels that are sub-levels of the current persistent.

The tutorial you linked is overly complicated. The easiest way to do this (without playing a full screen looping video, which is a solution but a more difficult and less versatile one) is this:

Your level structure:
- Splash.umap (Persistent)
- GameLevel1.umap (Persistent)
— GameLevel1_001.umap (Sub-level of GameLevel1)

**GameLevel1 **should have almost nothing in it. It’s basically just a container for your sub-levels and only holds the loading logic. The sub-level(s) should have the actual game content.

  1. When your splash screen button is clicked, show your loading screen widget (I recommend to just make an entirely separate widget instead of having it be part of your menu).
  2. Do Open Level on GameLevel1. This will do a “hard load” (the kind that freezes rendering) and load GameLevel1 as your new persistent, but because GameLevel1 has nothing in it, it should be almost instant.
  3. On the Begin Play of GameLevel1, re-create your loading screen. Open Level flushes all widgets from the viewport, but if you re-create it right away in the level you load, you will not notice that its being destroyed and re-created.
  4. Use **Load Stream Level **to stream in GameLevel1_001.

Since you are now streaming in all of the content in your level, the throbber will not freeze. Then once your level has finished streaming in, just kill the loading screen.

2 Likes

Thank you JParent, I never realised that streaming is all done in a container level, will have to read up on it!