Sauvegardes cloud pour les jeux PlayDrop
Enregistrez et chargez la progression avec sdk.me.appData et sdk.me.updateAppData, pour invités et joueurs connectés : écritures, aperçus et hors ligne.
Les sauvegardes cloud conservent la progression de chaque joueur dans votre jeu sur PlayDrop : elle le suit du site web jusqu’aux apps. Un seul objet JSON est stocké par joueur et par jeu ; aucun serveur ni salle multijoueur n’est nécessaire.
Lire et écrire
Après init(), sdk.me.appData est l’état sauvegardé : { data, seq, ts_event, ts_arrival }, ou null avant la première sauvegarde. Lisez votre objet dans data. Écrivez l’objet entier avec updateAppData, qui renvoie l’état sauvegardé et met à jour sdk.me.appData.
const sdk = await playdrop.init();
let progress = { level: 1, coins: 0, ...(sdk.me.appData?.data ?? {}) };
let queue = Promise.resolve();
// Resolves with the saved snapshot; rejects when the save failed.
function save(changes) {
progress = { ...progress, ...changes };
const snapshot = { ...progress };
const attempt = queue.then(() => sdk.me.updateAppData(snapshot));
queue = attempt.catch(() => {}); // a failed save must not block the next one
return attempt;
}
try {
await save({ level: 2 });
showSaved();
} catch (error) {
showSaveError(); // progress stays in memory; the next save sends it again
}- Chaque écriture remplace la totalité de l’objet sauvegardé : conservez tous les champs dont vous avez encore besoin.
- Effectuez les écritures en série, comme ci-dessus, pour qu’une ancienne sauvegarde n’arrive jamais après une plus récente, et laissez la file avancer après un échec.
- N’affichez « Sauvegardé » qu’une fois la promesse résolue. Modifier
appData.dataen mémoire n’enregistre rien. appDatan’a pas de méthodesget,setnisave.
Quand sauvegarder
Sauvegardez aux points de contrôle, en fin de niveau et lors des achats plutôt qu’à chaque image. Ne sauvegardez jamais pendant les aperçus ni les captures : n’écrivez que lorsque sdk.host.phase vaut play. Gardez une sauvegarde légère et versionnée avec votre propre champ, comme saveVersion: 2, pour qu’une version ultérieure du jeu puisse la migrer.
Invités et joueurs connectés
Inutile de vérifier sdk.me.isLoggedIn avant de sauvegarder : les invités PlayDrop conservent eux aussi leurs sauvegardes. Un joueur sans aucune session garde la sauvegarde en mémoire le temps de sa visite ; une écriture résolue ne prouve donc pas que la sauvegarde a atteint le cloud. N’utilisez isLoggedIn que pour les fonctionnalités qui exigent un véritable compte, comme les achats et le multijoueur hébergé.
Hors ligne
Dans un navigateur, les sauvegardes nécessitent une connexion et il n’existe pas de file d’attente hors ligne : continuez à jouer en cas d’échec et réessayez au prochain point de contrôle. Les hôtes qui annoncent la prise en charge des données sur l’appareil, comme les apps PlayDrop compatibles hors ligne, conservent les sauvegardes sur l’appareil et les synchronisent une fois en ligne.
Ce que les sauvegardes ne sont pas
Les sauvegardes sont propres à un joueur et à un jeu. Elles sont distinctes des classements et des succès, qui ont leurs propres API et apparaissent sur PlayDrop. Un état partagé entre joueurs, comme un match ou un monde, a sa place sur un serveur de jeu, dans les collections MongoDB de votre jeu.
Tester
Les sauvegardes appartiennent à un jeu envoyé sur PlayDrop. Envoyez au moins une fois une version privée, puis testez depuis l’url du reçu ou depuis le cadre Dev local décrit dans publier depuis votre app d’IA.