This is brilliant, thank you for taking the time to do this. I reckon I’m just about there albeit for one issue. Because I’m loading in level instance instead of opening the actual map itself, I’m not able to use my ‘Level Name’ variable as it will always return ‘Menu’ because the map hasn’t changed.
I use the ‘Level Name’ variable for checkpoint saves and saves immediately that variable when you open any map so it’s always current, so when I hit play for the second time it knows to open Level 2 instead of Level 1, if that makes sense. How would I go about fixing that?
I’m also unsure of the practice, does the Menu become the only Map that really ever is open? the rest is loading and unloading instances of other map data? how would I get the name of the level instance so I can track currently loaded map data/instances?
You have to keep track of which levels you have open 
A good place to do your menu stuff would be in the persistent map, the empty one that you do everything else from. Also game instance is a good central place.
I control everything from the GI, and always keep one empty map open. In fact, it’s not entirely empty, I have the sun, skylight, sky in that level, and no lighting in the others. But it’s up to you, you could have just blackness in the persistent, and different lighting in each instance that you load.
‘open level’ is never used. You start playing from the default ( persistent ) level, and only ever use ‘load level instance’.
Tell me how it goes, because it’s not intuitive, I get that 
1 Like
So I have my Menu map that is now the Persistent Level, so how do you solve the following?
- Press Play, level 1 opens (how do you capture the level that is open and store it in GI?)
- Press Play, checks what the last level instance was open (how?) and load it
What would that look like in blueprints?

Well I have Level 1 instance opening from the persistent level (Menu map) and then Level 2 instance loading when I hit a trigger but Level 1 instance data is staying as well despite me having a Unload Stream Level node?
This is the logic
1 Like
If you want to remember what level you just opened, you can just save it in the game instance as a variable.
If you want to remember what level you were playing last time you quit, then you need the save game 
PS: You don’t need to do this

that’s only for level streaming.
‘Load level instance’ can load any of your maps at the drop of a hat. No need to include them as sublevels.
I’m only using level instances now but it still wont get rid of level 1 instance
1 Like
This
loads the level and them immediately unloads it. The ‘set is requesting’ node unloads the level…
but they are both on the screen at the same time so the remove isn’t working
When you press play, are you in level1? ( before anything runs )
I’m in the ‘Menu’ level, when I press play I am in the Level 1 instance, when I hit the trigger I unload level 1 and load level 2 but it only adds level 2 instance on top instead of removing level 1
1 Like
Is the menu level and level1 the same thing?
What is loading level1?
The Main Menu widget is loading level 1
1 Like
Ok, cool.
But this bit unloads it again, it was just me making a short example
this is how I know it isn’t working you can see both level 1 and level 2 text meaning both instances are showing when 1 should be gone

1 Like
Start with a totally empty level, and put this in the level BP
You will see level1 load, and then two seconds later, it will unload.
I’m not sure what you’re doing apart from that… 
You said
But the menu level is already loaded! If you run this code, you will load a second copy of the menu and then unload it again…
yes that worked as you expected, I’ve removed that code in your second pic…sooo confused, its it related to level streaming at all do I have to disable something?
1 Like
Make sure you don’t have any streaming levels, ie sublevels.
Load level instance will load a level.
SetIsRequestingUnload will unload it.
Start with something very simple, and build up. 
Okay so this runs from the Game Instance now as you alluded to earlier, it is cleaner and I’m happy about it.
This now happens at the level trigger to LOAD Level 2
This is what happens at the level trigger to UNLOAD Level 1
But there is no difference at all, Level 1 remains, I am sad, I shall sleep angry I guess
1 Like
Getting there, this bit is wrong
JUST this node does the unload
It takes the reference you got when you loaded the level earlier.
So when I load a level I say
and later
to unload it.
It’s because you are loading a second copy of level1 and then unloading it. The first copy remains loaded. See my post above 
I can’t seem to find a way to set the reference like I was with the level instance
1 Like