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

# Événements PlayStream de Game Saves

> Référence des événements PlayStream de PlayFab Game Saves, couvrant les champs de télémétrie de finalisation des versions, de résolution des conflits et de restauration de versions fiables.

PlayFab Game Saves émet des événements PlayStream que vous pouvez utiliser pour suivre la façon dont les joueurs sauvegardent, synchronisent et gèrent leurs données de jeu. Utilisez ces événements pour surveiller l'activité de sauvegarde, détecter les conflits et comprendre les modes d'utilisation multiappareils de votre base de joueurs.

Tous les événements de Game Saves sont émis pour les entités `title_player_account` dans l'espace de noms `playfab.gamesave`.

## Événements

### `gamesave_version_finalized`

Émis chaque fois qu'une version de sauvegarde de jeu est finalisée. Tous les fichiers sont téléversés et la version est complète. Cet événement est le principal signal permettant de suivre l'activité de sauvegarde.

| Champ | Type | Description |
| - | - | - |
| `Version` | `long` | Le numéro de version de la sauvegarde de jeu finalisée |
| `FinalizedAt` | `DateTime` | Horodatage de la finalisation de la version |
| `TotalSizeBytes` | `long` | Taille totale de la version finalisée, tous fichiers compris |
| `TotalFileCount` | `int` | Nombre total de fichiers dans la version finalisée |
| `NewFileCount` | `int` | Nombre de nouveaux fichiers ajoutés dans cette version |
| `NewFilesSizeBytes` | `long` | Taille des nouveaux fichiers ajoutés dans cette version |
| `PlayerIdentityProvider` | `string` | Le fournisseur d'identité utilisé par le joueur (par exemple, Steam, XBOX Live) |
| `DeviceType` | `string` | Le type d'appareil à partir duquel la sauvegarde a été téléversée |
| `IsGeneratedByRollback` | `bool` | `true` si cette version a été créée par une restauration vers une version précédente |
| `Conflict` | `Conflict` | Présent lorsque cette version a été finalisée dans le cadre d'une résolution de conflit, `null` dans le cas contraire. Consultez [Résolution des conflits](#scenario-conflict-resolution) |

**Conflict** (objet imbriqué, présent uniquement lors de la résolution d'un conflit) :

| Champ | Type | Description |
| - | - | - |
| `IsWinner` | `bool` | Indique si les modifications locales du joueur ont remporté le conflit. L'événement correspond toujours à un nouveau manifeste créé à partir des données locales du client. `true` signifie que ce manifeste est devenu la version canonique; `false` signifie que le manifeste a été conservé comme point de restauration, tandis que la version infonuagique existante est restée canonique |
| `ConflictingVersion` | `long` | Le numéro de version de la version infonuagique existante qui était en conflit |

### `gamesave_version_marked_known_good`

Émis lorsqu'une version de sauvegarde de jeu est explicitement marquée comme « fiable » (known good). Une version fiable sert de point de restauration de confiance : il s'agit de la version vers laquelle le système revient si un joueur ou le titre doit récupérer après un état de sauvegarde incorrect.

| Champ | Type | Description |
| - | - | - |
| `Version` | `long` | La version marquée comme fiable |
| `MarkedAt` | `DateTime` | Horodatage du marquage de la version |

***

## Scénarios

### Scénario : utilisation multiappareil standard

Un flux multiappareil type consiste pour un joueur à sauvegarder sur un appareil et à reprendre sur un autre. Dans PlayStream, ce schéma se présente sous la forme d'une séquence d'événements `gamesave_version_finalized` dont les numéros de `Version` sont incrémentés.

**Ce que vous voyez :**

* Un événement `gamesave_version_finalized` chaque fois que le joueur sauvegarde, avec `DeviceType` et `PlayerIdentityProvider` indiquant l'appareil et le fournisseur d'identité utilisés.
* `NewFileCount` et `NewFilesSizeBytes` indiquent la quantité de données modifiées par rapport à la version précédente. Une version dont `NewFileCount` vaut 0 signifie que le joueur a finalisé une version sans nouveau contenu de fichier (par exemple, une mise à jour portant uniquement sur les métadonnées).
* Pour les sauvegardes normales, `Conflict` vaut `null` et `IsGeneratedByRollback` vaut `false`.

**Points à surveiller :**

* **Fréquence des sauvegardes par joueur** : suivez le rythme des événements de finalisation pour comprendre l'engagement des joueurs et leur comportement en matière de sauvegarde.
* **Taille des sauvegardes dans le temps** : surveillez `TotalSizeBytes` et `NewFilesSizeBytes` pour détecter une croissance inattendue des données de sauvegarde susceptible d'affecter les coûts de stockage ou les durées de synchronisation.
* **Répartition par appareil** : agrégez `DeviceType` pour savoir à partir de quelles plateformes vos joueurs sauvegardent le plus souvent.

<a id="scenario-conflict-resolution" />

### Scénario : résolution des conflits

Des conflits se produisent lorsque deux appareils finalisent une version de sauvegarde de jeu à partir de la même version de base. Par exemple, un joueur peut jouer hors connexion sur sa console et sur son PC en même temps, et les deux appareils tentent de se synchroniser lorsqu'ils reviennent en ligne.

**Ce que vous voyez :**

* Lors de la résolution d'un conflit, le client charge toujours ses fichiers locaux dans un nouveau manifeste et finalise ce manifeste. Ce processus produit un seul événement `gamesave_version_finalized` avec un objet `Conflict` non null. La version infonuagique existante (déjà finalisée lors d'un événement antérieur) ne produit pas de nouvel événement.
* `Conflict.IsWinner` indique si les modifications locales du joueur ont remporté le conflit :
  * `true` : le joueur a choisi **keep local**. Le nouveau manifeste devient la version canonique et la version infonuagique précédente est remplacée.
  * `false` : le joueur a choisi **keep remote**. Le nouveau manifeste est conservé comme point de restauration (il contient les données locales rejetées), tandis que la version infonuagique existante reste canonique.
* `Conflict.ConflictingVersion` désigne la version infonuagique existante qui était en conflit.

**Points à surveiller :**

* **Taux de conflit** : filtrez les événements `gamesave_version_finalized` dans lesquels `Conflict` est présent. Un taux de conflit en hausse peut indiquer que les joueurs changent fréquemment d'appareil sans synchroniser, ou que la cadence de sauvegarde de votre titre provoque des collisions de versions inutiles.
* **Préférence locale ou distante** : comparez la proportion de `IsWinner = true` (version locale conservée) et de `IsWinner = false` (version distante conservée) pour comprendre comment les joueurs résolvent les conflits. Une forte prédominance de l'une des deux options peut indiquer un problème d'expérience utilisateur dans l'invite de conflit.
* **Schémas de conflits multiappareils** : utilisez `DeviceType` et `PlayerIdentityProvider` sur les événements de conflit pour identifier les combinaisons de plateformes les plus sujettes aux conflits.

### Scénario : version fiable et restauration

Le mécanisme de version « fiable » vous permet de marquer une version spécifique comme point de restauration de confiance. Si la sauvegarde d'un joueur est corrompue ou s'il doit récupérer ses données, le système peut revenir à la version fiable la plus récente et créer une nouvelle version à partir de celle-ci.

**Ce que vous voyez :**

* Un événement `gamesave_version_marked_known_good` lorsque vous désignez une version comme point de restauration, avec le numéro de `Version` et l'horodatage `MarkedAt`.
* En cas de restauration, le système émet un nouvel événement `gamesave_version_finalized` avec `IsGeneratedByRollback = true`. Le contenu de cette nouvelle version est basé sur la version fiable, mais elle reçoit un nouveau numéro de version incrémenté.
* La version générée par la restauration peut également comporter des données `Conflict` si la restauration a été déclenchée dans le cadre d'une résolution de conflit.

**Points à surveiller :**

* **Fréquence des restaurations** : suivez les événements `gamesave_version_finalized` dans lesquels `IsGeneratedByRollback = true`. Des restaurations fréquentes pour un titre peuvent indiquer des problèmes de corruption des sauvegardes ou de logique de sauvegarde du titre.
* **Ancienneté de la version fiable** : comparez la `Version` de `gamesave_version_marked_known_good` à la dernière `Version` finalisée pour le même joueur. Un écart important signifie que le joueur perdrait une progression significative en cas de restauration.
* **Corrélation entre restaurations et conflits** : si les versions générées par une restauration apparaissent fréquemment avec des données de conflit, cela peut signifier que votre stratégie de résolution des conflits déclenche des restaurations comme effet secondaire.


## Related topics

- [Référence du modèle d'événements PlayStream pour PlayFab](/fr-CA/services/playfab/api-references/events/index.md)
- [Événements PlayStream](/fr-CA/services/playfab/data-analytics/ingest-data/playstream-events.md)
- [Capacités des événements PlayStream](/fr-CA/services/playfab/data-analytics/ingest-data/playstream-event-capabilities.md)
- [PlayStream avec les événements d'entité](/fr-CA/services/playfab/data-analytics/ingest-data/playstream-with-entity-events.md)
- [Écriture de CloudScript personnalisé](/fr-CA/services/playfab/live-service-management/service-gateway/automation/cloudscript/writing-custom-cloudscript.md)
