Enable Steam Cloud for your app in the Steamworks partner portal and set per-user and per-machine storage quotas
Write save data using ISteamRemoteStorage::FileWrite and read it with FileRead; files are keyed by string filename and scoped to the authenticated Steam user
On game launch, compare local file modification timestamps against cloud versions using ISteamRemoteStorage::GetFileTimestamp; if they differ, present the player with a choice to use the local or cloud version
Use ISteamRemoteStorage::FileForget to remove a file from the local cache without deleting the cloud copy, and FileDelete to remove from both
Implement an auto-sync policy (e.g. always upload on save, always download on launch) or a manual merge flow for games with complex save structures
Known gotchas
Steam may show its own sync conflict dialog before the game launches if it detects a conflict; your in-game conflict resolution UI must handle cases where Steam has already resolved it — check file timestamps at startup even if you think Steam handled it
ISteamRemoteStorage has per-app storage quotas that vary; exceeding the quota causes FileWrite to fail silently in some SDK versions — check the return value and handle quota-full errors gracefully
Large binary save files slow down cloud sync on slow connections; consider compressing saves and storing only diffs for games with frequent saves
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp