Simpanan cloud untuk game PlayDrop
Simpan dan muat progres dengan sdk.me.appData dan sdk.me.updateAppData untuk tamu dan pemain yang sudah masuk, plus aturan penulisan, pratinjau, dan offline.
Simpanan cloud menjaga progres setiap pemain di game Anda di PlayDrop, sehingga progres itu ikut bersama mereka dari situs web ke aplikasi. Satu objek JSON disimpan per pemain dan game; tidak perlu server atau room multiplayer.
Baca dan tulis
Setelah init(), sdk.me.appData adalah snapshot yang tersimpan: { data, seq, ts_event, ts_arrival }, atau null sebelum penyimpanan pertama. Baca objek Anda dari data. Tulis seluruh objek dengan updateAppData, yang mengembalikan snapshot tersimpan dan memperbarui 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
}- Setiap penulisan mengganti seluruh objek yang tersimpan: pertahankan setiap field yang masih Anda perlukan.
- Lakukan penulisan secara berurutan, seperti di atas, agar simpanan lama tidak pernah tiba setelah simpanan yang lebih baru, dan biarkan antrean tetap berjalan setelah kegagalan.
- Tampilkan "Tersimpan" hanya setelah promise selesai. Mengubah
appData.datadi memori tidak menyimpan apa pun. appDatatidak memiliki metodeget,set, atausave.
Kapan menyimpan
Simpan di checkpoint, akhir level, dan pembelian, bukan di setiap frame. Jangan pernah menyimpan selama pratinjau atau perekaman: tulis hanya saat sdk.host.phase bernilai play. Buat simpanan tetap kecil dan berversi dengan field Anda sendiri, misalnya saveVersion: 2, agar versi game berikutnya bisa memigrasikannya.
Tamu dan pemain yang sudah masuk
Anda tidak perlu memeriksa sdk.me.isLoggedIn sebelum menyimpan: tamu PlayDrop juga menyimpan progres mereka. Pemain tanpa sesi sama sekali menyimpan data di memori selama kunjungan itu, jadi penulisan yang selesai tidak membuktikan simpanan sampai ke cloud. Gunakan isLoggedIn hanya untuk fitur yang memerlukan akun sungguhan, seperti pembelian dan multiplayer yang di-hosting.
Offline
Di browser, simpanan memerlukan koneksi dan tidak ada antrean offline: lanjutkan permainan jika gagal dan coba lagi di checkpoint berikutnya. Host yang menyatakan dukungan data perangkat, seperti aplikasi PlayDrop yang bisa offline, menyimpan data di perangkat dan menyinkronkannya saat online.
Yang bukan fungsi simpanan
Simpanan bersifat privat untuk satu pemain dan satu game. Simpanan terpisah dari papan peringkat dan pencapaian, yang memiliki API sendiri dan tampil di PlayDrop. Status yang dibagikan antarpemain, seperti pertandingan atau dunia, harus berada di server game dalam koleksi MongoDB game Anda.
Uji
Simpanan terikat pada game yang sudah diunggah. Unggah versi privat setidaknya sekali, lalu uji dari url di tanda terima atau dari frame Dev lokal yang dijelaskan di menerbitkan dari aplikasi AI Anda.