Partner Center configurations
Enabling XBOX services and Game Saves for your title
To use the Game Saves APIs, complete the following steps in Partner Center.- Enable XBOX services.
- Sign in to Partner Center.
- Go to your title, then enable XBOX services in the settings. For more information about this step, see Setting up an app or game at Partner Center, for Managed Partners.
- Get your service configuration identifier (SCID). All read and write operations must be associated with a SCID. The SCID is also used for Game Saves initialization.
- In Partner Center, find the SCID under the XBOX services > XBOX settings tab for your title. You can also find your Microsoft account (MSA) App ID (MSAAppID) on this page.

- In Partner Center, find the SCID under the XBOX services > XBOX settings tab for your title. You can also find your Microsoft account (MSA) App ID (MSAAppID) on this page.
Development scenarios
Where do I integrate Game Saves in my code?
Game Saves logic depends on user sign-in. Add the Game Saves code next to the user sign-in flow.How do I ensure that my game saves data doesn’t become corrupted?
To save data safely and avoid corruption, follow these steps. This guidance applies to all save operations.- Write to a temporary file.
- Serialize your save data into a new file (for example,
save.tmp) rather than overwriting the live save. This step protects the existing save in case your process is interrupted mid-write.
- Serialize your save data into a new file (for example,
- Close the write handle after the write is fully committed to disk.
- Replace the old save file atomically with the new temporary file by using the Win32 ReplaceFile.
How do I support offline devices?
You’re responsible for determining how the title behaves if there’s connection loss both before and after initializing Game Saves. For more information about offline behavior, see Understanding the Game Saves sync flow.What user interactions do I need to be aware of?
The OS shows system prompts when an action requires user input. For information about these prompts, see Game Saves dialogs.Is there a way to save locally and to the device only?
If you pass anull user handle to the Game Save initialization process, the system creates a machine-only provider. Data is stored locally and persists on the device, with a maximum limit of 256 MB. The data doesn’t sync to the cloud.
For more information about Game Saves storage, see Game Saves storage systems.
Managing game saves through the device
Accessing local game saves on PC by using File Explorer
If your title runs on PC, you have direct access to the files. Depending on the Game Saves API implementation, you can access your local game saves at the following locations.
When you manipulate data on PC, sync logic still applies. For example, modifying data when the title doesn’t have a lock causes conflicts.
Accessing local game saves on console
Manage the console save data via the XBOX UI. Access it by using the following steps.- Select the Home button on the XBOX controller.
- Select My games & apps > See all.
- Hover over your game, and then select the View button.
- Select Saved data.

- Deleting data on the console by using the system UI doesn’t remove the copy stored in the cloud. When you launch the title again, it syncs the data from the cloud.
- Machine-provider data appears as a user with no name. This data stays on the device, doesn’t sync to the cloud, and is bound to the device.
Testing scenarios
When you create test cases, separate data validation from the game‑save logic.Test if game saves sync correctly to and from the cloud
Use the following steps to test for correct syncing. The test flows verify the behavior.XGameSaveFiles:
- Confirm that the SCID is correct.
- Confirm that you’re using the correct user handle.
- Confirm that the title calls
XGameSaveFilesGetFolderWithUIAsyncduring the current game session. If the title resumes from a suspend state, call the function.- Use Fiddler to confirm the lock was acquired.
- Save this path and use it later to confirm that the data is uploading.
- Write some data to the file path provided by
XGameSaveFilesGetFolderWithUIAsync. - Terminate or suspend the title.
- Wait 10–30 seconds for the OS to automatically upload the data to the cloud and release the lock.
- Confirm that the data was uploaded and the lock was released by using Fiddler.
- Manually delete the data in the folder provided by
XGameSaveFilesGetFolderWithUIAsync.- On console, access this data through player settings.
- Launch the title again, and then attempt to sign the user in.
- A sync dialog appears, showing an active download sync from the cloud.
Test if game saves roam correctly
For a test plan to confirm if data roams, see XR-052-06 Test Plan.Migration scenarios
Sharing game saves across titles
To transfer or access data from one title to another, complete two steps.- Modify the access policies of the title you want to access in Partner Center.
- Initialize the Game Saves providers for both titles in source code.
Modify access policies
A title controls which titles have access to its game saves data by configuring access policies.- Go to Partner Center.
- Select Apps and games > <your title> > Gameplay settings.
- In Gameplay Settings, select Access Policies, and then expand Connected Storage.
- Select Add app/service, and then add the titles that you want to provide access to.
- When you finish adding the titles, select Save, and then select Publish. The changes take effect within an hour.

Initialize Game Save providers
Now that you have permission to access the first title, you can read theXGameSave data from the other title.
- If you’re using
XGameSave, callXGameSaveInitializeProviderorXGameSaveInitializeProviderAsyncfor each title. - If you’re using
XGameSaveFiles, the providers are implicitly initialized. CallXGameSaveFilesGetFolderWithUiAsyncfor each title.
Interop between XGameSave and XGameSaveFiles
A title might need to useXGameSave together with XGameSaveFiles. The typical reasons might be as follows:
- The publisher has an existing title on console that’s already using
XGameSave. - The publisher doesn’t want to update that existing title to use
XGameSaveFiles. - The publisher thinks that adding
XGameSaveFilesto a PC title is easier than usingXGameSave, but still wants to support cross-saves between PC, console, and XBOX game streaming.
XGameSave and XGameSaveFiles is fairly straightforward. When the title calls XGameSaveFilesGetFolderWithUiAsync, it maps containers and blobs to directories and files by using the following rules:
- Any forward slash (/) in the container name creates the directory structure in which the file resides.
- The following characters are invalid for
XGameSaveFiles. If the system encounters these characters, it maps them to an underscore (_):- Characters from \0 through \001f, inclusive.
- The following characters aren’t valid for
XGameSaveFiles. If the system encounters these characters, it maps them to a period (.):- Quotation marks (”)
- Less than sign (<)
- Greater than sign (>)
- Pipe (|)
- Asterisk (*)
- Question mark (?)
- Backslash (\)
- A slash (/) in the blob name maps to a period (.) in the file name.
- Files are limited to 16 MB.
XGameSavesupports a maximum upload size of 16 MB.
XGameSaveFiles back to XGameSave, it restores the original container and blob names if the file names remain unchanged or aren’t moved.
Porting previous titles to PC Game Saves with no-code cloud saves
Some titles that you port to PC Game Pass might require a no-code cloud save solution. This requirement can occur in the following scenarios:- The title runs as an x86 application. It uses the Microsoft Game Development Kit (GDK) only in its packaged form.
- The title is created without custom code, using tools such as Blueprint in Unreal Engine or Bolt in Unity.
- The title is terminated.
- The tracked user signs out.
- The PC power state changes.
- 30 minutes have passed since the title last wrote to the designated save area.
XGameSaveFiles and shares all its limitations with respect to file sizes and per-user storage limits. Files are limited to 64 MB (or 16 MB if there’s a need to have interoperation between XGameSave or Connected Storage). By default, the per-user storage is limited to 256 MB. Titles that need larger per-user storage limits can work with their Developer Partner Manager (DPM) to request an exception.
There are specific naming conventions and character limits for directories and file names. For more information, see XGameSaveFiles path logic.
No-code cloud saves require the title to be launched as a packaged build by using
wdapp install. Launching the .exe directly doesn’t activate cloud save redirection.When a packaged build runs, saves written through NoCodePCRoot are redirected into XGameSaveFiles-managed storage. A later direct .exe launch reads the physical NoCodePCRoot folder instead, which might be empty, making saves appear missing. To avoid this issue, always test no-code cloud saves with packaged builds by using wdapp install.Enabling no-code cloud saves
To enable no-code cloud saves, complete the following steps:- Modify your
MicrosoftGame.configfile. - Enable the simplified user model.
- Specify the root folder for save files.
- Provide the title’s corresponding SCID.
NoCodePCRoot must be relative to one of a small collection of options.
Use
SavedGames as the RelativeTo value. The Saved Games folder (%USERPROFILE%\Saved Games) corresponds to the Windows known folder ID FOLDERID_SavedGames. OneDrive doesn’t sync this folder by default.Avoid using other locations such as AppData (%APPDATA%). OneDrive can sync these locations and might cause conflicts with cloud save synchronization.For more information about FOLDERID_SavedGames, see SHGetKnownFolderPath.<NoCodePCRoot RelativeTo="SavedGames">savegame1.sav</NoCodePCRoot>, isn’t valid because savegame1.sav is ignored. <NoCodePCRoot> is intended to define a directory path, not a specific file.
