PlayDrop oyunları için bulut kayıtları
İlerlemeyi sdk.me.appData ve sdk.me.updateAppData ile kaydet ve yükle; misafirler ve giriş yapmış oyuncular için yazma, önizleme ve çevrimdışı kuralları.
Bulut kayıtları her oyuncunun oyunundaki ilerlemesini PlayDrop’ta saklar; böylece ilerleme web sitesinden uygulamalara kadar oyuncuyla gelir. Her oyuncu ve oyun için bir JSON nesnesi saklanır; sunucuya ya da çok oyunculu odaya gerek yoktur.
Oku ve yaz
init() sonrasında sdk.me.appData kaydedilmiş anlık görüntüdür: { data, seq, ts_event, ts_arrival } ya da ilk kayıttan önce null. Nesneni data içinden oku. Nesnenin tamamını, kaydedilen anlık görüntüyü döndüren ve sdk.me.appData değerini güncelleyen updateAppData ile yaz.
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
}- Her yazma işlemi kaydedilmiş nesnenin tamamını değiştirir: hâlâ ihtiyaç duyduğun her alanı koru.
- Yazma işlemlerini yukarıdaki gibi sıraya koy; böylece eski bir kayıt asla yenisinden sonra gelmez. Bir hatadan sonra da kuyruğu sürdür.
- “Kaydedildi” mesajını yalnızca promise tamamlandıktan sonra göster.
appData.datadeğerini bellekte değiştirmek hiçbir şeyi kaydetmez. appDatanesnesininget,setveyasavemetotları yoktur.
Ne zaman kaydetmeli
Her karede değil; kontrol noktalarında, seviye sonlarında ve satın alımlarda kaydet. Önizlemeler ya da görüntü yakalamaları sırasında asla kaydetme: yalnızca sdk.host.phase değeri play olduğunda yaz. Kaydı küçük tut ve saveVersion: 2 gibi kendi alanınla sürümle; böylece oyunun sonraki bir sürümü onu taşıyabilir.
Misafirler ve giriş yapmış oyuncular
Kaydetmeden önce sdk.me.isLoggedIn kontrolüne gerek yok: PlayDrop misafirleri de kayıtlarını korur. Hiç oturumu olmayan bir oyuncu kaydı o ziyaret boyunca bellekte tutar; yani tamamlanan bir yazma işlemi kaydın buluta ulaştığını kanıtlamaz. isLoggedIn değerini yalnızca satın alımlar ve barındırılan çok oyunculu mod gibi gerçek hesap gerektiren özellikler için kullan.
Çevrimdışı
Tarayıcıda kayıtlar bağlantı gerektirir ve çevrimdışı kuyruk yoktur: hata olursa oynamaya devam et ve bir sonraki kontrol noktasında tekrar dene. Çevrimdışı çalışabilen PlayDrop uygulamaları gibi cihaz verisi desteği bildiren ana uygulamalar kayıtları cihazda tutar ve çevrimiçi olunca eşitler.
Kayıtlar ne değildir
Kayıtlar tek bir oyuncuya ve tek bir oyuna özeldir. Kendi API’leri olan ve PlayDrop’ta görünen liderlik tablolarından ve başarımlardan ayrıdır. Bir maç ya da dünya gibi oyuncular arasında paylaşılan durum, oyununun MongoDB koleksiyonlarında, bir oyun sunucusunda tutulur.
Test et
Kayıtlar yüklenmiş bir oyuna aittir. En az bir kez özel bir sürüm yükle, sonra makbuzdaki url adresinden ya da yapay zeka uygulamandan yayınlama kılavuzunda anlatılan yerel Dev çerçevesinden test et.