Configurations dans Partner Center
Activer les services XBOX et Game Saves pour votre titre
Pour utiliser les API Game Saves, effectuez les étapes suivantes dans Partner Center.- Activez les services XBOX.
- Connectez-vous à Partner Center.
- Accédez à votre titre, puis activez les services XBOX dans les paramètres. Pour en savoir plus sur cette étape, consultez Configuration d’une application ou d’un jeu dans Partner Center, pour les partenaires gérés.
- Obtenez votre identificateur de configuration de service (SCID). Toutes les opérations de lecture et d’écriture doivent être associées à un SCID. Le SCID sert également à l’initialisation de Game Saves.
- Dans Partner Center, trouvez le SCID sous l’onglet XBOX services > XBOX settings de votre titre. Vous pouvez également trouver l’ID d’application (MSAAppID) de votre compte Microsoft (MSA) sur cette page.

- Dans Partner Center, trouvez le SCID sous l’onglet XBOX services > XBOX settings de votre titre. Vous pouvez également trouver l’ID d’application (MSAAppID) de votre compte Microsoft (MSA) sur cette page.
Scénarios de développement
Où dois-je intégrer Game Saves dans mon code?
La logique de Game Saves dépend de la connexion de l’utilisateur. Ajoutez le code de Game Saves à côté du flux de connexion de l’utilisateur.Comment m’assurer que mes données de sauvegarde ne deviennent pas corrompues?
Pour sauvegarder des données de façon sécuritaire et éviter la corruption, suivez ces étapes. Ces directives s’appliquent à toutes les opérations de sauvegarde.- Écrivez dans un fichier temporaire.
- Sérialisez vos données de sauvegarde dans un nouveau fichier (par exemple,
save.tmp) plutôt que d’écraser la sauvegarde active. Cette étape protège la sauvegarde existante si votre processus est interrompu en cours d’écriture.
- Sérialisez vos données de sauvegarde dans un nouveau fichier (par exemple,
- Fermez le handle d’écriture une fois l’écriture entièrement validée sur le disque.
- Remplacez l’ancien fichier de sauvegarde de façon atomique par le nouveau fichier temporaire au moyen de la fonction Win32 ReplaceFile.
Comment prendre en charge les appareils hors ligne?
Il vous incombe de déterminer le comportement du titre en cas de perte de connexion, avant et après l’initialisation de Game Saves. Pour en savoir plus sur le comportement hors ligne, consultez Comprendre le flux de synchronisation de Game Saves.De quelles interactions utilisateur dois-je tenir compte?
Le système d’exploitation affiche des invites système lorsqu’une action nécessite l’intervention de l’utilisateur. Pour en savoir plus sur ces invites, consultez Boîtes de dialogue de Game Saves.Existe-t-il un moyen de sauvegarder localement et uniquement sur l’appareil?
Si vous transmettez un handle d’utilisateurnull au processus d’initialisation de Game Save, le système crée un fournisseur machine seulement. Les données sont stockées localement et persistent sur l’appareil, avec une limite maximale de 256 Mo. Les données ne se synchronisent pas avec le nuage.
Pour en savoir plus sur le stockage de Game Saves, consultez Systèmes de stockage de Game Saves.
Gérer Game Saves au moyen de l’appareil
Accéder aux sauvegardes locales sur PC au moyen de l’Explorateur de fichiers
Si votre titre s’exécute sur PC, vous avez un accès direct aux fichiers. Selon l’implémentation de l’API Game Saves, vous pouvez accéder à vos sauvegardes locales aux emplacements suivants.
Lorsque vous manipulez des données sur PC, la logique de synchronisation s’applique toujours. Par exemple, modifier des données lorsque le titre ne détient pas de verrou cause des conflits.
Accéder aux sauvegardes locales sur console
Gérez les données de sauvegarde de la console au moyen de l’interface utilisateur XBOX. Pour y accéder, suivez les étapes suivantes.- Sélectionnez le bouton Accueil de la manette XBOX.
- Sélectionnez Mes jeux et applications > Tout afficher.
- Placez le curseur sur votre jeu, puis sélectionnez le bouton Affichage.
- Sélectionnez Données sauvegardées.

- La suppression de données sur la console au moyen de l’interface utilisateur du système ne supprime pas la copie stockée dans le nuage. Lorsque vous relancez le titre, il synchronise les données à partir du nuage.
- Les données du fournisseur machine apparaissent comme un utilisateur sans nom. Ces données demeurent sur l’appareil, ne se synchronisent pas avec le nuage et sont liées à l’appareil.
Scénarios de test
Lorsque vous créez des cas de test, séparez la validation des données de la logique de sauvegarde de jeu.Vérifier si les sauvegardes se synchronisent correctement vers le nuage et à partir de celui-ci
Suivez les étapes suivantes pour vérifier que la synchronisation est correcte. Les flux de test vérifient le comportement.XGameSaveFiles :
- Confirmez que le SCID est correct.
- Confirmez que vous utilisez le bon handle d’utilisateur.
- Confirmez que le titre appelle
XGameSaveFilesGetFolderWithUIAsyncpendant la session de jeu en cours. Si le titre reprend à partir d’un état suspendu, appelez la fonction.- Utilisez Fiddler pour confirmer que le verrou a été acquis.
- Enregistrez ce chemin et utilisez-le plus tard pour confirmer que les données sont téléversées.
- Écrivez des données dans le chemin de fichier fourni par
XGameSaveFilesGetFolderWithUIAsync. - Arrêtez ou suspendez le titre.
- Attendez de 10 à 30 secondes pour que le système d’exploitation téléverse automatiquement les données dans le nuage et libère le verrou.
- Confirmez au moyen de Fiddler que les données ont été téléversées et que le verrou a été libéré.
- Supprimez manuellement les données dans le dossier fourni par
XGameSaveFilesGetFolderWithUIAsync.- Sur console, accédez à ces données au moyen des paramètres du joueur.
- Relancez le titre, puis tentez de connecter l’utilisateur.
- Une boîte de dialogue de synchronisation s’affiche, montrant une synchronisation de téléchargement active à partir du nuage.
- Outils de Game Saves pour inspecter le trafic et manipuler les sauvegardes
- Comprendre le flux de synchronisation de Game Saves
Vérifier si les sauvegardes sont itinérantes correctement
Pour un plan de test permettant de confirmer l’itinérance des données, consultez Plan de test XR-052-06.Scénarios de migration
Partager des sauvegardes entre titres
Pour transférer des données d’un titre à un autre ou y accéder, effectuez deux étapes.- Modifiez les stratégies d’accès du titre auquel vous voulez accéder dans Partner Center.
- Initialisez les fournisseurs Game Saves des deux titres dans le code source.
Modifier les stratégies d’accès
Un titre contrôle quels titres ont accès à ses données de sauvegarde en configurant des stratégies d’accès.- Accédez à Partner Center.
- Sélectionnez Apps and games > <votre titre> > Gameplay settings.
- Dans Gameplay Settings, sélectionnez Access Policies, puis développez Connected Storage.
- Sélectionnez Add app/service, puis ajoutez les titres auxquels vous voulez donner accès.
- Lorsque vous avez terminé d’ajouter les titres, sélectionnez Save, puis Publish. Les modifications prennent effet dans l’heure qui suit.

Initialiser les fournisseurs Game Save
Maintenant que vous avez l’autorisation d’accéder au premier titre, vous pouvez lire les donnéesXGameSave de l’autre titre.
- Si vous utilisez
XGameSave, appelezXGameSaveInitializeProviderouXGameSaveInitializeProviderAsyncpour chaque titre. - Si vous utilisez
XGameSaveFiles, les fournisseurs sont initialisés implicitement. AppelezXGameSaveFilesGetFolderWithUiAsyncpour chaque titre.
Interopérabilité entre XGameSave et XGameSaveFiles
Un titre pourrait devoir utiliserXGameSave conjointement avec XGameSaveFiles. Les raisons typiques pourraient être les suivantes :
- L’éditeur a un titre existant sur console qui utilise déjà
XGameSave. - L’éditeur ne veut pas mettre à jour ce titre existant pour utiliser
XGameSaveFiles. - L’éditeur estime qu’ajouter
XGameSaveFilesà un titre PC est plus facile que d’utiliserXGameSave, mais souhaite tout de même prendre en charge les sauvegardes croisées entre PC, console et la diffusion de jeux XBOX en continu.
XGameSave à XGameSaveFiles est assez simple. Lorsque le titre appelle XGameSaveFilesGetFolderWithUiAsync, il mappe les conteneurs et les blobs à des répertoires et à des fichiers selon les règles suivantes :
- Toute barre oblique (/) dans le nom du conteneur crée la structure de répertoires dans laquelle se trouve le fichier.
- Les caractères suivants ne sont pas valides pour
XGameSaveFiles. Si le système rencontre ces caractères, il les mappe à un trait de soulignement (_) :- Les caractères de \0 à \001f, inclusivement.
- Les caractères suivants ne sont pas valides pour
XGameSaveFiles. Si le système rencontre ces caractères, il les mappe à un point (.) :- Guillemets (”)
- Signe inférieur à (<)
- Signe supérieur à (>)
- Barre verticale (|)
- Astérisque (*)
- Point d’interrogation (?)
- Barre oblique inverse (\)
- Une barre oblique (/) dans le nom du blob est mappée à un point (.) dans le nom du fichier.
- Les fichiers sont limités à 16 Mo.
XGameSaveprend en charge une taille de téléversement maximale de 16 Mo.
XGameSaveFiles à XGameSave, il restaure les noms d’origine des conteneurs et des blobs si les noms de fichiers restent inchangés ou ne sont pas déplacés.
Porter des titres antérieurs vers Game Saves sur PC avec les sauvegardes infonuagiques sans code
Certains titres que vous portez vers PC Game Pass pourraient nécessiter une solution de sauvegarde infonuagique sans code. Cette exigence peut survenir dans les scénarios suivants :- Le titre s’exécute en tant qu’application x86. Il utilise le Microsoft Game Development Kit (GDK) uniquement sous sa forme empaquetée.
- Le titre est créé sans code personnalisé, au moyen d’outils comme Blueprint dans Unreal Engine ou Bolt dans Unity.
- Le titre est arrêté.
- L’utilisateur suivi se déconnecte.
- L’état d’alimentation du PC change.
- 30 minutes se sont écoulées depuis la dernière écriture du titre dans la zone de sauvegarde désignée.
XGameSaveFiles et en partage toutes les limitations relatives à la taille des fichiers et aux limites de stockage par utilisateur. Les fichiers sont limités à 64 Mo (ou à 16 Mo s’il faut une interopérabilité avec XGameSave ou Connected Storage). Par défaut, le stockage par utilisateur est limité à 256 Mo. Les titres qui ont besoin de limites de stockage par utilisateur plus élevées peuvent collaborer avec leur gestionnaire de partenaires développeurs (DPM) pour demander une exception.
Il existe des conventions d’affectation de noms et des limites de caractères particulières pour les répertoires et les noms de fichiers. Pour en savoir plus, consultez Logique des chemins XGameSaveFiles.
Les sauvegardes infonuagiques sans code exigent que le titre soit lancé en tant que build empaqueté au moyen de
wdapp install. Lancer directement le fichier .exe n’active pas la redirection des sauvegardes infonuagiques.Lorsqu’un build empaqueté s’exécute, les sauvegardes écrites au moyen de NoCodePCRoot sont redirigées vers le stockage géré par XGameSaveFiles. Un lancement direct ultérieur du .exe lit plutôt le dossier physique NoCodePCRoot, qui pourrait être vide, ce qui donne l’impression que les sauvegardes sont manquantes. Pour éviter ce problème, testez toujours les sauvegardes infonuagiques sans code avec des builds empaquetés au moyen de wdapp install.Activer les sauvegardes infonuagiques sans code
Pour activer les sauvegardes infonuagiques sans code, effectuez les étapes suivantes :- Modifiez votre fichier
MicrosoftGame.config. - Activez le modèle d’utilisateur simplifié.
- Indiquez le dossier racine des fichiers de sauvegarde.
- Fournissez le SCID correspondant du titre.
NoCodePCRoot doit être relatif à l’une des quelques options suivantes.
Utilisez
SavedGames comme valeur de RelativeTo. Le dossier Parties enregistrées (%USERPROFILE%\Saved Games) correspond à l’ID de dossier connu Windows FOLDERID_SavedGames. OneDrive ne synchronise pas ce dossier par défaut.Évitez d’utiliser d’autres emplacements comme AppData (%APPDATA%). OneDrive peut synchroniser ces emplacements et causer des conflits avec la synchronisation des sauvegardes infonuagiques.Pour en savoir plus sur FOLDERID_SavedGames, consultez SHGetKnownFolderPath.<NoCodePCRoot RelativeTo="SavedGames">savegame1.sav</NoCodePCRoot>, n’est pas valide, car savegame1.sav est ignoré. <NoCodePCRoot> sert à définir un chemin de répertoire, et non un fichier précis.
