How to check if your 'Open Level' is loaded/finished?

Hi all,

I’m hoping this is a pretty straightforward question, before you add anything related to ‘Streaming’ that isn’t the answer.

From my Menu I currently have an ‘Open Level’ but in my testing I can see that it sometimes doesn’t finish rendering textures and other things before I’ve entered the game. How do I get the progress or check if the ‘Open Level’ is complete? so I can add a loading screen that waits until the level is actually loaded not some fake delay and hope its ready?

1 Like

If you’re using the ‘open level’ node, you can’t do anything while that node is running, because it eclipses everything else. You’ll know when it’s finished, because you drop into the level.

With streaming ( yes that ), you can bind an event to tell you when it’s loaded

and default streaming only calls the complete node after the level has loaded

although you might not agree that its really finished ( the engine definition of ‘loaded’ is quite bare bones ).

1 Like

I’m not sure I understand the two different Load Level Instances and Binding events there, do I use both or are they doing different things?

the following doesn’t work at least

1 Like

i think you’d want to look into Seamless Travel

OpenLevel wouldnt work for a loadscreen
and LevelInstance is for steaming levels

1 Like

If you use ‘load level instance by name’, it loads the level. You’re done. No need for ‘open level’ :slight_smile:

You can tag whatever code you want on your custom event read for after the load.

I can see the level instance is loaded but I haven’t actually changed maps from Menu to Level_01, what have I done wrong

so I need to use a multiplayer travel mechanic for single player game just to load a level properly?

Okay so I think I understand what is going on now.

  1. It is loading the level within the same map (Menu) and not directly opening the Map itself, no idea if that is a typical way of doing it or not.

  2. I just had to remove all the widgets I had on screen and I could see the level content but I seem to be spawning not at the Player Start and somewhere under the map, not sure why it doesn’t default to the Player Start?

1 Like

Yes, that’s what you need if you’re going to be making a loading screen. That’s how it works…

If you want to do it this way, then you do have to manage more things yourself, like moving the player. Loading a streaming level does not spawn a player because they are assuming you already have one in the persistent level ( the level you do the load from ).

1 Like

Seamless travel isnt about multiplayer, its about not destroying actors between levels, ie your player controller which could carry the load screen.

another option its to run a background AsyncTask while the map loads

This is when I press play and there is an existing save file

This is when I press play and there is NOT a save file (our main issue)

Can’t get the player to go to the Player Start

1 Like

How are you unloading the previous level?

How are you generating the player, are you spawning, or were they in the previous level or?..

Is this case failing?

I’m not unloading the previous level/map not sure how
the player exists the moment the Menu map is created as part of the game mode nothing spawned

1 Like

Can you check, does that cast work?

I’d say just don’t use the cast, just position the player :slight_smile:

its saying teleport isn’t working now


seems to be a timing issue

not sure where to put the logic to move the player when the Menu map opens or when the Play button is pressed

1 Like

It looks like you don’t have a player start in the new level?

Oh man this is FAR more difficult than it should be, I want to do it the lazy way, Open Level call it a god ■■■■ day but I want this loading screen to be a true reflection of what’s happening.

I’m hoping you can help, I really am.

This is the Main Menu widget

This is the Event Construct in the Main Menu widget, the Delay of 5 seconds for some reason makes the teleport work, I’m too exhausted at the moment to figure out why that is.

This is the Game Instance, note it is still using the old way, not sure what to do here, this is called by Level_01 immediately

Level 1 level blueprint

1 Like

I know it’s a hassle. It’s a very new way of thinking about things if you haven’t used this system before.

I’m with you, I will help, but we might have to strip it back to a couple of ‘test levels’ without the widget stuff - to get it working.

I’m a bit busy now, but will take a look at this and get back to in a little while… :slight_smile:

1 Like

Just some things I see. You don’t seem to use the save game after loading it?

Maybe I see it

If you’re using this code, remember ‘open level’ totally trashes everything except the game instance. And it looks like you are using this

I would make two test levels. No widgets or anything else. Just check you can change levels and move the player, that’s all.

So I made 3 levels. Level0 is totally empty ( uses the game mode to spawn the player ) and has code

LevelA and LevelB ( have no spawn in game mode ) both have the same code

Result is the levels load independently

LevInst

As you can see, it’s not a simple overhaul. In fact, you end up doing most of it in the game instance as that helps keep the code down to a minimum. Your loading menu will just sit in another level that’s loaded in front of everything, while this stuff is going on.

1 Like