Passer au contenu principal

Démarrage rapide de Game Saves

PlayFab Game Saves permet aux joueurs de poursuivre leur progression de manière transparente d’un appareil à l’autre en synchronisant les données de sauvegarde dans le cloud. Ce guide de démarrage rapide vous explique comment implémenter une solution complète de sauvegarde de jeu pour les plateformes XBOX et Windows.

Prérequis

Avant de commencer, assurez-vous :
  • D’avoir effectué l’intégration à Game Saves
  • D’avoir consulté les exigences d’implémentation dans la section Vue d’ensemble
  • D’avoir rempli les exigences répertoriées ci-dessous
  • (Facultatif) D’avoir cloné ou consulté l’exemple Game Saves de bout en bout pour Windows sur GitHub : PlayFabGameSaveSample-Windows. L’exemple illustre les flux d’initialisation, de synchronisation, de gestion des conflits et de chargement mentionnés dans ce démarrage rapide.

Ce que vous allez apprendre

Dans ce guide, vous allez apprendre à :
  • Initialiser le système Game Saves
  • Télécharger les données de sauvegarde existantes depuis le cloud
  • Charger les données de sauvegarde locales dans le cloud
  • Gérer les conflits et les rappels d’interface utilisateur
  • Gérer les scénarios d’appareil actif

Exigences de développement

Exigences logicielles

Vue d’ensemble du flux Game Saves

Le système Game Saves suit un modèle simple qui fonctionne de manière transparente d’un appareil à l’autre :

Configuration initiale (une fois par session de jeu)

  1. Initialiser les services : configurez les modules PlayFab Core et Game Saves
  2. Authentifier l’utilisateur : connectez le joueur à l’aide de l’authentification XBOX
  3. Télécharger les sauvegardes existantes : synchronisez sur l’appareil local les données de sauvegarde provenant d’autres appareils
  4. Obtenir l’emplacement de sauvegarde : obtenez le dossier racine de sauvegarde local dans lequel votre jeu doit écrire les fichiers de sauvegarde

Pendant le jeu

  1. Écrire les fichiers de sauvegarde : votre jeu écrit les données de sauvegarde dans le dossier racine de sauvegarde local, comme d’habitude
  2. Charger les modifications : chargez régulièrement dans le cloud les fichiers de sauvegarde modifiés
  3. Continuer à jouer : répétez les étapes 5 et 6 si nécessaire pendant la session de jeu

Fin de session

  1. Chargement final : chargez les dernières modifications avant que le joueur quitte le jeu
  2. Synchronisation en arrière-plan : sur XBOX/Windows, le système gère automatiquement les derniers chargements à la fermeture du jeu

Principaux avantages

  • Prise en charge hors connexion : les joueurs peuvent commencer à jouer même sans connexion Internet
  • Résolution automatique des conflits : une interface utilisateur intégrée gère les conflits de sauvegarde entre appareils
  • Chargements incrémentiels : seuls les fichiers modifiés sont chargés, ce qui améliore les performances
  • Continuité entre appareils : expérience transparente lors du passage d’un appareil à l’autre

Détails d’implémentation

Les sections suivantes fournissent des exemples de code détaillés pour chaque étape :

Étape 1 : initialiser Game Saves

Game Saves est conçu pour fonctionner aussi bien en ligne qu’hors connexion, ce qui le distingue des autres API PlayFab. Il conserve une identité d’utilisateur local persistante qui fonctionne même lorsque l’appareil démarre hors connexion.

Concepts clés

  • PFLocalUserHandle : un identificateur d’utilisateur persistant qui fonctionne hors connexion
  • PFServiceConfigHandle : la configuration de votre titre PlayFab
  • Conception hors connexion d’abord : le système fonctionne immédiatement, même sans connectivité Internet

Prérequis

Avant d’initialiser Game Saves, assurez-vous :
  • D’avoir appelé XGameRuntimeInitialize() pour initialiser le runtime XBOX
  • D’avoir appelé XUserAddAsync() pour connecter un utilisateur et obtenir un XUserHandle
  • De disposer de votre ID de titre PlayFab issu de Game Manager

Implémentation

Remplacez <titleId> par votre ID de titre PlayFab réel, issu de Game Manager. Le xuserHandle doit être obtenu à partir d’un appel réussi à XUserAddAsync.

Autres plateformes

Pour les plateformes sans authentification XBOX et sans prise en charge hors connexion, utilisez plutôt d’autres versions de PFLocalUserCreateHandle ou PFLocalUserCreateHandleWithPersistedLocalId. Consultez la documentation propre à chaque plateforme pour les détails d’implémentation. Par exemple :

Étape 2 : synchroniser les données de sauvegarde depuis le cloud

Après l’initialisation, ajoutez l’utilisateur au système Game Saves pour synchroniser les données de sauvegarde existantes provenant d’autres appareils. Cette étape configure également le dossier racine de sauvegarde local dans lequel votre jeu lira et écrira les fichiers de sauvegarde.

Quand effectuer cet appel

  • Une fois par session de jeu, après l’authentification de l’utilisateur
  • Lorsque l’utilisateur revient au menu principal du jeu
  • Après une reprise depuis l’état suspendu/l’arrière-plan

Ce que fait cette étape

  1. Télécharge les sauvegardes existantes provenant d’autres appareils (uniquement les fichiers nouveaux ou modifiés)
  2. Conserve les horodatages des fichiers lorsque c’est possible, pour un contrôle de version correct
  3. Gère les conflits automatiquement grâce à l’interface utilisateur intégrée
  4. Définit l’appareil comme actif pour cet utilisateur
  5. Fournit le chemin du dossier de sauvegarde dans lequel votre jeu doit écrire les fichiers

Limitations importantes

  • Ne peut être appelée avec succès qu’une seule fois par session Game Saves
  • Nécessite la réinitialisation du système Game Saves pour être appelée de nouveau
  • Déclenche des invites d’interface utilisateur en cas de conflits, de problèmes de stockage et de contention entre appareils

Implémentation

Étapes suivantes

Une fois cet appel terminé avec succès :
  • Votre jeu peut lire les fichiers de sauvegarde existants dans le répertoire saveFolder
  • Écrire de nouveaux fichiers de sauvegarde et créer des sous-répertoires si nécessaire
  • L’appareil est désormais considéré comme « actif » pour cet utilisateur
  • Les autres appareils afficheront un avertissement si l’utilisateur tente d’y effectuer une synchronisation

Étape 3 : charger les données de sauvegarde dans le cloud

Une fois que votre jeu a écrit des fichiers et des sous-dossiers de sauvegarde dans le dossier racine de sauvegarde local, utilisez cette étape pour charger les modifications dans le cloud. Le système détecte automatiquement et charge uniquement les fichiers et sous-dossiers modifiés depuis le dernier chargement. Les suppressions de fichiers et de dossiers sont également synchronisées automatiquement dans le cloud.

Moments suggérés pour le chargement

  • Après une progression importante : lorsque le joueur atteint un point de contrôle ou termine un niveau
  • Avant les transitions de menu : lors du retour au menu principal ou du changement de mode de jeu
  • À la sortie du jeu : avant que le joueur quitte le jeu
  • Sauvegardes périodiques : toutes les quelques minutes pendant les longues sessions de jeu

Options de chargement

  • KeepDeviceActive : l’appareil reste actif, ce qui permet d’autres chargements ultérieurs
  • ReleaseDeviceAsActive : libère l’appareil de son statut actif, ce qui permet une synchronisation transparente sur d’autres appareils

Comportement selon la plateforme

  • XBOX/Windows : le chargement se poursuit en arrière-plan après la fermeture du jeu
  • Autres plateformes (Steam Deck, etc.) : le chargement doit se terminer avant la sortie du jeu, faute de quoi les données de sauvegarde n’atteindront pas le cloud

Implémentation

Quand puis-je écrire de nouveau dans le dossier de sauvegarde ?

Pendant le chargement, le système lit et compresse vos fichiers de sauvegarde locaux avant de les charger. Dès que l’état de synchronisation passe à Uploading (signalé via PFGameSaveFilesUiProgressCallback), le système a fini de lire vos fichiers et vous pouvez de nouveau écrire dans le dossier de sauvegarde en toute sécurité. Vous n’avez pas besoin d’attendre la fin complète du chargement pour reprendre les sauvegardes. Si vous n’utilisez pas le rappel de progression, attendez que le XAsyncBlock se termine avant d’écrire de nouvelles données de sauvegarde.

Bonnes pratiques

  1. Gérez les échecs de manière appropriée : les problèmes réseau ne doivent pas faire planter votre jeu
  2. Utilisez les options appropriées :
    • Utilisez KeepDeviceActive pendant le jeu pour permettre d’autres chargements
    • Utilisez ReleaseDeviceAsActive lorsque le joueur quitte le jeu ou revient au menu
  3. Avertissez les utilisateurs sur les plateformes autres que XBOX : indiquez aux joueurs de ne pas quitter pendant le chargement

Considérations relatives à la fréquence

  • Plusieurs chargements par session sont pris en charge et efficaces
  • Seuls les fichiers modifiés sont chargés, ce qui limite l’utilisation de la bande passante
  • Consultez la documentation sur les limites pour connaître les quotas et restrictions spécifiques

Étape 4 : gérer les rappels d’interface utilisateur (facultatif)

Game Saves fournit une interface utilisateur intégrée pour les plateformes XBOX et Windows. Sur les autres plateformes (comme le Steam Deck), votre jeu doit fournir sa propre interface utilisateur en gérant des rappels. Les rappels d’interface utilisateur se déclenchent pendant PFGameSaveFilesAddUserWithUiAsync et PFGameSaveFilesUploadWithUiAsync. Chaque rappel suspend l’opération asynchrone jusqu’à ce que votre jeu réponde : le rappel XAsyncBlock ne se déclenche pas tant que tous les rappels d’interface utilisateur ne sont pas résolus.
Pour la liste complète des types de rappels, des API de réponse, des actions utilisateur et des détails sur le fonctionnement de la machine à états, consultez Rappels d’interface utilisateur de Game Saves.

Comprendre les conflits de sauvegarde

Des conflits de sauvegarde se produisent lorsque les mêmes données de jeu ont été modifiées sur plusieurs appareils. Game Saves traite chaque sous-dossier de premier niveau comme une unité atomique pour la résolution des conflits, et les joueurs peuvent choisir de conserver soit les données locales, soit les données cloud en cas de conflit. Pour des scénarios détaillés de gestion des conflits et des bonnes pratiques, consultez Conflits de Game Saves.

Comprendre le mode hors connexion de Game Saves

Game Saves fonctionne aussi bien en ligne qu’hors connexion. Lorsqu’il est connecté au cloud, toutes les API fonctionnent normalement. Hors connexion ou en cas de déconnexion, les sauvegardes locales continuent de fonctionner, mais les opérations cloud renvoient E_PF_GAMESAVE_DISCONNECTED_FROM_CLOUD. Utilisez PFGameSaveFilesIsConnectedToCloud() pour vérifier l’état de la connexion et implémentez des rappels d’échec de synchronisation pour gérer correctement les problèmes réseau. Pour des détails sur le comportement hors connexion et des bonnes pratiques, consultez Mode hors connexion de Game Saves.

Comprendre les changements d’appareil actif dans Game Saves

Lorsqu’un joueur change d’appareil en cours de session, il est important d’éviter qu’il perde accidentellement sa progression en jouant simultanément sur plusieurs appareils. Si votre jeu se connecte uniquement à l’aide de la fonctionnalité Single Point of Presence (SPOP) de XBOX, ce scénario est automatiquement évité. SPOP garantit qu’un utilisateur ne peut être connecté que sur un seul appareil XBOX à la fois. Sinon, vous devez également implémenter le rappel de changement d’appareil actif pour gérer les scénarios dans lesquels un joueur change d’appareil en cours de session Pour des détails sur le comportement et des bonnes pratiques, consultez Changements d’appareil actif dans Game Saves.

Débogage

Le moyen le plus simple de consulter les résultats et de déboguer les appels du SDK consiste à activer le traçage de débogage. L’activation du traçage de débogage vous permet à la fois de consulter les résultats dans la fenêtre de sortie du débogueur et d’intégrer ces résultats aux journaux de votre jeu.
Dernière modification le 8 octobre 2026