> ## 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 les six étapes du flux de synchronisation de Game Saves sur XBOX : démarrage du titre, vérification de la connexion, propriété des données, synchronisation cloud, 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 légèrement différer 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/build/core-features/common/game-save/game-saves-syncing#title-start)
2. [Vérification de la connexion](/fr/build/core-features/common/game-save/game-saves-syncing#connection-check)
3. [Vérification de la propriété des données](/fr/build/core-features/common/game-save/game-saves-syncing#data-ownership-check)
4. [Synchronisation des données avec le cloud](/fr/build/core-features/common/game-save/game-saves-syncing#syncing-data-with-the-cloud)
5. [Boucle de jeu](/fr/build/core-features/common/game-save/game-saves-syncing#gameplay-loop)
6. [Fin de session](/fr/build/core-features/common/game-save/game-saves-syncing#session-end)

## Démarrage du titre

Au lancement du titre, 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 dernières données Game Saves locales avec le nouvel appareil. Si vous souhaitez que les données soient locales et liées à l'appareil, vous pouvez utiliser un fournisseur propre à la machine. 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 concernée :

<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 plus d'informations sur les modèles d'utilisateur et la gestion des utilisateurs, consultez [Modèles d'utilisateur](/fr/build/core-features/common/game-save/game-saves-developer-guide#user-models).

Pour plus d'informations sur le stockage, consultez [Systèmes de stockage de Game Saves](/fr/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 cloud 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 connexion. Game Saves peut fonctionner en mode hors connexion.

Boîtes de dialogue système concernées : <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 cloud 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/build/core-features/common/game-save/game-saves-dialogues#we-couldnt-get-your-latest-saved-data" alt="Nous n'avons pas pu récupérer vos dernières données enregistrées." />

### Comportement hors connexion

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

<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 obtenir et libérer un verrou, le titre 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 peut 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 charge une sauvegarde de jeu 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 entraîne la perte des données de session sur l'autre appareil.
* Réessayer d'acquérir le verrou normalement.
* Annuler l'acquisition du verrou.

Si l'utilisateur annule l'acquisition du verrou, le titre se lance en mode hors connexion.

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

Boîtes de dialogue système concernées :

<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="La synchronisation de votre autre console XBOX avec le cloud prend beaucoup de temps" width="639" height="563" data-path="images/gdk/features/common/lock-contention-dialogue.jpg" />

Pour plus de détails sur la surveillance de l'acquisition des verrous sur le réseau XBOX, consultez [Inspection du trafic réseau de Game Saves](/fr/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 cloud

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

* Charger les données Game Saves locales.
* Télécharger les données du cloud et mettre à jour les données Game Saves locales.
* Ne rien faire.
* Résoudre les éventuels conflits de données.

Le titre le détermine en comparant deux horodatages.

* **Heure de sauvegarde locale** : date à laquelle cet appareil a écrit une sauvegarde pour la dernière fois
* **Heure de sauvegarde cloud** : date de la dernière mise à jour de la copie cloud

### Les quatre résultats de synchronisation

| Local et cloud | Action | Signification |
| - | - | - |
| Aucun n'a changé | Ne rien faire | Les données correspondent aux deux emplacements. Aucune nouvelle progression. |
| Seul le local a changé | Charger local>cloud | L'utilisateur a joué hors connexion. Envoyez les données de sauvegarde locales les plus récentes vers le cloud. |
| Seul le cloud a changé | Télécharger cloud>local | L'utilisateur a joué sur un autre appareil. Récupérez ses données de sauvegarde depuis le cloud. |
| 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 un téléchargement depuis le cloud a lieu, une boîte de dialogue de synchronisation s'affiche, [Synchronisation des données pour...](/fr/build/core-features/common/game-save/game-saves-dialogues#syncing-data). Si l'utilisateur annule Game Saves à l'aide de cette boîte de dialogue, le titre continue en mode hors connexion.
</Note>

### États modifiés 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 connexion sur l'appareil A. Par exemple, l'utilisateur est passé au niveau 126 sur l'appareil A sans connexion Internet.

**Cloud modifié**

Une progression a été chargée depuis l'appareil B depuis la dernière synchronisation de l'appareil A par l'utilisateur. Par exemple, l'utilisateur est passé au niveau 99 sur l'appareil B et l'a chargé dans le cloud.

**Les deux modifiés**

L'utilisateur a joué hors connexion 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 cloud 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/build/core-features/common/game-save/game-saves-dialogues#which-one-do-you-want-to-use)

### Atomicité

Les sauvegardes Game Saves sont atomiques au niveau du conteneur (dossier). Si le dossier cloud contient 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 cloud 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é la synchronisation des données de sauvegarde avec le cloud.

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 cloud.

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

### Synchronisation périodique avec le cloud

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

| API Game Saves | Action | Quand |
| - | - | - |
| `XGameSaveFiles`, sauvegardes cloud sans code | Charger local>cloud | 30 minutes se sont écoulées depuis que le jeu a écrit dans la zone de sauvegarde désignée. |
| `XGameSave` | Charger local>cloud | 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 charge les nouvelles données dans le cloud. L'appareil tente de charger les données dans le cloud lorsqu'il dispose d'une connexion. Une fois les données chargées, le verrou est libéré.

Pour observer la libération du verrou sur le réseau XBOX à des fins de débogage, consultez [Inspection du trafic réseau de Game Saves](/fr/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 verrouillage

Les données écrites pendant une perte de connexion sont stockées dans le stockage local de Game Saves et chargé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, car 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 se produisent, 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 propose à l'utilisateur de se lancer en mode hors connexion, car il n'y a pas de connexion. Lorsque l'appareil se reconnecte au réseau XBOX et que le cloud contient des données plus récentes, le titre considère les données locales comme obsolètes. Dans ce cas, le titre met fin à la session de jeu en arrêtant l'application avec une opération de suspension.

Boîte de dialogue système concernée : [Nous devons fermer ce jeu ou cette application](/fr/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 moment donné, la connexion est perdue. Le titre autorise alors le jeu pendant cette perte.

| Appareil hors connexion | État du verrou à la reconnexion | Action du titre à la reconnexion | Expérience utilisateur/interface |
| - | - | - | - |
| Console | Détient toujours le verrou | Continuer à enregistrer localement. | Les sauvegardes vont dans le stockage local. |
| Console | Verrou pris par un autre appareil | Le titre s'arrête. | Retour à l'écran d'accueil. |
| PC | Détient toujours le verrou | Continuer à enregistrer localement. | Les sauvegardes vont dans le stockage local. |
| PC | Verrou pris par un autre appareil | Le jeu reprend normalement. La résolution du conflit a lieu lors de la prochaine synchronisation. | Le jeu reprend. |

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

> **Quand :** le joueur quitte ou suspend le titre alors que l'appareil est déconnecté. L'appareil possède toujours des données locales non synchronisées.

| Appareil hors connexion | 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 chargées et verrou libéré. |
| Console | Avant l'arrêt | Verrou pris par un autre appareil | Les données passent par une résolution de fusion au prochain démarrage du titre. |
| Console | Avant la suspension | Détient toujours le verrou | Données chargées et verrou libéré. |
| Console | Avant la suspension | Verrou pris par un autre appareil | Titre arrêté, les données passent par une résolution de fusion au prochain démarrage du titre. |
| PC | Avant l'arrêt | Détient toujours le verrou | Données chargées et verrou libéré. |
| PC | Avant l'arrêt | Verrou pris par un autre appareil | Les données passent par une résolution de fusion au prochain démarrage du titre. |
| PC | Avant la suspension | Détient toujours le verrou | Données chargées et verrou libéré. |
| PC | Avant la suspension | Verrou pris par un autre appareil | Les données passent par une résolution de fusion au prochain démarrage du titre. |

## Coupure de courant

Une coupure de courant se comporte de manière similaire à une perte de connexion. La principale différence est que toutes les opérations de sauvegarde 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)
