Cloud Save
Steam Remote Storage
Introduction
Reading over Valve's official documentation on its features is always a wise first step.
Steam Cloud (Steamworks Documentation)
Quote from Valve's documentation ...
The Steam Cloud provides an easy and transparent remote file storage system for your game. Files specified in the Auto-Cloud configuration or written to disk (created, modified, deleted, etc.) using the Cloud API will automatically be replicated to the Steam servers after the game exits.
If the user changes computers, the files are automatically downloaded to the new computer prior to the game launching. The game can then access the files by reading them through the Cloud API or reading them directly from disk as usual. Avoid machine specific configurations such as video settings.
The Steam Client does the work of ensuring that the files are kept synchronized across all computers the user may be accessing.
Users can globally disable Cloud synchronization in the Steam Settings under Cloud by unchecking "Enable Steam Cloud synchronization for applications which support it."
Remote Storage API
You can use the Remote Storage API to access Steam's remote storage features.
It is important that you check and insure that the user has enabled cloud storage and that the user has sufficient storage space remaining when writing new files to the system.
Is the system enabled?
If the IsEnabled field is false it could be for one of two reasons.
Storage Space
To check the user's storage space
List Files
GetFiles returns a list of all files found on Steam and returns an array of RemoteStorageFile objects. The RemoteStorageFile object can be thought of similar to the .NET FileInfo object and contains data about the file that can be used to perform other actions.
You can optionally return files that have a specific extension such as ".profile"
Read Files
The RemoteStorageFile object returned by the GetFiles methods can be used to read the data of files as a byte[], string or to cast the data to any serializable data type.
Assuming a serializable data type MyDataType
Assuming a file RemoteStorageFile named dataFile:
Write Files
You can write a file to the remote storage system using the following methods