How do I get a streamed level name for a save file?

All the levels are streamed into the persistent level - when the player saves part way through the game, how do I get the streamed level name for the save-file?

“Get Current Level Name” only gives the persistent level name

This is probably easy with c++ but I know diddly about programming and would like to do it through Blueprint

Like I said :wink:

There is no node to give you the streamed level name, because you can have more than one level streamed at once…

EDIT: Are you only streaming one level at once, or more than one?

I have a Persistent map that holds the world elements - then I stream each level independently (the whole map not just a volume). Levels run totally linear and the stream trigger becomes available when the objectives are met. So it shouldn’t be to hard to make a progress save - but for the life of me :stuck_out_tongue_winking_eye:

No worries - a lot of people get tripped up by the save game stuff.

Let me get this straight:

  1. You have a lot of stuff in the persistent?

  2. You stream one level at a time on top of that?

  3. You’re streaming with blueprint?

  4. When the player overlaps a volume you want to stream a new level and record the name of the streamed level?

  1. You have a lot of stuff in the persistent?
    Yes - the landscape, sky, sea, etc. - also some side mission stuff, so they can be available in all the streamed levels.

  2. You stream one level at a time on top of that?
    Yes - the level streams in with new objectives and the related objects to unlock the next level. On the stream-unload/load-trigger the current level is streamed out on begin overlap and new level streamed in on end overlap (using a triggerbox). The levels are all connected in a line with no breaks.

  3. You’re streaming with blueprint?
    Yes

  4. When the player overlaps a volume you want to stream a new level and record the name of the streamed level?

When the player overlaps a volume you want to stream a new level . . .
No volumes - it’s like an old school game where you play one level at a time, but having a sandbox feel and using the economics of streaming to have more levels and cut the loading time.
you want to stream a new level and record the name of the streamed level?
Yes - when the player saves the game.

Ok, it’s like this. Make a save game and put your list of levels in it:

In the level BP:

and the trigger BP:

So, you see the save game holds the list of levels and an index to the currently running one.

When the level starts, the level BP checks there is a save game and then streams the level we were running last time we saved.

The trigger volume will unload the current level ( which was the most recently save one ), and load the next one ( it increments the index ). Slight bug, it will try and load from a slot that doesn’t exist when the index gets past the end of the array. But this is just an example.

Tell me how you get on :slight_smile:

Thanks for this - much appreciation. It’s working real nice, but it’s just loading the level names - no assets. I think I should look for a plugin to handle this - any suggestions?

How do you mean, it’s just loading level names?

You get that you have to use your level names, and do all this from the persistent level?

I made a little mistake initially - now it works really nice. The bug is a bit of a pain. The only way to get it to run from the start is by deleting the SaveSlot - which is a bit tricky for the end user. I’m trying to see if I can run a ‘New Game’ and a ‘Saved game’ from the main menu to force new data into the SaveSlot, any ideas are more than welcome.

And super elegant code man, I’ve seen some pretty clunky approaches to address this issue (of which none really works either).

Again, many thanks for showing an interest.

If you need a blank save game to start with, just change the stuff on ‘begin play’ to reflect that.

If there’s no save game → make one; if there is → clear the start level