PlayDrop logoPlayDrop Studio
MakenSpeelruilVerdienenLerenConnectorsAssetsCommunitySupport
PlayDrop logoPlayDrop Studio
MakenSpeelruilVerdienenLerenConnectorsAssetsCommunitySupport
Inloggen
Cloudsaves
Documentatie

Begin hier

OverzichtJe eerste gamePlayDrop-gamesFAQ

Maken met Cloud

Maken met CloudAbonnementen en generaties

Verbind je AI-app

Alle connectorsClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Publiceren en delen

Publiceren vanuit je AI-appEenvoudige HTML-gamesVerpakken en .playPubliceren en importerenGamebestandenZichtbaarheid en bereikAfbeeldingen en video voor de gamepaginaGenres en tagsLokalisatieInstantgames

Spelervaring

Laden, pauze en audioSchermvullend en veilige zonesCloudsavesLokale groepen en controllers

Samen spelen

Delen, vrienden en uitnodigingenRanglijstenPrestatiesOnlinegroepen en spraakRealtime gameservers

Verdienen

InkomstenCredits en beloningen

Assets

Game-assetsAI-assets genererenEigen formaten en creaties

Referentie

Client-SDKServer-SDKcatalogue.jsonFouten en herstelProblemen oplossen
DocumentatieCloudsaves
Spelervaring

Cloudsaves voor PlayDrop-games

Sla voortgang op en laad die met sdk.me.appData en sdk.me.updateAppData, voor gasten en ingelogde spelers, met regels voor opslaan, voorbeelden en offline.

Cloudsaves bewaren de voortgang van elke speler in je game op PlayDrop, zodat die meegaat van de website naar de apps. Per speler en game wordt één JSON-object opgeslagen; je hebt geen server of multiplayerkamer nodig.

Lezen en schrijven

Na init() is sdk.me.appData de opgeslagen momentopname: { data, seq, ts_event, ts_arrival }, of null vóór de eerste save. Lees je object uit data. Schrijf het hele object met updateAppData; dat retourneert de opgeslagen momentopname en werkt sdk.me.appData bij.

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
}
  • Elke schrijfactie vervangt het volledige opgeslagen object: behoud elk veld dat je nog nodig hebt.
  • Voer schrijfacties na elkaar uit, zoals hierboven, zodat een oudere save nooit na een nieuwere aankomt, en houd de wachtrij draaiende na een fout.
  • Toon ‘Opgeslagen’ pas nadat de promise is geslaagd. appData.data in het geheugen wijzigen slaat niets op.
  • appData heeft geen methoden get, set of save.

Wanneer opslaan

Sla op bij checkpoints, aan het einde van levels en bij aankopen, niet elk frame. Sla nooit op tijdens voorbeelden of opnames: schrijf alleen als sdk.host.phase gelijk is aan play. Houd een save klein en geef hem een versie met een eigen veld, zoals saveVersion: 2, zodat een latere versie van de game hem kan omzetten.

Gasten en ingelogde spelers

Je hoeft sdk.me.isLoggedIn niet te controleren voordat je opslaat: PlayDrop-gasten behouden hun saves ook. Een speler zonder enige sessie houdt de save tijdens dat bezoek in het geheugen, dus een geslaagde schrijfactie bewijst niet dat de save de cloud heeft bereikt. Gebruik isLoggedIn alleen voor functies die een echt account nodig hebben, zoals aankopen en gehoste multiplayer.

Offline

In een browser hebben saves een verbinding nodig en is er geen offlinewachtrij: speel door bij een fout en probeer het opnieuw bij het volgende checkpoint. Hosts die ondersteuning voor apparaatgegevens aangeven, zoals PlayDrop-apps die offline werken, bewaren saves op het apparaat en synchroniseren ze zodra er verbinding is.

Wat saves niet zijn

Saves zijn privé voor één speler en één game. Ze staan los van ranglijsten en prestaties, die hun eigen API's hebben en op PlayDrop verschijnen. Gedeelde gegevens tussen spelers, zoals een wedstrijd of een wereld, horen op een gameserver in de MongoDB-collecties van je game.

Testen

Saves horen bij een geüploade game. Upload minstens één keer een privéversie en test daarna via de url uit het uploadbewijs of via het lokale Dev-frame dat wordt beschreven in publiceren vanuit je AI-app.

Gerelateerde gidsen

  • RanglijstenDeclareer ranglijsten in catalogue.json, verstuur scores met sdk.leaderboards en toon de top en de buren van de speler. Scoretypen, limieten en updateregels.
  • PrestatiesDeclareer standaard- en incrementele prestaties met iconen in catalogue.json, ontgrendel ze en meld voortgang met sdk.achievements.
  • Realtime gameserversDraai een gehoste Colyseus 0.17-server met een MongoDB-database voor je game, verbind vanuit de browser met de SDK, test met twee spelers en ken de limieten.
VorigeSchermvullend, veilige zones en HUD-hoeken voor PlayDrop-gamesVolgendeLokale groepen, gamepads en telefooncontrollers in PlayDrop-games
Markdown bekijken
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Op deze pagina

Lezen en schrijvenWanneer opslaanGasten en ingelogde spelersOfflineWat saves niet zijnTesten
Markdown bekijken