Molnsparningar för PlayDrop-spel
Spara och läs in spelarens framsteg med sdk.me.appData och updateAppData, för gäster och inloggade, med regler för skrivningar, förhandsvisningar och offline.
Molnsparningar behåller varje spelares framsteg i ditt spel på PlayDrop, så att de följer med från webbplatsen till apparna. Ett JSON-objekt per spelare och spel sparas; ingen server eller flerspelarrum behövs.
Läs och skriv
Efter init() är sdk.me.appData den sparade ögonblicksbilden: { data, seq, ts_event, ts_arrival }, eller null före den första sparningen. Läs ditt objekt från data. Skriv hela objektet med updateAppData, som returnerar den sparade ögonblicksbilden och uppdaterar 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
}- Varje skrivning ersätter hela det sparade objektet: behåll alla fält som du fortfarande behöver.
- Utför skrivningar i följd, som ovan, så att en äldre sparning aldrig landar efter en nyare, och håll kön igång efter ett fel.
- Visa ”Sparat” först när promise-objektet har slutförts. Att ändra
appData.datai minnet sparar ingenting. appDatahar inga metoderget,setellersave.
När du ska spara
Spara vid kontrollpunkter, slutet av banor och köp i stället för varje bildruta. Spara aldrig under förhandsvisningar eller inspelningar: skriv bara när sdk.host.phase är play. Håll sparningen liten och versionerad med ett eget fält, som saveVersion: 2, så att en senare version av spelet kan migrera den.
Gäster och inloggade spelare
Du behöver inte kontrollera sdk.me.isLoggedIn innan du sparar: PlayDrop-gäster behåller också sina sparningar. En spelare helt utan session behåller sparningen i minnet under det besöket, så en slutförd skrivning bevisar inte att sparningen nådde molnet. Använd isLoggedIn bara för funktioner som kräver ett riktigt konto, som köp och hostat flerspelarläge.
Offline
I en webbläsare kräver sparningar en anslutning och det finns ingen offlinekö: fortsätt spela vid fel och försök igen vid nästa kontrollpunkt. Värdar som anger stöd för enhetsdata, som PlayDrop-appar med offlinestöd, behåller sparningar på enheten och synkroniserar dem när de är online.
Vad sparningar inte är
Sparningar är privata för en spelare och ett spel. De är skilda från topplistor och prestationer, som har egna API:er och visas på PlayDrop. Tillstånd som delas mellan spelare, som en match eller en värld, hör hemma på en spelserver i ditt spels MongoDB-samlingar.
Testa
Sparningar hör till ett uppladdat spel. Ladda upp en privat version minst en gång och testa sedan från kvittots url eller från den lokala Dev-ramen som beskrivs i publicera från din AI-app.