Search Unity

Easy Save - The Complete Save Data & Serialization Asset

Discussion in 'Assets and Asset Store' started by JoelAtMoodkie, May 28, 2011.

  1. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Easy Save
    The Complete Save Data & Serialization System for Unity

    Contact Us | Home | Guides | Docs | Forum | Asset Store

    Available from the Unity Asset Store
    Click here to Buy

    Easy Save makes saving and loading data simple by combining serialization and storage into one neat package. Serialize just about anything and store it to file with ease.
    ░░░░░░░░░░░░░░░░░░░░░░░░░░

    Why use Easy Save?

    For Amateurs...
    It's easy to use and well documented

    For Experts...
    It's fast, feature-rich and extremely flexible

    ★ On the Asset Store since 2011 ★

    ░░░░░░░░░░░░░░░░░░░░░░░░░░░


    Compatible with
    PC, Mac, Linux, Windows Universal, iOS, tvOS, Android, Steam, WebGL
    PlayMaker, Bolt


    Fast and lightweight serialization
    Using a JSON serializer designed for Unity

    Fully documented
    Guides | Examples & Tutorials | API Reference


    PlayMaker and Bolt visual scripting support
    Save and Load using PlayMaker Actions
    Access Easy Save from Bolt graphs

    5-star customer support
    via Email and Dedicated Forum

    Secure save data with encryption
    Encrypt Save Data

    Compact files with compression
    Makes files 85% smaller on average

    Save & load from web
    Upload to cloud database using PHP & MySQL

    Cross-platform save data
    Use Save Files & Code on All Supported Platforms

    Save almost any type
    Even serialization of references

    Save and load spreadsheet
    In CSV format for Excel

    File IO
    Save strings/bytes as files

    Much more flexible than PlayerPrefs
    But just as simple to use

    How do I use Easy Save?
    See the Getting Started guide


    ░░░░░░░░░░░░░░░░░░░░░░░░░░░



    *PlayMaker and Bolt are purchased separately
     
    Last edited: Jul 3, 2023
    Automatanism and 600 like this.
  2. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    If anyone has any questions about Easy Save then please feel free to ask them here or using the form on the website and I'll get back to you as soon as possible.

    A fair number of you have bought it but I've not received any questions, so I can only assume that it's working great for all!
     
  3. sebako

    sebako

    Joined:
    Jun 27, 2009
    Posts:
    301
    where does it save data when using webplayer? Playerprefs?
     
  4. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Hi zemog86,

    We actually pulled the Web Player save functionality yesterday because we felt it needed a bit of work. However, the original implementation did indeed save to PlayerPrefs. My greatest apologies for the inconvenience!

    If you have already purchased Easy Save for the Web Player functionality and would like a refund, please send me a PM and I'll arrange it ASAP. When Web Player support is up and running again I'll let you know.

    Edit: We will be adding the ability to upload to server (and download from server) soon, which could be used to save data in the Web Player. We've used this method in our app SculptPad, and also has the advantage of being able to use the same save file on all platforms.
     
    Last edited: Jun 6, 2011
  5. Rush-Rage-Games

    Rush-Rage-Games

    Joined:
    Sep 9, 2010
    Posts:
    1,997
  6. konkol

    konkol

    Joined:
    Apr 6, 2011
    Posts:
    33
    Using Application.persistentDataPath is terrible idea. It is hidden folder under Windows. Using playerprefs is even worse - it is Windows Register. There should be variable like public string saveFolder = "SaveGame" initialized automaticly according to current OS.
     
  7. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    $40 at the moment, which is the price which Unity suggested that we put it up at.
    We're working on a solution for this, and this is indeed the reason that we've removed all PlayerPrefs support. We would hope that in the near future Unity themselves would implement an actual persistent data folder.
     
  8. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    A quick update.

    We're including the variables 'public static windowsDataPath' and 'public static osxDataPath' which will allow you to set a custom data path for Windows and OSX. If left blank, it will default back to the Application.persistentDataPath. Because mobile devices are more security conscious, we've not included the option for iOS or Android.

    With any luck we should have the update out in the next 48 hours, which will also include functions which allow you to load a JPG or a PNG from the web into a texture.

    Thanks for the support everyone, and please do keep the feedback coming!

    Edit: The update has been submitted to Unity, so I'm just waiting for them to upload it to the Asset Store.
     
    Last edited: Jun 7, 2011
  9. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    This script/tool is a Great purchase! Very very useful, and well crafted.

    Thanks for the addition of the custom data path support.

    Are there any plans to add support for encrypting/decrypting the save files easy save creates.
    Are there any plans on creating a tool to send the save files Easy Save creates to a server via PHP?
     
  10. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Thanks for the praise, zhx. It really does mean a lot to us to get some feedback.

    You're not the first person to ask about encryption, so we've put it on our list of things to add in the near future, possibly even in the next release.

    As for sending save files to a server using PHP, that's definitely coming in the next update. We've actually already implemented it in our game 'SculptPad' for iOS, but we're in the process of making it more user-friendly. This will also mean that you can use the Web Player to then load files you've saved using iOS/PC/Mac etc.

    If anyone else has any suggestions for what they would like to see in the next release, then please do let us know.
     
  11. spinaljack

    spinaljack

    Joined:
    Mar 18, 2010
    Posts:
    992
    How about a file integrity check to prevent tampering
     
  12. 2dfxman

    2dfxman

    Joined:
    Oct 1, 2010
    Posts:
    178
    Are there any videos or something?
     
  13. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    That's a great idea, and shouldn't be too difficult to implement. It will most likely comprise of an MD5 hash with a password.
    There's full documentation HERE, and there are examples and unit tests provided with the asset. We don't feel that a video is really necessary because it's so simple to use.
     
  14. 2dfxman

    2dfxman

    Joined:
    Oct 1, 2010
    Posts:
    178
    I am not having usage problems, I want to see how it works and what it does before I even bother buying it.
     
  15. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    The documentation outlines what it does and how it works. If you wanted to save an array of Vector3, you would call:
    EasySave.save(myArrayOfVector3, "myFileName.file");

    And then to load it up again you could call:
    Vector3[] newArray = EasySave.load("myFileName.file");

    That's how it works, and what it does is save the specified data types. More info can be found on the Asset Store Page which I linked in the original post.
     
  16. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    What does this give you beyond normal binary serialization? I'm assuming there is more to it beyond just dumping the object to a file.
     
  17. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Primarily Easy Save is to save you the hassle of writing your own save/load functions, and also to simplify the process for people with less programming knowhow, in a package which has been well tested and is compatible with most platforms. It uses System.IO functions because they're fast and reliable; there's no point overcomplicating things.

    What makes it more than just 'normal binary serialization' are the features that we're constantly adding. A read of the posts above will give a taste of what's to come. The best way to think of assets (or any middleware for that matter) is 'How much time is it going to save me in the long run?'. At $40, even if we weren't developing it any further, it would still pay for itself in time saved alone.
     
  18. MaliceA4Thought

    MaliceA4Thought

    Joined:
    Feb 25, 2011
    Posts:
    406
    Okay, these statements sold me :) You will see a purchase from me when I get home tonight.

    Anything to assist the passing of data to an online database and retrieving it again, especially with encryption and the ability to do it field by field is going to save me so many hours of building that I can devote to other things.

    Thanks

    Regards

    Graham
     
  19. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Hiya Graham,

    We're working on getting that functionality out sometime next week, so we won't keep you waiting too long :)
     
  20. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    WHOA, did I just hear you properly? PHP support in the next update. IMPRESSIVE, one of the best Asset Store purchases we've made yet, hands down! Great support, awesome updates, and a big time-saver. 5 star rating made in the Asset Store!

    As soon as you get encryption, on top of a PHP means of transferring saves/saved-data, this is going to be a powerhouse of a toolset. Thank you VERY much for your continued support and development of this tool. I cant wait to use easy-save for leaderboards soon too.

    a few more questions:
    Do you have a target version of PHP you're targeting? 4,5, etc?

    This might seem VERY off topic: are there any plans on adding support for the encoding of entire (C#)scripts and/or gameobject, thus sending entire files, to and from a server via php? For example, sending a gameobject, with colliders, and scripts, by passing itself to an Easy Save call? This would allow for the ability to send immediate updates to bugs, without a full app update(executed in mid-gameplay, so useful), but also opening the doors to some serious delegate trickery, potentially ;-). I find myself having to do a lot of parsing and tweaking to add more than 1 variable to a file, for easy reading.
    Perhaps most importantly though, this could allow for a developer to create(and share) virtual "prefabs"(complete with scripts, colliders, etc) that can be saved online or offline, and recalled(at any time) similar to a save-state for a gameObject; which would be GREAT in sooooo many ways, for soooo many things. I'm sure this isn't any small task, but just wondering.
     
    Last edited: Jun 10, 2011
  21. MaliceA4Thought

    MaliceA4Thought

    Joined:
    Feb 25, 2011
    Posts:
    406
    OK bought:)) Really looking forward to all that spare time I will have.. Not! :)

    Regards

    Graham
     
  22. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    The new version of Easy Save with custom directories has been approved and should now be up on the store.

    @Graham: Thanks for the purchase! If you have any questions or suggestions then please don't hesitate to ask.

    @zhx: Unfortunately it's not possible to save C# scripts, because they would have to be compiled at runtime. If you look at how Unity handles AssetBundles at runtime, it's possible to load attributes of an object but the specified script must already exist in the Unity binary.

    The closest thing that is possible to what you have described is loading Game Objects by name from the Resources folder. Easy Save actually comes with an example of how to do this (named 'ResourcesFolderExample' in the Examples folder).

    Also lets say you had a role-playing game, and you wanted it so that the user could download new characters from the Internet (possibly in conjunction with In-App purchasing, if such a thing is possible in Unity yet). You could contact the database (where you've saved the meshes, textures and attributes) by POST-ing the PHP script, which would return the characters that the user doesn't already have; you would save these to a folder on the device. Whenever the user opens up the Character screen, for each character in the folder you saved to before, you would instantiate a new GameObject, apply the mesh and texture to it, and then use AddComponent to add a Character script (which was already compiled in your binary) and apply the necessary downloaded attributes to the Character script.

    This way, you could download new elements for your game without having to download a new script. We'll provide the relevant functions for you to be able to implement something like that, and you tailor them to your needs.

    And finally, we'll most likely be targeting PHP4 MySQL because most providers that I'm aware of still use them as default on their servers. The idea behind this is that if you have the knowledge to install PHP5 on your server, you'll have no problem adapting the PHP scripts we provide to be compatible with PHP5. Most of the difficult work is done at the Unity end, so the PHP script itself will not need to be very complex at all ... it'll basically be your standard 'Communicate with database via POST' script.
     
  23. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    If any of you get a chance, and you're happy with Easy Save, please could you write a short user review on the Asset Store. Hopefully then we'll get more people buying it, and the more people who buy it, the more time we can spend on adding new features.

    The encryption feature is pretty much done; we're just testing it now. It uses Rijndael/AES encryption so it's relatively quick and very secure. We'll probably release it before we release our PHP implementation, because we really don't want to rush the PHP stuff. If done well, it really will be an amazing feature, and we hope to make it simple for even novice users.

    Thanks,
    Joel
     
  24. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    Review written and submitted! Looking forward to the encryption and PHP support. Thank you for the verbose and spot on replies, great support!
     
  25. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Thanks zhx, and you'll be happy to know that the encryption is now fully working. I've come in to work on a Saturday to see if I can also add the option to sacrifice a bit of encryption security for speed, which will make the mobile devices a bit happier.
     
  26. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    @joeltebbett, thank you VERY much for taking the time to refine Easy Save, all the while, keeping mobile in mind(our team's main Unity development target).

    P.S. Sculpt pad looks cool, nice work on such an imaginative and freeform app!
     
  27. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    <blatant advertising> SculptPad HD for iPad should be out by the end of the week, if you have an iPad. Twice as much sculpting/painting detail, and generally much nicer to use :) </blatant advertising>

    Before then, however, the new version of Easy Save should be released, with encryption and the ability to POST a file to a PHP script on the web. It's all working, we're just working on the documentation now.

    Also I'd like to send a quick thanks out to Unity Community member 'showoff' for testing Easy Save for us on Android Pro. His site is www.andresmaximumcgi.com. Check it out when you get a chance.
     
  28. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Easy Save 1.3 has been submitted to Unity, with the encryption and PHP functionality. Expect it to be up on the Asset Store in the next couple of days.
     
  29. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    ! cant wait
     
  30. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    Does the php support in 1.3 support the adding of multiple pieces(and thus types int/float/mesh/etc) of data, separately into a chosen cell within a "row" in a database? This would allow us to save, say a row in the database that included a string for the player's name, an int for their experience level, and a mesh for their custom/sculpted mesh? Then be able to recall that data from the entire row at once.
    Hope I made sense there.

    Also, I noticed that Encryption is an all-or-nothing parameter. We'd rather only encrypt specific data, like passwords, and not usernames, player levels, etc; even if its a single postProcess operation before uploading to the server via pho. I hope you consider adding in the ability to selectively encrypt specific files, before a php/sql upload.

    edit: looks like things just got very quiet on the thread... crickets ;-)

    edit#2: ?
     
    Last edited: Jun 21, 2011
  31. Antony-Blackett

    Antony-Blackett

    Joined:
    Feb 15, 2011
    Posts:
    1,778
    Hey joeltebbett,

    I'm having some trouble with encryption on iPhone. I get a EXC_BAD_ACCESS exception somewhere inside the system encryption. Is this a known issue or does it work fine in your test builds?

    I also noticed that I get Unity build error when I use the the stripping option 'Use micro mscorelib' when building for iOS.

    Is this a known issue?
     
    Last edited: Jul 5, 2011
  32. angel_m

    angel_m

    Joined:
    Nov 4, 2005
    Posts:
    1,160
    I 'm interested in using Easy Save and I have some questions:
    I only need to save the player position (Vector 3) and several status variables for the player and the game,(integer and boolean) all of them static vars. I use javascript and I don´t use arrays. Is it possible to save (and load) all data from the same unique file? Could you put an example please?
     
  33. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    I can't apologise enough zhx! For some reason the forum didn't email me about your message even though I'm subscribed to this thread.

    At the moment the PHP functionality only allows you to upload one file per row. This way you could have one table for players name and another table for their experience level. I know this isn't the most efficient way of doing it, but if we did it otherwise then it would no longer be Easy Save.

    As for the encryption, you can encrypt specific files. Set 'encryptionOn' to true when loading/saving, and turn it off when loading/saving anything that doesn't want to be encrypted. I know this is an unusual way of doing it, but again due to making it easy for low-level users we wanted to avoid having functions with a massive number of parameters.

    As for doing it before a PHP upload, we'll be adding this option in the future. I've got a meeting later about where we're going with Easy Save, and I'll let you know what conclusions we come to. However, it's looking likely there might be an overhauled version which warrants being called Easy Save 2.0, which would of course be free for people who have already purchased Easy Save. The main reason for the overhaul would be to allow more customisation (custom file-structures etc etc), which would require a new filetype which wouldn't be compatible with Easy Save 1.x.

    Again, thanks for waiting so long for this reply.
     
  34. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Hiya Antony,

    This is the first time we've heard of this problem, but I've had a quick Google and it looks like System.Security.SecurityException (which is used for encryption and by the PHP function to calculate md5 hashs) doesn't work when 'Use micro mscorelib' is enabled.

    Try decreasing to 'strip bytecode' and see if that fixes the problem. If not, send me any error logs and any other info you can provide at moodkie.com/contact and I'll see if I can get to the bottom of this.

    All the best,
    Joel
     
    Last edited: Jun 1, 2017
  35. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Hello angel_m,

    Easy Save works with Javascript (you have to put it in the plugins folder, but this is explained in the readme). It's not currently possible to save them to the same file. The reason we haven't made this possible yet is due to ease of use.

    However, if you let me know what data you need to save then I can make you some custom functions which integrate with Easy Save which will allow you to do this (free-of-charge). This also applies to anyone else who wants custom file types. Email me at moodkie.com/contact if you're interested.
     
    Last edited: Jun 1, 2017
  36. angel_m

    angel_m

    Joined:
    Nov 4, 2005
    Posts:
    1,160
    Thanks for the response.
    So, do I need a different ".txt" file for each variable type I want to save?
     
  37. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Basically, yes.

    You don't have to use '.txt', you can use whatever file extension you want. You can also make folders using Easy Save, so you could make a folder for each set of save files to keep them separate.
     
  38. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    are you talking about writing/including custom serialization options for users of Easy Save, ala Ulib?
     
  39. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    In a future release, the user will be able to define their own file formats with no coding knowledge. However, it will be done in a way which is far more efficient than ULib, which last time I checked required a bloaty .NET library to support its method of serialization.

    For the time being, I'm happy to write custom file formats for people free-of-charge as long as it uses data types already supported by Easy Save.

    It's busy around this time of year (hence why I'm still at work at 10pm BST), so we can't put a timescale on anything yet, but we're trying our best to fit Easy Save in. Thanks for your support!
     
  40. Antony-Blackett

    Antony-Blackett

    Joined:
    Feb 15, 2011
    Posts:
    1,778
    My last post obviously wasn't clear enough. I got the unity build building by changing the stripping level however the game crashes inside on system.encryption. I got it to work by turning off all stripping and leaving on exception but this is not acceptable. I cannot ship my game with those options on as it's to slow and the executable is to large.

    Is there another way to do encryption or do I need to get a refund? A simple file crc to check for tampering would do the job.
     
  41. Rafes

    Rafes

    Joined:
    Jun 2, 2011
    Posts:
    764
    Hi Joeltebbett,

    Looks interesting. We will be sure to check it out!

    I also wanted to let you know there is a product called EZ Game Saver which attacks the same problem your Easy Save does. I only bring it up because it is copyrighted and the title of your application may cause confusion in the marketplace, which is, I believe, one of the primary definitions of copyright infringement.

    I'm not involved in either product and I only post this for clarity's sake, for the community, and so no one gets hurt.

    Best wishes and congrats on the release!
     
  42. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    I'm afraid I cannot find a solution for you because Unity explicitly state in their documentation that System.Security will not work with 'Use micro mscorlib'. All non-Mono classes will not work, so most of the plugins on the Asset Store will not work. This is not a limitation of our software but a limitation of Unity. You can get in contact with Unity and ask for a refund, or get in touch with Caitlyn.
     
    Last edited: Jul 6, 2011
  43. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Thanks for the heads-up Rafes. Nice to know you're all looking out for us!

    It's actually a trademarking issue, and not a copyright issue. In the EU and US the terms 'EZ Game Saver' and 'Easy Save' wouldn't qualify as trademarks for a number of reasons, so there's no problem there.
     
  44. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    @joeltebbett
    Thank you for the updates, would you consider writing a wrapper/format(serializer) for meshes, or something more complex, like gameObjects/monoscripts/etc, as some similar packages support? We greatly enjoy using Easy Save for what we see as its strengths, and this area could soon too be such a strength imo. Easy Save has been very useful thus far, your work to update the package, and answer support emails is appreciated! :)
     
  45. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    Hi again zhx,

    Easy Save already supports saving meshes. Also we opted to not go for the ability to fully-serialise monoscripts because although very cool, this does make your executable much larger. As we want Easy Save to work as well on mobile as it does on PC, this was not an option.

    We're still in discussion about the future of Easy Save, and we would love to carry on developing it. However, commercially speaking it's a more complicated matter.
     
  46. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    Thank you for taking the time to reply to the questions posted on this thread, and for your continued work to polish EasySave. :)
     
  47. JoelAtMoodkie

    JoelAtMoodkie

    Joined:
    Oct 18, 2009
    Posts:
    914
    We've dropped the price from $40 to $25 USD for a limited time only.

    As a gesture of goodwill to our early adopters, anyone who bought Easy Save before 08/07/2011 will be entitled to a free copy of Easy Save 2, if or when we do go ahead with it.

    Thanks,
    Joel
     
  48. john-essy

    john-essy

    Joined:
    Apr 17, 2011
    Posts:
    464
    @ZHX is it just me or does your site have eye trickery. As i was looking at the logo and it looked like it was getting darker then i realised it wasn't? or infact is it?

    Anyways COOOOOOOL
     
  49. 3Duaun

    3Duaun

    Joined:
    Dec 29, 2009
    Posts:
    600
    @johnessy theres a little somethin somethin ;-). We rotate out teaser images with the studio logo random stuff on occasion. That is, until the alpha stage is done with our studio's first title(this fall) ;-)
     
  50. mbaucco

    mbaucco

    Joined:
    Feb 22, 2008
    Posts:
    21
    I just wanted to say that I have been very pleased by how quick and professional the support on EasySave has been! It has certain saved me hours of time. :)

    I do have one question though, now that I think about it. Is there a way to specify a path alias as the default directory? That way you could store a save game folder in a user's documents folder, for instance.

    Keep up the great work!
    -Matt