Unreal Engine 4 Save and Load Levels and Checkpoints using Blueprints

Here is a tutorial on how to save and load levels using blueprints. This may not apply to everyone but hopefully the concept can help you apply it to your own project.

https://www.youtube.com/watch?v=_l0CbUjxVOw

Isaac,

savegame.pngopenlevel.pngcheckpoint.png

Thanks for this :smiley: Going to tackle a saving system soon, and I’m trying to stay in Blueprint for now.

thanks for the tutorial! Do you happen to know if there is a way to save the state of an entire level and the positions of everything in it without having to put everything in it’s own array?

Howdy unrealguy,

Fantastic work on your tutorial! If you had time, Would you be able to share this on our Wiki page? This would help other users in the future that want to implement saving and loading of levels via blueprints. You can find the Wiki page here: A new, community-hosted Unreal Engine Wiki - Announcements and Releases - Unreal Engine Forums. But nevertheless, keep up the great work and hope to see more helpful tutorials or finished projects from you in the future.

Have a great day!

Hi Hyperloop, thanks for watching.

I don’t have much knowledge on the array system but at first glance I saw; a node for get tags/set tags (not sure if unreal lets you get each object with a certain tag), get all classes with interface (not sure if you can tie the objects to the interface blueprint) I would suggest asking a programmer how they would go about this and if you have a good understanding of coding you will be able to figure it out. Another thing that comes to mind is an XML file and serialization may be the answer.

Now, your not gonna like this and you might just use the array system after you see how much work is needed and troubleshooting is required unless it’s a performance issue. I’m assuming you just want to save the state of everything that is dynamic in your game. Possible solution for no array system. It’s not a step by step but a concept of how it could be done.

  1. Open the “SaveLevel/Checkpoint” Blueprint (that was created in the video) and create a new Bool, name it “save all dynamic” set it’s default value to none when compiled.
  2. Using the trigger volume box component overlap node, grab the Set Bool and plug it in the chain of nodes where it will get triggered.
  3. The default value is FALSE so on the Bool in the event graph, check it so it has a TRUE value. Now you have a Bool that can drive information to another Blueprint or in our case the dynamic actors.
  4. Make sure to create some system that reset’s this value back to FALSE like inserting a delay or on end component overlap.
    This is the part you might stop reading depending on how your game is set up.
  5. With each actor you have that’s considered dynamic, you will need to add some more nodes to your blueprint.
  6. In each create a system of nodes that will cast to the “SaveLevel/Checkpoint” Blueprint and get the “save all dynamic” Bool.
  7. Plug the Bool into a Branch, the default value should be zero.
  8. After the branch, plug it into a system of nodes that create a save for the position as a vector or transform. Now every time that value becomes true on overlap, the actor position will be saved.
  9. You will also need a system of nodes that retrieves the save and loads the vector position then sets the actors location.

The save system is up to you. I’m not sure if you should create a SaveGame blueprint and create a variable for each object in the game, that way each actor has a variable to cast to and save it’s information.
Maybe an XML table can be created so it can keep all data for each characters in game and that is the file you use to load. You just have to be careful when loading data that it either needs to be reset so when your next level or new game begins.

So that’s my answer, I don’t know, but those are the directions I would go in your situation. Good Luck!

Isaac,

Hi Sean,

The wiki sounds like a good idea I will set that up and Thanks!

Talk to you later.

You can probably get all the actors by doing: Get All Actors of Class -> Actor.

Might be tricky to spin that into saving everything correctly, though.

Sounds like I have another challenge n00854180t
:smiley:

I’d love to see what you come up with! :smiley:

I think that would probably work though, but what I’m not sure will work right is having it save out the info about that particular actor’s class variables and that sort of thing, without having to cast to every type of actor you might have.

Hey n00854180t,

I need your help. So with the get all actors, I can get all the locations/vectors fine and they print. The problem is how can I store each string or vector while the loop continues. Is there a node that will add all strings in a array somehow before I save the data. I see the problem, it’s save the first time the loop triggers and I get the first actor in the class vector. I’m not sure how I can store all the actors vector before saving. We are so close buddy! :smiley:

Hello!
Did you find a solution to the above problem?

Hi this is an update on the checkpoint system. No saving needed.

https://www.youtube.com/watch?v=Chb0_5P5Lkk&feature=youtu.be

Hope this helps!

@Isaac - I was looking for something just like that but… it’s kind of difficult to understand what you’re actually doing in the original video. I’m going to check out the new one today. I know it may be asking a bit much but could you post some screen shots, the BP or maybe make a video where you create this system from a blank project?

Hi kennyrosenyc,

I could put some screenshots up for you. Maybe that will help a bit more.

@Isaac - That would be awesome. Anything. I’m just having a difficult time keeping track of all the nodes you use and where they’re connected.

Images to go along with video for checkpoint system.

If this is your first time attempting this using UE4 4.5, you may encounter problems. If so there is a simpler way to do this posted further down in the this forum. However reading this and watching video will give a good understanding of how it works.

Here are some screenshots with more explanation.

You will need your “Player Blueprint”, “Basic Actor Blueprint” and a “Gamestate Blueprint”

:slight_smile:

@Isaac - Thanks dude! You’re my personal savior.

Hey Isaac. I recently made the upgrade to 4.5 and the whole system doesn’t seem to work anymore. Will this update fix that?

I haven’t updated to 4.5 yet. I guess I will find out soon when it happens. Thanks for the heads up, maybe they changed something in Unreal this time around.

Subscribed to your Youtube channel!