Salvataggi cloud per i giochi PlayDrop
Salva e carica i progressi con sdk.me.appData e sdk.me.updateAppData, per ospiti e giocatori con accesso: regole per scritture, anteprime e gioco offline.
I salvataggi cloud conservano su PlayDrop i progressi di ogni giocatore nel tuo gioco, così i progressi lo seguono dal sito alle app. Viene memorizzato un oggetto JSON per giocatore e per gioco; non servono un server né una stanza multiplayer.
Leggi e scrivi
Dopo init(), sdk.me.appData è l’istantanea salvata: { data, seq, ts_event, ts_arrival }, oppure null prima del primo salvataggio. Leggi il tuo oggetto da data. Scrivi l’intero oggetto con updateAppData, che restituisce l’istantanea salvata e aggiorna 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
}- Ogni scrittura sostituisce l’intero oggetto salvato: conserva tutti i campi che ti servono ancora.
- Esegui le scritture in sequenza, come sopra, così un salvataggio più vecchio non arriva mai dopo uno più recente, e mantieni attiva la coda dopo un errore.
- Mostra «Salvato» solo dopo che la promise si è risolta. Modificare
appData.datain memoria non salva nulla. appDatanon ha metodiget,setosave.
Quando salvare
Salva ai checkpoint, alla fine dei livelli e dopo gli acquisti, invece che a ogni frame. Non salvare mai durante anteprime o acquisizioni: scrivi solo quando sdk.host.phase è play. Mantieni il salvataggio piccolo e indica una versione in un campo tuo, come saveVersion: 2, così una versione successiva del gioco può migrarlo.
Ospiti e giocatori con accesso
Non devi controllare sdk.me.isLoggedIn prima di salvare: anche gli ospiti di PlayDrop conservano i loro salvataggi. Un giocatore senza alcuna sessione mantiene il salvataggio in memoria per quella visita, quindi una scrittura risolta non dimostra che il salvataggio abbia raggiunto il cloud. Usa isLoggedIn solo per le funzioni che richiedono un vero account, come acquisti e multiplayer ospitato.
Offline
Nel browser i salvataggi richiedono una connessione e non c’è una coda offline: continua a giocare in caso di errore e riprova al checkpoint successivo. Gli host che dichiarano il supporto ai dati sul dispositivo, come le app PlayDrop che funzionano offline, conservano i salvataggi sul dispositivo e li sincronizzano quando sono online.
Cosa non sono i salvataggi
I salvataggi sono privati e legati a un solo giocatore e a un solo gioco. Sono separati dalle classifiche e dagli obiettivi, che hanno API proprie e compaiono su PlayDrop. Lo stato condiviso tra giocatori, come una partita o un mondo, va su un server di gioco, nelle collezioni MongoDB del tuo gioco.
Prova
I salvataggi appartengono a un gioco caricato. Carica almeno una volta una versione privata, poi prova dall’url della ricevuta o dal frame Dev locale descritto in pubblicare dalla tua app di IA.