> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Comprendre le flux de synchronisation de Game Saves

> Parcourez le flux de synchronisation en six étapes de Game Saves sur XBOX : démarrage du titre, vérification de la connexion, propriété des données, synchronisation infonuagique, boucle de jeu et fin de session.

Cet article décrit le flux de synchronisation en six parties de Game Saves. Bien que le comportement puisse différer légèrement selon l'API Game Saves que vous utilisez, le flux général d'une sauvegarde lancée par l'utilisateur est le même. Les étapes sont les suivantes.

1. [Démarrage du titre](/fr-CA/build/core-features/common/game-save/game-saves-syncing#title-start)
2. [Vérification de la connexion](/fr-CA/build/core-features/common/game-save/game-saves-syncing#connection-check)
3. [Vérification de la propriété des données](/fr-CA/build/core-features/common/game-save/game-saves-syncing#data-ownership-check)
4. [Synchronisation des données avec le nuage](/fr-CA/build/core-features/common/game-save/game-saves-syncing#syncing-data-with-the-cloud)
5. [Boucle de jeu](/fr-CA/build/core-features/common/game-save/game-saves-syncing#gameplay-loop)
6. [Fin de session](/fr-CA/build/core-features/common/game-save/game-saves-syncing#session-end)

## Démarrage du titre

Lorsque le titre est lancé, la première étape consiste à déterminer l'utilisateur pour lequel Game Saves est géré. Si l'utilisateur a une session de jeu active sur un autre appareil, une boîte de dialogue système lui demande de changer d'appareil. Si l'utilisateur change d'appareil, l'autre appareil synchronise ses plus récentes données locales de Game Saves avec le nouvel appareil. Si vous voulez que les données soient locales et liées à l'appareil, vous pouvez utiliser un fournisseur machine seulement. Cette option transmet un handle d'utilisateur `null` aux API Game Saves.

Une fois que le titre a sélectionné l'utilisateur, il initialise Game Saves avec le handle de cet utilisateur. Pendant l'initialisation, Game Saves se connecte au réseau XBOX pour préparer l'espace de stockage de l'utilisateur.

| API | Fonction d'initialisation du fournisseur Game Saves |
| - | - |
| `XGameSave` | `XGameSaveInitializeProvider()` |
| `XGameSaveFiles` | `XGameSaveFilesGetFolderWithUIAsync()` |

Boîte de dialogue système pertinente :

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/signed-into-another-device.png?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=b333cb6234262d4b20d1b00cfa7119f7" alt="Il semble que vous soyez connecté sur un autre appareil." width="792" height="1026" data-path="images/gdk/features/common/signed-into-another-device.png" />

Pour en savoir plus sur les modèles d'utilisateur et la gestion des utilisateurs, consultez [Modèles d'utilisateur](/fr-CA/build/core-features/common/game-save/game-saves-developer-guide#user-models).

Pour en savoir plus sur le stockage, consultez [Systèmes de stockage de Game Saves](/fr-CA/build/core-features/common/game-save/game-saves-storage-systems).

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-1-title-start.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=e73bde01a012a367ec751c0f00a760c5" alt="Organigramme de la première étape du processus de synchronisation." width="663" height="1258" data-path="images/gdk/features/common/sync-flow-1-title-start.jpg" />

## Vérification de la connexion

Ensuite, le titre détermine s'il peut se connecter au réseau XBOX afin de confirmer que la synchronisation avec le nuage est possible. Si le titre ne peut pas se connecter, l'utilisateur a la possibilité de réessayer ou de reprendre le titre en mode hors ligne. Game Saves peut fonctionner en mode hors ligne.

Boîtes de dialogue système pertinentes : <img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-failed-network-dialogue.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=2d1a2c71ac69baac7aa3863e5308554d" alt="Nous n'avons pas pu synchroniser vos données avec le nuage pour le moment." width="1006" height="559" data-path="images/gdk/features/common/sync-failed-network-dialogue.jpg" />


<img src="https://mintlify.s3.us-west-1.amazonaws.com/microsoft-4404708b/fr-CA/build/core-features/common/game-save/game-saves-dialogues#we-couldnt-get-your-latest-saved-data" alt="Nous n'avons pas pu obtenir vos plus récentes données sauvegardées." />

### Comportement hors ligne

| Accès au réseau XBOX | Modèle de synchronisation des données |
| - | - |
| Oui | Flux normal de synchronisation infonuagique. Passez à la vérification de la propriété des données. |
| Non | Mode hors ligne : Le titre sauvegarde les données dans le stockage local de Game Saves de l'utilisateur, mais la session en cours ne se synchronise pas avec le nuage. |

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-2-connection-check.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=abc4d0abd4bcce59bce850fb348d19fb" alt="Organigramme de l'étape de vérification de la connexion du processus de synchronisation." width="598" height="444" data-path="images/gdk/features/common/sync-flow-2-connection-check.jpg" />

## Vérification de la propriété des données

Une fois la connexion confirmée, le titre détermine si l'appareil a le droit de modifier les données. Si c'est le cas, il peut acquérir un verrou sur le titre. Pour qu'un titre puisse obtenir et libérer un verrou, il doit avoir accès aux services XBOX.

Le titre vérifie si un autre appareil détient un verrou sur les données de l'utilisateur. Cet appareil pourrait encore conserver un verrou pour les raisons suivantes.

* Il est déconnecté du réseau XBOX, ce qui l'empêche d'appeler `WebReleaseLock`.
* L'autre appareil téléverse une Game Save volumineuse et ne peut pas appeler `WebReleaseLock`.

Si un autre appareil détient le verrou, l'utilisateur dispose des options suivantes.

* Acquérir de force le verrou de l'autre appareil, ce qui fait perdre les données de session à l'autre appareil.
* Tenter à nouveau d'acquérir le verrou normalement.
* Annuler l'acquisition du verrou.

Si l'utilisateur annule l'acquisition du verrou, le titre est lancé en mode hors ligne.

Pour d'autres scénarios de perte de connexion et de verrou, consultez [Scénarios de perte de connexion et de verrou](/fr-CA/build/core-features/common/game-save/game-saves-syncing#connection-loss-and-lock-scenarios).

Boîtes de dialogue système pertinentes :

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/lock-contention-dialogue.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=38894f740f55a181c2137b3c9b84cb18" alt="Votre autre console XBOX prend beaucoup de temps à se synchroniser avec le nuage" width="639" height="563" data-path="images/gdk/features/common/lock-contention-dialogue.jpg" />

Pour en savoir plus sur la surveillance de l'acquisition du verrou sur le réseau XBOX, consultez [Inspecter le trafic réseau de Game Saves](/fr-CA/build/core-features/common/game-save/game-saves-tools#inspecting-game-saves-network-traffic).

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-3-data-ownership-check.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=b21137181a92b3e1afaad2618bea46ae" alt="Organigramme de la vérification de la propriété des données du processus de synchronisation." width="846" height="1092" data-path="images/gdk/features/common/sync-flow-3-data-ownership-check.jpg" />

## Synchronisation des données avec le nuage

Une fois que le titre a acquis le verrou sur les données de l'utilisateur, il synchronise ces données avec le nuage. Le titre détermine ensuite s'il effectue l'une des actions suivantes :

* Téléverser les données locales de Game Saves.
* Télécharger les données du nuage et mettre à jour les données locales de Game Saves.
* N'effectuer aucune action.
* Résoudre les conflits de données.

Le titre le détermine en comparant deux horodatages.

* **Heure de sauvegarde locale** : Le moment où cet appareil a écrit une sauvegarde pour la dernière fois
* **Heure de sauvegarde infonuagique** : Le moment où la copie dans le nuage a été mise à jour pour la dernière fois

### Les quatre résultats de synchronisation

| Local ou nuage | Action | Signification |
| - | - | - |
| Aucun changement | Ne rien faire | Les données correspondent aux deux emplacements. Aucune nouvelle progression. |
| Seul le local a changé | Téléverser local>nuage | L'utilisateur a joué hors ligne. Envoyer les données de sauvegarde locales plus récentes vers le nuage. |
| Seul le nuage a changé | Télécharger nuage>local | L'utilisateur a joué sur un autre appareil. Obtenir ses données de sauvegarde à partir du nuage. |
| Les deux ont changé | Conflit>inviter l'utilisateur | Chaque emplacement présente une progression que l'autre n'a pas. L'utilisateur résout le conflit. |

<Note>
  Si le téléchargement à partir du nuage a lieu, une boîte de dialogue de synchronisation s'affiche, [Synchronisation des données pour...](/fr-CA/build/core-features/common/game-save/game-saves-dialogues#syncing-data). Si l'utilisateur annule Game Saves au moyen de cette boîte de dialogue, le titre continue en mode hors ligne.
</Note>

### États de modification et de sauvegarde

Ce scénario suppose que l'utilisateur joue sur deux appareils, l'appareil A et l'appareil B.

**Local modifié**

L'utilisateur a progressé hors ligne sur l'appareil A. Par exemple, l'utilisateur a atteint le niveau 126 sur l'appareil A sans connexion Internet.

**Nuage modifié**

De la progression a été téléversée à partir de l'appareil B depuis la dernière synchronisation de l'appareil A par l'utilisateur. Par exemple, l'utilisateur a atteint le niveau 99 sur l'appareil B et l'a téléversé dans le nuage.

**Les deux modifiés**

L'utilisateur a joué hors ligne sur l'appareil A. Il a également joué sur l'appareil B depuis la dernière synchronisation de l'appareil A. Par exemple, l'appareil A est au niveau 126. Le nuage est au niveau 99.

En cas de conflit, le système invite l'utilisateur à le résoudre au moyen d'une boîte de dialogue : [Laquelle voulez-vous utiliser?](/fr-CA/build/core-features/common/game-save/game-saves-dialogues#which-one-do-you-want-to-use)

### Atomicité

Les Game Saves sont atomiques au niveau du conteneur (dossier). Si le dossier dans le nuage comprend un blob que le dossier local correspondant ne contient pas, le système traite les deux dossiers comme distincts. Cette différence crée un conflit.

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-4-sync-data-with-cloud.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=2e20d3966826e47b9b79c5bf30cc9227" alt="Organigramme de la synchronisation infonuagique du processus de synchronisation." width="930" height="1119" data-path="images/gdk/features/common/sync-flow-4-sync-data-with-cloud.jpg" />

## Boucle de jeu

La *boucle de jeu* est la partie active de la session de jeu. Elle commence une fois que le titre a terminé de synchroniser les données de sauvegarde avec le nuage.

Pendant la session de jeu active, le titre lit et écrit les données de sauvegarde localement. Toutes les données créées ou mises à jour pendant cette période restent dans le stockage local de Game Saves jusqu'à ce que le système effectue une synchronisation infonuagique.

La boucle de jeu se termine lorsque la session de jeu de l'utilisateur prend fin si l'une des conditions suivantes est vraie pour la console ou le PC. Une session prend fin lorsqu'une console ou un PC déclenche un changement d'état comme une suspension, un arrêt, une déconnexion ou un autre événement système.

### Synchronisation périodique avec le nuage

Toutes les 30 minutes de jeu, le titre tente de se synchroniser automatiquement avec le nuage. Ce comportement est fondé sur les scénarios suivants.

| API Game Saves | Action | Moment |
| - | - | - |
| `XGameSaveFiles`, sauvegardes infonuagiques sans code | Téléverser local>nuage | 30 minutes se sont écoulées depuis que le jeu a écrit dans la zone de sauvegarde désignée. |
| `XGameSave` | Téléverser local>nuage | Toutes les 30 minutes de jeu. |

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-5-gameplay-loop.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=3a0165fb65cfb429d4455e018b4fd95f" alt="Organigramme des interactions de la boucle de jeu avec Game Saves." width="714" height="977" data-path="images/gdk/features/common/sync-flow-5-gameplay-loop.jpg" />

## Fin de session

Une fois la session de jeu terminée, le titre téléverse les nouvelles données dans le nuage. L'appareil tente de téléverser les données dans le nuage lorsqu'il dispose d'une connexion. Une fois les données téléversées, le verrou est libéré.

Pour voir la libération du verrou sur le réseau XBOX à des fins de débogage, consultez [Inspecter le trafic réseau de Game Saves](/fr-CA/build/core-features/common/game-save/game-saves-tools#inspecting-game-saves-network-traffic).

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/sync-flow-6-session-end.jpg?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=fb2ca714223c6846bcf37775a7d98c6f" alt="Organigramme du comportement de fin de session du processus de synchronisation." width="1384" height="587" data-path="images/gdk/features/common/sync-flow-6-session-end.jpg" />

## Scénarios de perte de connexion et de verrou

Les données écrites pendant une perte de connexion sont stockées dans le stockage local de Game Saves et téléversées une fois la connexion rétablie. Toutefois, si l'utilisateur tente d'utiliser un autre appareil, l'appareil actuel ne peut pas libérer le verrou parce que la connexion a été perdue. L'utilisateur peut forcer le transfert du verrou vers un autre appareil. Selon le moment où ces transferts de verrou ont lieu, un titre peut présenter des comportements différents.

### Perte de connexion avant le démarrage du titre

> **Quand :** L'utilisateur lance un titre sans connexion.

Le titre offre à l'utilisateur la possibilité de lancer en mode hors ligne parce qu'il n'y a pas de connexion. Lorsque l'appareil se reconnecte au réseau XBOX et que le nuage contient des données plus récentes, le titre considère les données locales comme périmées. Dans ce cas, le titre met fin à la session de jeu en arrêtant l'application au moyen d'une opération de suspension.

Boîte de dialogue système pertinente : [Nous devons fermer ce jeu ou cette application](/fr-CA/build/core-features/common/game-save/game-saves-dialogues#we-need-to-close-this-game-or-app)

### Perte de connexion pendant la boucle de jeu

> **Quand :** L'utilisateur est dans une session de jeu active et le titre détient toujours le verrou. À un certain moment, la connexion est perdue. Le titre permet alors de continuer à jouer pendant cette perte.

| Appareil hors ligne | État du verrou à la reconnexion | Action du titre à la reconnexion | Expérience utilisateur/interface |
| - | - | - | - |
| Console | Détient toujours le verrou | Continuer à sauvegarder localement. | Les sauvegardes vont dans le stockage local. |
| Console | Verrou pris par un autre appareil | Le titre est arrêté. | Retour à l'écran d'accueil. |
| PC | Détient toujours le verrou | Continuer à sauvegarder localement. | Les sauvegardes vont dans le stockage local. |
| PC | Verrou pris par un autre appareil | Le jeu reprend normalement. La résolution des conflits est effectuée à la prochaine synchronisation. | Le jeu reprend. |

### Perte de connexion avant la fin de la session (arrêt ou suspension)

> **Quand :** Le joueur quitte ou suspend le titre alors que l'appareil est déconnecté. L'appareil contient encore des données locales non synchronisées.

| Appareil hors ligne | Moment de la perte de connexion | État du verrou à la reconnexion | Action de l'appareil à la reconnexion |
| - | - | - | - |
| Console | Avant l'arrêt | Détient toujours le verrou | Données téléversées et verrou libéré. |
| Console | Avant l'arrêt | Verrou pris par un autre appareil | Les données passent par la résolution de fusion au prochain démarrage du titre. |
| Console | Avant la suspension | Détient toujours le verrou | Données téléversées et verrou libéré. |
| Console | Avant la suspension | Verrou pris par un autre appareil | Titre arrêté, les données passent par la résolution de fusion au prochain démarrage du titre. |
| PC | Avant l'arrêt | Détient toujours le verrou | Données téléversées et verrou libéré. |
| PC | Avant l'arrêt | Verrou pris par un autre appareil | Les données passent par la résolution de fusion au prochain démarrage du titre. |
| PC | Avant la suspension | Détient toujours le verrou | Données téléversées et verrou libéré. |
| PC | Avant la suspension | Verrou pris par un autre appareil | Les données passent par la résolution de fusion au prochain démarrage du titre. |

## Perte d'alimentation

Une perte d'alimentation agit de façon semblable à une perte de connexion. La principale différence est que toutes les opérations de sauvegarde qui étaient en cours sont perdues.


## Related topics

- [Guide de programmation Direct3D 12](/fr/build/gdk-and-engines/guides/directx-12-programming-guide.md)
- [Compiler et exécuter votre premier titre console GDKX](/fr/home/build-first-title/first-console-title-walkthrough.md)
- [Aperçu du portage](/fr-CA/paths/porting/overview.md)
- [Vue d'ensemble de l'accessibilité GDK](/fr/build/game-principles/accessibility/accessibility-overview.md)
- [Certification (Certify)](/fr-CA/publishing/game-publishing/concepts/certification/certification-overview.md)
