Initialise Unity Gaming Services and authenticate the player via Unity Authentication (anonymous or platform sign-in)
On session start, call CloudSaveService.Instance.Data.Player.LoadAsync with the relevant save keys to fetch the latest server-side values
Compare the server-side save timestamp or version field (stored as a custom field in the save payload) against the local cached value
If the server version is newer, overwrite local state; if local is newer (e.g. after offline play), call CloudSaveService.Instance.Data.Player.SaveAsync to push local data before proceeding
For true conflicts (both modified since last sync), present a player-facing UI to choose which version to keep, then save the chosen version back to the cloud
Known gotchas
Unity Cloud Save does not provide built-in last-write-wins conflict resolution; you must implement version tracking within the save payload itself using a timestamp or monotonic counter
SaveAsync overwrites the entire key value with no server-side merge; partial updates require reading, merging in memory, and writing the full value back — this introduces a read-modify-write race condition under concurrent sessions
Cloud Save keys are limited in size; store large binary blobs (e.g. screenshots, replay data) in a separate storage service and keep only lightweight progress data in Cloud Save
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