Passer au contenu principal
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. Conflict (objet imbriqué, présent uniquement lors de la résolution d’un 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.

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.

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.
Dernière modification le 8 octobre 2026