Easy Save & Load

Store_EasySaveAndLoad_ featured

Saving and Loading values is a corner stone of any game, software or engine. But unfortunately Saving and loading variables inside Unreal Engine have always been involved with lots of nodes and connections and complexity.

With Easy Save & Load you will be able to save

  • String
  • Float
  • Int
  • Bool
  • Vector2
  • Vector3
  • Map name
  • Location
  • Rotation
  • Transform

within just one node; and load the saved value via聽one node call as well.

It was meant to save the time of building and duplicating the save graphs to give you more productivity and focus on the core game itself. Saving data is essential part of any GamePlay experience, but now it is the easiest to handle!

Here you can download sample project (Unreal 4.12), Extract it, and put the EasySave folder inside the /Content directory of your project.

Download Sample



72 thoughts on “Easy Save & Load

  1. Hi Muhammad. Just bought your Save Load Blueprint. Very useful and works great. If I could make some comments on new features. An option to save multiple attributes to file. So in the node you have an option to put the file name and then it appends the attribute in the file? so you can save player stats in one file, Level info in another file? is that something that would be possible. Great work on the plugin and good luck with sales

    1. This is great feature actually. But while I’ve to think about keeping the same flow, I would add it as separate save and load method. I mean, if I changed the whole tool to work that way, then the old users will have a problem with their games using the old method. So, I’ve to think ore about how to add the possiblity to save lots of things inside one file while keep the old method works too.
      But anyway, I appreciate your contribution ^_^


      1. Awesome work, just bought it in the market place and I have to agree with Matt R, a feature for multiple values in one file would make this one of the best buys on the marketplace by far, well done!

        1. Coming on the road,,…Coming on the road 馃檪
          I done it already, but due to testing within limited time, I’ve to submit it by the week end. Hopefully Epic’s process of an update will be fast.


  2. It would be interesting autosave system to a database for FPS or MMO type games, would be interested in acquiring it;)

    I am developing one type GTA

    1. It is more flexible to give the suer the ability to save the different variable types, then the user do save it’s data structure in the way he likes. The tool is just meant to save/load a value with one node ; just rather than doing save/loa with ~15 node per variable.

  3. hey, is it possible to save multiple bools in 1 saveGame? so you have like trigger.save and in it like 10+ different bools?

    1. haha, will be great. While typing I’m mostly not looking neither to the keyboard nor to the screen :D. People normally look at one of those things ^_^ but I’m not a tpical human being 馃槢

  4. Hello Muhhammad. Good job!

    I have a question:

    As I want to save an integer greater than “999” value, such as an integer value “1200”. The debug tells me I’m keeping a value of “1.2” and when I load the returns an integer value of “1”.

    How I can fix this?


  5. Hello Muhammad,

    I recently both your easy save and load, what im looking for is to save a string, I have created a color change on a piece of furniture and just want to know is it possible to save that to a file, so each time i click the button to change the color it will save, is there a way to do this, if you need me to send the BP i’ve done, no problem there

  6. Hi Muhammad,

    Thanks for the tool! I got it from the marketplace some weeks ago. Can you give me some tips on how to save all the locations and values of a certain class? Let’s say I have an array of 10-15 enemies on a level, and I want to save their location using your blueprint – how would you achieve that?


    1. Another quick question: I believe UE4 has something like a “does save game exist” boolean check. How do I access that using your BP?

  7. Hey Muhammad, I’m still not sure about how to get a “does save game exist” boolean answer. Can you give me a hand here? Thanks.

    1. I can’t get the point …

      Does Save Game Exist, will return either TRUE or FALSE based on the save name you entered. But any way, if you mean regarding EasySave AnLoad, It will not return that bool. I can add it as a feature with the coming version 馃檪


      1. The idea was to check if there’s a previous save game when the level loads – and if there isn’t, don’t look for save files. I found a workaround by creating a bool on one object in the level to check if that level was visited before. This is all for ‘auto loading’ features.

        1. The way you made it, will make it works. Also I can add a return for the save, but that will not make the saving process no more done with node and so as the load process…but anyways, there is tons of work arounds, and you just found yours 馃槈


    1. Structs are not supported yet, but you can go around it by saving each member of the struct as it’s own value using a save node, and loads all the members that way.

      Arrays are not supported, and will not support it, as it is more about using the current save logic, but in a different way. Check the following video which shows how to save an array of transform, follow the same method, but replace the saving logic with single EasySave node, and also replace the loading method with a single EasyLoad node.


  8. Hi guys! I need some help. Sorry for my bad english! I am a beginner!

    Very good use is the easy save. It is the case that I built a Inventory in the UE4’s basic tutorial help docs. No just started to build up in the save-all, he stuck here! I save-all I can sing, but we do not know specifically what was variable must be saved! How come it ?! There are some who might have done it once, he knows which are the ones that are held there on the items recorded in the Inventory ?!

    Thanks a lot in advance !!!

    1. Szia!

      Ne haragudj, nem igaz谩n 茅rtem amit le铆rt谩l, de ha elmagyar谩zod magyarul, akkor megpr贸b谩lok seg铆teni. (Persze ha m茅g aktu谩lis)

      1. Szia Norbi! Az a probl茅m谩m, hogy development verzi贸ban rendesen tudok menteni, de shipping verzi贸ban egy谩ltal谩n nem! Kellene haszn谩lnom a load from file, vagy save to file-t!?

  9. Hey!

    I saw this question posted in the marketplace, but the answer you gave wasn’t being displayed so I thought I’d ask it again. I’m sorry for making you answer this again and I’m sure it’s an easy fix, but how do I get this to work while using UMG?

    I’ve created logic that works perfectly while in the level blueprint, but even when I cast to the save game object or create references to it, the fast fails and I get the “accessed none” error with my BP. Is there any advice you can give me to fix this?

    That being said, this is hands down the best buy I’ve made on the marketplace so far! You’ve saved me days of tedious work by releasing this. Thank you so much and I wish you luck with your endeavors!

    1. Simply you use a node (inside the UMG blueprint) called (GetAllActorsOfClass) and set its ActorClass value to “EasySaveObject”.

      This step will return you an array. If you have only one save object, you can just access the index 0, otherwise, you can sort them with tags or something. but anyways, 95%, you’ll need only one save object.

      here is a screenshot:


  10. Hi Muhammad,
    Are you still in Shanghai? I love that city. I was there in 2010. It is an awesome vibrant place.
    I bought load/save and love it. I was wondering if there was anyway you could add the ability to load up maybe a struct or something with the variables we want to save so would could fire out just one call to load or save?
    Is there a way to do that now?

    1. Hey Arthur,

      I’m still there, things always getting worst by the gov. stupid rules, So I’m sure you are at a better place now 馃榾

      This feature was considered, but due to some complications I didn’t announce it officially (just to not get bound by a release date). But what I’m sure about, that it should be in the next update (which probably with 4.12 release).


    1. It is not A bug within the Easy Save & Load. It is a quite common Unreal issue for some Blueprint users.

      I’m sure you are using something called “Grouping” within the Int->text node. So, if you expanded the option for this node, you’ll find a bool value called “Grouping” this is basically will add a “,” to the value, which makes it not successfully converted while loading it back.

      Long story short, disable the Grouping option.

      Please, if your problem get solved, mention here, so other users could reference to this comment. Also don’t forget to rate the tool if you like it 馃檪



      1. Thank you for the quick answer it works just as you say. Awesome pugin saves a lot of work. 5 stars 馃槈

  11. Hello :),

    easy save and load works fine on pc
    but when i make a android version of my game the save data will be not saved..
    I tested on s3 in unreal version 4.11.2 here my blueprint script.

    P.s. When you help me out i give you 5 stars.


  12. Hey I just got the the Save-Load System!!!! Great stuff.. however, how do I save a level and load a level ?? :/ 馃榾

      1. I have a Main Menu level.. When I click on New game it opens the first level… When I click save… It saves the current level… When I exit the game it goes back to the main menu… When I click LOAD game… it loads the saved LEVEL name. I’ve done all of the button logic…But the saving of a level XD ????

        1. So, the way it works with the tool, at your main menu level (or wherever you need to process the save) You:
          – put instance of the ave game object
          – do the save as the tutorial does
          – save the map name (which is TEXT), and lets say the save key is “LastPlayedLevel”

          Now at the main menu, you have to add logic to the laod button, to check if the key “LastPlayedLevel” is exist or no. And if it is, you just call the node OpenLevel, and use the value returned by the easy load node.



        2. So, in case it is not clear, I started making sample projects, you can download from this page, all what you need after extracting the project, is to put the tool folder within your content folder. And then you can check the blueprints with the notes 馃檪


          1. thank you so much ( as I sit here trying to figure out how to construct an object class) haha

          2. Refresh, and you’ll find a (Download Sample) button above the video. It is dropbox.

            Remember, put the plugin folder inside the /Content, before opening the project.


  13. Hi Muhammad, i bought your BP, its great but i dont have much expirence with save and load so i dont know how to properly save and load the position of my player, i already saw your tutorials but still its not so clear to me.. sorry if this is so obvious but im lost..thanks.

    1. There is no problem to ask 馃檪

      It is simple all about getting a reference to the disk (the actor ) you put in your level. So, I’ll assume you are not going to do the save & load from the level blueprint (which i done in the videos) and will asuume you are going to do it at your character blueprint itself.


      -Open your character blueprint
      – add node (gett all actors of class)
      – set it’s search class to the Easy Save classs
      – then get the first index of the array (get index 0 )
      – I assume here you’ve only one disk within the level
      – then from the index you got, you can do easy save or easy load
      – hook whatever value you need to store (get world location for example to get the current actor’s location).


  14. I’m trying to save and load the location of actors of a class.
    I got my playable character location saving and loading working thanks to your video.

    Here’s my BP: http://imgur.com/a/RG6Sn

    What am I am doing is looping Saving and Loading/SettingActorLocation.

    Each time in the loop, I change the Key Name slightly. I know this string changes because I printed it and it shows up different for each one. The location will show but they become the same values, even though the actors have different locations.

    What can I do?

    1. Your logic might be Okay. But I can’t tell what the cause of the problem here. For loop might be little tricky within Unreal engine, and they have lots of issues, and your problem might be related.

      In order to be able to debug, and tell you what exactly the problem is, it is better if you can send me a sample project. It doesn’t have to be part of your actual project, you can quickly make your setup within a template (3rd person template for example), and same logic setup you using, and from there I can debug it for you.


        1. Now I got a clear idea. There are one important thing you need to keep in mind. Everytime you do “get All Actors Of Class”, it won’t return the actors at same order.

          For example, if you have 4 enemy actors, named enemy1, enemy2, enemy3,…etc. When you do get all actors of class, every time the resulted array might be in a different order, so it might be 1,2,3,4 or 1,3,2,4, or 1,3,4,2,…..etc.

          So this is first part of the problem here. Second thing, the example you sent, doesn’t have an actual thing choosen as the reference class to get (enemies for example). So, I choose the “First eprson character). And the behavior was expected:
          1. get only one instance from the level (which is the player)
          2. store his location
          3. on key press ended, set the location to the choosen location.

          So, the way you can try it, is to press the key (but don’t remove your finger), and keep moving with the character, and as soon as you remove your finger, his position will be rested to the point where you started the “E” key press.

          Again, I believe it is not tool related problem, and not unreal related problem, it might be little of miss understanding how Unreal could be unexpected at some points.In the past it took me a a long time to understand that array not sorted with the same order every time 馃榾 but once I knew that, I was able to overcome lots of problems within my projects.


          With that said, how you make sure of that at ur project ?
          – Now you make an array and every time you get all actors of class, store the resulted array at that array.
          – Now do a foreach loop to print the found actors names in order.
          – try several times, and you will find actors not always listed at the same order.

          Again the sample you sent, doesn’t have anything attached to the “get All Actors Of Class”, so the best Iw as able to do, was to set it to get the First Person actors.


          1. I am able to save and load FirstPersonCharacter easily using press E, release E method and keep moving.

            the purple cube BP was called “AA”
            In levelBP I had two commented sections for save/load FPSCharacter and for save/load AA BP’s

            Even though it might not save the same order of AA BP’s, it was never loading any new position.

            Could you show me a BP setup of saving and loading classofActors?

          2. Ok, OK, got it.

            It is so easy, and works fine most of the cases (arrays are good till now).

            Here is my blueprint, nothing fancy:

            And here is a gif of the behavior.

            I push “E” and keep pressing, then i shoot something to move it (Static Mesh Actors), and finally i release “E” and everything loaded from the location saved at press time.

            One more thing to keep in mind, if the actors you working with are AI/Enemies, and they have some logic to move, so it make sense that they don’t respect the loaded value as long as they are following the navigation mesh and their behavior trees….Just thoughts!

            let me know if you have any other issues.


          3. Sorry I’m just having trouble seeing what differs from your BP to my BP. Could you send me a project? xD All I see is that our BP setups are the same (it could be because quality is poor)

          4. My only advice, is that you add some debugging messages like the ones I’ve added, it will let you learn more about your blueprint. For now, the only difference is the “AA” actor, which might be problematic.

            Try to do the same as the sample you sent me. I mean first person example, and just get the stsaticMeshActors, and see if it is negative or positive results.


          5. Okay, I did get it working by Getting “StaticMeshActors”

            My “AA” BP will not work though!
            ^The way I created my “AA” BP is the following:

            1. Right click in Content Browser, create asset Blueprint Class. I selected Actor and hit “OK.”
            2. Drag a cube into viewport, change its material color from white to purple.
            3. Compile and drag them into the scene.

            How come this will not gather correct locations for the “AA” ActorBP?

          6. Sometimes there is serialization problems. Removing the asset (the blueprint AA) from your project and creating it from scratch, and may be with a different name, this might solve it.

            The way you created it, is defiantly fine and correct. But the engine might have bugs, who knows.

            Also try it in a different Map, the map itself is an asset, and it might get buggy too. I remember once I have to Save the map with a different name and remove the old one (it was in Unity not Unreal, but still weird and not related to the logic of the game).

            Don’t forget tor ate the tool at the Marketplace if you’ve time 馃檪


  15. How do I save a screenshot of the current screen to use as a gamesave slot icon?
    I want to load this image in pause menu during game and outside of game on main menu.

    Like Fallout’s save system.

  16. How do I save and load a screenshot of the current screen for a gamesave slot icon?
    I want to load this image in pause menu during game and outside of game on main menu.

    Like Fallout’s save system.

Leave a Reply

Your email address will not be published. Required fields are marked *