Does Steam provide persistent data storage (for custom data) to developers? For example, would an online shooter be able to store player statistics (kills, matches, player deaths, etc.) on Steam servers?
2 Answers
You could save all the data both locally on your player's computer, and sync it automatically to Steam Cloud, which indeed allows you to store stats/user preferences/progress/etc.. online.
header: ISteamRemoteStorage.h
Game settings, savegames, and other user-specific bits can be replicated to the Steam Cloud to provide the player with a continuous and hassle-free experience.
EDIT : You can also write/read everything directly into the servers. If you are worried about users tampering with data.
The Cloud functions all live in ISteamRemoteStorage.h. It is essentially a very simple filesystem API - your game reads and writes files directly to the API.
Aside from reads and writes, a few functions are provided to provide visibility into the files already in the Cloud "folder", and to query the amount of quota remaining.
-
\$\begingroup\$ Is there an authoritative way of storing data? \$\endgroup\$– user30331Commented May 18, 2015 at 11:12
-
\$\begingroup\$ @Ben do you mean alternative to steam cloud api? \$\endgroup\$– RaxvanCommented May 18, 2015 at 11:49
-
\$\begingroup\$ The API automatically syncs any files you need to use in order to keep the data. "Authoritative" depends on the code you used in your offline game. You can store data in an encrypted way to prevent modifications from user, plus the user can only modify the offline data, you might as well not use anything on the player's computer at all, and use the files online. Anyways, instead of me listing out what you can/can't do, you can just read the Steam API doc about Cloud storage. EVERYTHING is detailed to the last scrap of code. partner.steamgames.com/documentation/cloud You just need to login. \$\endgroup\$– ZeeCommented May 18, 2015 at 12:16
For statistics you can use ISteamUserStats, which is a part of the Steamworks offering.
This interface allows you to define (from the Steamworks developer site) a set of tracked statistics with various properties, and can even auto-grant Steam achievements based on the stat values.
The interface supports multiple types of numerical data (integer, floating point, and moving average), access control (only allow trusted game servers to report changes), limits (both absolute and per-update), and automatic global aggregates.
Documentation can be found here: https://partner.steamgames.com/documentation/ugs
(Requires signing up for Steamworks, but doesn't require affiliation to read.)
ISteamUserStats statistics are stored to the Steam backend immediately, rather than requiring synchronization and conflict management, and do not have a fixed quota. Leaderboards can also be automatically built by Steam from the data.
ISteamRemoteStorage is designed for saving user files, such as game saves and configuration information, rather than statistical tracking.