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.
- 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).
- 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.
- 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.
- 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.