Introduction
This package includes everything to help you manage your game or app data with lots of useful features, let's take a quick look at features:
- Cross platform
- Unified API
- Storage features such as Backup, Meta data, catalog, ...
- Full-featured JSON Serialization
- Security with encryption
- Third-party integrations such as PlayMaker, Firebase, PlayFab, Steam Cloud API, Google Play, ...
Check out the Demos to see the features in action.
Get started with the Save System or read more below to learn more about the Save System.
Requirements
- Unity 2018.4+ or higher
- .NET Standard 2.0 or .NET 4.x or higher
Cross Platform
The package is tested with IL2CPP and Mono, and also is tested on Standalone, Mobile, WebGL and UWP, but it would work on all other platforms that Unity supports, just maybe some platforms doesn't support File operations or may have a limited file access, so you might need to adjust the settings to make it work with your own requirements, also you can use Cloud storage on platforms which don't have a file storage.
Unified API
SaveSystemAPI class provides static methods for saving, loading, deleting, ... storage items and data which also allows you to use custom settings. Using these methods you can manage data on a specific storage:
- Save
- Load
- LoadInto
- Exists
- Delete
- Move
- Copy
- List
- ListAll
- Clear
- SaveCatalog
- LoadCatalog
- HasMetaData
- SaveMetaData
- LoadMetaData
- WriteAllText
- WriteAllBytes
- ReadAllText
- RealAllBytes
- SaveImagePNG
- SaveImageJPG
- SaveImageEXR
- SaveImageTGA
- LoadImage
- CreateBackup
- GetLatestBackup
- GetBackups
- RestoreLatestBackup
- RestoreBackup
- DeleteBackup
- DeleteBackups
Storages
There are different types of storages built-in already, such as:
- File Storage: This is the traditional file storage implementation
- PlayerPrefs Storage: This is the Unity PlayerPrefs storage which is mostly uesd for saving game config and works on all platforms that unity supports
- Memory Storage: This is the Memory storage which is mostly uesd for saving game data and uploading to an online service using its text data for other purposes
And some Third-party storages such as:
- Google Play Games Saved Game: This uses the Google Play Games Saved Game feature for saving and loading data
- Xbox Live Connected Storage: This uses the Xbox Live Connected Storage feature for saving and loading data
- Firebase Realtime Database Storage: This uses the Firebase Realtime Database service for saving and loading data
- Firebase Cloud Storage: This uses the Firebase Storage service for saving and loading the files through uploading files
- Firebase Firestore Storage: This uses the Firebase Firestore service for saving and loading data
- PlayFab Entity Objects Storage: This uses the new PlayFab entity objects storage for storing the data
- PlayFab User Data Storage: This uses the PlayFab UserData API for storing the data
- Steamworks .NET Storage: This uses the new Steamworks .NET and Steam Cloud API for storing the data
- Facepunch Steamworks Storage: This uses the new Facepunch Steamworks and Steam Cloud API for storing the data
You can also easily implement your own Storage by extending the StorageBase
class.
There are Storage factories included for instanitating different kind of storages using a connection string, this enables modularity of storages for the developer and user, you can also create your own storage factory.
Each storage can be initialized using a connection string, or through the programming interface with a new
keyword, but here we prefer to use connection string for simplicity of use and flexibility, so the below is an example of initializing the LocalDiskStorage using a connection string:
disk://path={0}
Serialization
This uses Bayat.Json as the underlying serialization library that is a modified version of Newtonsoft Json.Net, that means it includes all the great features from that popular library also including a few new features and capabilities, plus a few adjustments to make it more functional with saving and loading data.
This allows you to serialize all kinds of data, from Unity objects to C# objects, Check out Supported Data Types for more information:
- Unity objects (GameObject, Materials, Component, MonoBehaviour, ...)
- C# objects (Unity C# objects such as Vector3, Vector2 and so on or custom objects or any c# built-in object ...)
Security
Symmetric encryption algortihms are implemented in this package and AES is the built-in and default encryption option whcih allows you to secure your data from cheating and further modifications by user, but you can also implement your own encryption as always.
Final Notes
As always you can modify every part of this package to your desire and requirements, it already includes the flexiblity for implementing yuor own Storage and Encryption Algorithm, but you can modify everything or add your own things on top of it to make most out of it.
Keep reading the documentation for more information and exciting stuff!