Storages
There are different types of storages for different situations and use cases, Save System supports both Local and Online storage types, so you can easily manage your data across different platforms with different storage types using an Unified API.
Built-in Storages
The package includes built-in storages for most common use cases that enables you to get a boost in your productivity:
Third-party Storages
There are official integrations available for third-party storage providers such as cloud services and game backends, check each integration or storage page to download the package:
- Xbox Live Connected Storage
- Google Play Games Saved Game
- Firebase Realtime Database
- Firebase Cloud Storage
- Firebase Cloud Firestore
- PlayFab UserData
- PlayFab Entity Objects
- Steamworks .NET
- Facepunch Steamworks
Custom Storage
You can easily create your own custom storage by extending the StorageBase
class and implementing the methods.
Backup
Storage API allows you to backup your data by duplicating it in most cases (it depends on the storage implementation), then it uses the Meta Data API to add the backup to the list of the backups in the item meta data, so when you use SaveSystemAPI.GetBackups
or SaveSystemAPI.RestoreLatestBackup
it detects the backups through there.
So it means by disabling the Meta Data API, you wouldn't be able to use Backups. (by the way it depends on the storage implementation, but in most cases it wouldn't work)
Meta Data
The Meta Data API allows you to store additional meta information about the storage item, such as Last Access Time, Last Modification Time, Is Encrypted and ... So, it would allow you to add your own custom data to it, or use the existing information.
Catalog
The Catalog storage item allows the storage to keep a list of items in the storage so you wouldn't have to use Query methods to loop through files or keys in a database to find out which files or entries are saved using Save System, also it just saves the identifier in the list, not the full path or modified identifier, so it would let you get most out of the identifier value by converting it to whatever you want.
Also, it lets you to keep a list of active saved items in the storage too, for like displaying saved slots.
Connection String
The connection string allows to create a new storage instance using an URL-like syntax string.
<Storage Protocol>://<Parameter Name>=<Paramter Value>; <Parameters ...>
The storage protocol is actually the storage identifier, such as disk
or playerprefs
or any other storages available.
So for example if you want to initialize the LocalDiskStorage
, you can do it like this:
disk://path={0}
Also, you can use pre-defined variables inside the connection string which are identified using numbers, the below shows the list of available pre-defined variable numbers you can use:
- {0} = Application.persistentDataPath
- {1} = Application.dataPath
- {2} = Application.streamingAssetsPath
- {3} = Application.temporaryCachePath
- {4} = Application.absoluteURL
- {5} = Application.buildGUID
- {6} = Application.companyName
- {7} = Application.productName
- {8} = Application.identifier
- {9} = Application.version
- {10} = Application.unityVersion
You can find more information about built-in storages connection string:
Or third-party integrations: