PlayDrop logoPlayDrop Studio
TwórzWymiana rozgrywekZdobywajUcz sięKonektoryZasobySpołecznośćWsparcie
PlayDrop logoPlayDrop Studio
TwórzWymiana rozgrywekZdobywajUcz sięKonektoryZasobySpołecznośćWsparcie
Zaloguj się
Zapisy w chmurze
Dokumentacja

Zacznij tutaj

PrzeglądTwoja pierwsza graGry PlayDropFAQ

Twórz z Cloud

Tworzenie w CloudPlany i generowania

Połącz swoją aplikację AI

Wszystkie konektoryClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Publikuj i udostępniaj

Publikuj z aplikacji AIProste gry HTMLPakowanie i .playPublikowanie i importPliki gryWidoczność i zasięgGrafika i wideo strony gryGatunki i tagiLokalizacjaGry Instant

Wrażenia z gry

Ładowanie, pauza i dźwiękPełny ekran i bezpieczne obszaryZapisy w chmurzeGrupy lokalne i kontrolery

Wspólna gra

Udostępnianie, znajomi i zaproszeniaRankingiOsiągnięciaGrupy online i głosSerwery czasu rzeczywistego

Zarabiaj

ZarabianieKredyty i nagrody

Zasoby

Zasoby gryGenerowanie zasobów z AIWłasne formaty i twórczość graczy

Dokumentacja techniczna

SDK klientaSDK serweracatalogue.jsonBłędy i odzyskiwanieRozwiązywanie problemów
DokumentacjaZapisy w chmurze
Wrażenia z gry

Zapisy w chmurze w grach PlayDrop

Zapisuj i wczytuj postępy graczy przez sdk.me.appData i sdk.me.updateAppData, dla gości i zalogowanych, z zasadami zapisu, podglądów i gry offline.

Zapisy w chmurze przechowują postępy każdego gracza w twojej grze w PlayDrop, więc idą za nim ze strony internetowej do aplikacji. Przechowywany jest jeden obiekt JSON na gracza i grę; nie jest potrzebny żaden serwer ani pokój wieloosobowy.

Odczyt i zapis

Po init() sdk.me.appData to zapisana migawka: { data, seq, ts_event, ts_arrival } albo null przed pierwszym zapisem. Odczytaj swój obiekt z data. Zapisuj cały obiekt przez updateAppData, które zwraca zapisaną migawkę i aktualizuje sdk.me.appData.

js
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
}
  • Każdy zapis zastępuje cały zapisany obiekt: zachowaj każde pole, którego nadal potrzebujesz.
  • Wykonuj zapisy kolejno, jak powyżej, aby starszy zapis nigdy nie dotarł po nowszym, i nie zatrzymuj kolejki po błędzie.
  • Pokazuj „Zapisano” dopiero wtedy, gdy obietnica się spełni. Zmiana appData.data w pamięci niczego nie zapisuje.
  • appData nie ma metod get, set ani save.

Kiedy zapisywać

Zapisuj w punktach kontrolnych, na końcu poziomów i przy zakupach, a nie w każdej klatce. Nigdy nie zapisuj podczas podglądów ani przechwytywania: zapisuj tylko wtedy, gdy sdk.host.phase ma wartość play. Utrzymuj zapis mały i wersjonowany własnym polem, takim jak saveVersion: 2, aby późniejsza wersja gry mogła go zmigrować.

Goście i zalogowani gracze

Nie musisz sprawdzać sdk.me.isLoggedIn przed zapisem: goście PlayDrop też zachowują swoje zapisy. Gracz bez żadnej sesji przechowuje zapis w pamięci tylko na czas tej wizyty, więc pomyślny zapis nie dowodzi, że dotarł on do chmury. Używaj isLoggedIn tylko w funkcjach wymagających prawdziwego konta, takich jak zakupy i hostowany tryb wieloosobowy.

Offline

W przeglądarce zapisy wymagają połączenia i nie ma kolejki offline: przy błędzie pozwól grać dalej i ponów zapis w następnym punkcie kontrolnym. Hosty obsługujące dane na urządzeniu, takie jak aplikacje PlayDrop działające offline, przechowują zapisy na urządzeniu i synchronizują je po połączeniu z siecią.

Czym zapisy nie są

Zapisy są prywatne dla jednego gracza i jednej gry. Są oddzielne od rankingów i osiągnięć, które mają własne API i pojawiają się w PlayDrop. Stan wspólny dla wielu graczy, taki jak mecz czy świat, należy do serwera gry, w kolekcjach MongoDB twojej gry.

Testuj

Zapisy należą do przesłanej gry. Prześlij wersję prywatną co najmniej raz, a potem testuj z url z potwierdzenia przesłania albo z lokalnej ramki Dev opisanej w publikowaniu z aplikacji AI.

Powiązane poradniki

  • RankingiZadeklaruj rankingi w catalogue.json, wysyłaj wyniki przez sdk.leaderboards i pokazuj czołówkę oraz sąsiadów gracza. Typy wyników, limity i zasady zmian.
  • OsiągnięciaZadeklaruj osiągnięcia standardowe i przyrostowe z ikonami w catalogue.json, odblokowuj je i zgłaszaj postęp przez sdk.achievements.
  • Serwery czasu rzeczywistegoUruchom hostowany serwer Colyseus 0.17 z bazą MongoDB dla swojej gry, łącz się z przeglądarki przez SDK, testuj z dwoma graczami i poznaj limity.
PoprzedniPełny ekran, bezpieczne obszary i rogi interfejsu w grach PlayDropNastępnyGrupy lokalne, gamepady i kontrolery na telefonie w grach PlayDrop
Pokaż Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Na tej stronie

Odczyt i zapisKiedy zapisywaćGoście i zalogowani graczeOfflineCzym zapisy nie sąTestuj
Pokaż Markdown