In the Unity Dashboard, link your project to Unity Gaming Services and enable the Cloud Save service for the target environment (Development or Production).
Add the com.unity.services.cloudsave package to your Unity project via Package Manager.
Initialize UGS at runtime with await UnityServices.InitializeAsync() and sign in using Unity Authentication (e.g., await AuthenticationService.Instance.SignInAnonymouslyAsync()) before making Cloud Save calls.
Write player data with await CloudSaveService.Instance.Data.Player.SaveAsync(new Dictionary<string, object> { { "key", value } }) — values are serialized to JSON automatically.
Read data with var results = await CloudSaveService.Instance.Data.Player.LoadAsync(new HashSet<string> { "key" }) and deserialize with results["key"].Value.GetAs<YourType>().
To store public data readable by other players, use CloudSaveService.Instance.Data.Player.SaveAsync on the Public data endpoint; default data is private to the owning player.
Known gotchas
Cloud Save keys are per-player and per-environment; data written in Development is not accessible in Production — run end-to-end tests in the correct environment before launch.
Individual item size and total storage per player have limits defined by Unity; storing large blobs (e.g., full level maps) will hit these limits — store references or compressed data and keep large assets in object storage.
All Cloud Save operations require an authenticated player session; calling save/load before authentication completes throws an exception — always await sign-in before accessing game data.
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