PlayDrop logoPlayDrop Studio
ErstellenSpieltauschVerdienenLernenConnectorsAssetsCommunityHilfe
PlayDrop logoPlayDrop Studio
ErstellenSpieltauschVerdienenLernenConnectorsAssetsCommunityHilfe
Anmelden
Laden, Pause und Audio
Dokumentation

Hier starten

ÜbersichtDein erstes SpielPlayDrop-SpieleFAQ

Mit Cloud erstellen

Cloud-ErstellungTarife & Generierungen

KI-App verbinden

Alle ConnectorsClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

Veröffentlichen und teilen

Aus deiner KI-App veröffentlichenEinfache HTML-SpielePakete und .playVeröffentlichen und importierenSpieldateienSichtbarkeit und ReichweiteBilder und Videos für den SpieleintragGenres und TagsLokalisierungSofortspiele

Spielerlebnis

Laden, Pause und AudioVollbild und sichere BereicheCloud-SpielständeLokale Partys und Controller

Zusammen spielen

Teilen, Freunde und EinladungenBestenlistenErfolgeOnline-Partys und SprachchatEchtzeit-Spielserver

Verdienen

MonetarisierungCredits & Belohnungen

Assets

Spiel-AssetsKI-Asset-GenerierungEigene Formate und Spielerkreationen

Referenz

Client-SDKServer-SDKcatalogue.jsonFehler und WiederherstellungFehlerbehebung
DokumentationLaden, Pause und Audio
Spielerlebnis

Spiel-Lebenszyklus auf PlayDrop: Laden, Bereit, Pause und Audio

PlayDrop-SDK initialisieren, beim ersten spielbaren Frame „bereit“ melden, sauber pausieren, der Audiorichtlinie folgen, Dateien für Apps und offline vorladen.

PlayDrop zeigt rund um dein Spiel einen eigenen Ladebildschirm, ein Pausenmenü, eine Stummschaltung und weitere Fenster. Die Lebenszyklus-API hält das Spiel damit im Gleichschritt: Es hält an, solange PlayDrop es pausiert, und spielt nur dann Ton ab, wenn die Audiorichtlinie von PlayDrop es erlaubt.

Initialisieren, dann „bereit“ melden

Lade das SDK, lies den Anfangszustand, abonniere Änderungen, bereite den ersten Bildschirm vor und rufe erst dann ready() auf. Bis dahin lässt PlayDrop seinen Ladebildschirm stehen.

html
<script src="https://assets.playdrop.ai/sdk/playdrop.js"></script>
<script type="module">
  const sdk = await playdrop.init();
  let paused = sdk.host.isPaused;
  setAudio(sdk.host.audioAllowed);
  sdk.host.onAudioAllowedChange(setAudio);
  sdk.host.onPause(() => { paused = true; });
  sdk.host.onResume(() => { paused = false; last = performance.now(); });

  try {
    await loadFirstLevel();
  } catch (error) {
    sdk.host.error("Could not load the first level");
    throw error;
  }
  drawFirstFrame();
  sdk.host.ready();
</script>

Rufe ready() auf, sobald der vorgesehene erste Bildschirm sichtbar ist und die Eingabe funktioniert, nicht schon bevor die Assets geladen sind. sdk.host.error(message) teilt PlayDrop mit, dass das Spiel nicht starten kann. setLoadingState und firstFrameReady sind ältere Namen für denselben Schritt; verwende ready().

Phasen: Vorschau, Spielen und Editor

sdk.host.phase ist preview, play oder editor, und onPhaseChange meldet Wechsel. Vorschauen und Aufnahmen zeigen das Spiel ohne echte Sitzung: Schreibe außerhalb von play niemals Spielstände, Punktwerte, Erfolge oder Käufe. sdk.host.mode ist normalerweise play und im lokalen Dev-Rahmen dev.

Pausieren und fortsetzen

onPause(reason) und onResume(reason) werden ausgelöst, wenn der Spieler das Pausenmenü öffnet, den Tab ausblendet, sich anmeldet oder etwas kauft oder wenn Werbung oder ein PlayDrop-Fenster das Spiel verdeckt. reason ist einer der Werte tab_hidden, auth_prompt, purchase_flow, host_overlay, detail_hidden, route_change oder native_background; sdk.host.isPaused ist der aktuelle Zustand.

Halte während der Pause Simulation und Timer an. Setze beim Fortsetzen deine Frame-Uhr zurück, damit das Spiel nicht nach vorn springt:

js
let last = performance.now();
function frame(now) {
  const dt = paused ? 0 : Math.min((now - last) / 1000, 0.05);
  last = now;
  if (!paused) update(dt);
  render();
  requestAnimationFrame(frame);
}
requestAnimationFrame(frame);

Escape und die Menütaste eines Controllers gehören zum Pausenmenü von PlayDrop; belege sie in deinem Spiel nicht. Halte in einem Netzwerkspiel die Verbindung zum Raum während der Pause aufrecht: Wenn ein Spieler pausiert, dürfen die anderen nicht angehalten werden.

Audio

Lies sdk.host.audioAllowed einmal nach init() und folge dann onAudioAllowedChange. Der Wert vereint die Stummschaltung des Spielers, die Phase und die Pause und bleibt während einer Pause durch einen ausgeblendeten Tab true, damit die Musik ihre Position behalten kann. onAudioPolicyChange meldet { enabled, reason, volume }, wenn du zusätzlich den Grund oder die Lautstärke des Hosts brauchst.

js
const audio = new AudioContext();
function setAudio(allowed) {
  (allowed ? audio.resume() : audio.suspend()).catch(() => {});
}

Audio startet stumm, bis der Host es erlaubt, und Browser brauchen trotzdem eine Geste des Spielers, bevor Ton abgespielt wird. Behalte eine Lautstärkeeinstellung im Spiel als zusätzliche Begrenzung; die Stummschaltung des Hosts hat immer Vorrang. Fange abgelehnte Promises von play() und resume() ab.

Vorladen und offline spielen in den Apps

Die nativen Apps können die Dateien eines Spiels vor dem Start herunterladen und sie zum Offline-Spielen behalten. Deklariere sie in der catalogue.json:

json
{
  "prefetch": { "required": ["game.js", "assets/level-1.png"], "optional": ["assets/music.mp3"] },
  "offlineSupported": true
}

Die Einstiegsseite ist immer dabei. required-Dateien werden vor dem Spielen geladen, optional-Dateien danach. offlineSupported: true erlaubt den Apps, das Spiel offline anzubieten, sobald seine benötigten Dateien gespeichert sind. Ungültige Werte werden ignoriert und blockieren nie einen Upload. Die Website lädt Spiele wie gewohnt. Bei Sofortspielen bilden die benötigten Dateien die Startgröße.

Auf Hosts, die Unterstützung für Gerätedaten angeben, bleiben offline erzielte Spielstände, Punktwerte und Erfolge auf dem Gerät und werden synchronisiert, sobald eine Verbindung besteht; Bestenlisten zeigen offline nur den eigenen Bestwert des Spielers. Im Browser gibt es keine Offline-Warteschlange, also behandle einen fehlgeschlagenen Speichervorgang. Alles, was das Spiel aus dem Internet lädt, braucht weiterhin eine Verbindung.

Haptisches Feedback

In den nativen Apps geben sdk.haptics.selection(), impact("light" | "medium" | "heavy") und notification("success" | "warning" | "error") kurzes Feedback; sdk.haptics.supported sagt, ob der Host das kann. Im Web tun sie nichts, und sie sind unabhängig von der Stummschaltung.

Verwandte Anleitungen

  • Vollbild und sichere BereichePlayDrop-Spiel bildschirmfüllend machen, HUD in sicheren Bereichen und mit den gemessenen reservedCorners des SDK frei von Host-Bedienelementen halten.
  • Cloud-SpielständeSpielerfortschritt mit sdk.me.appData und sdk.me.updateAppData speichern und laden, für Gäste und Angemeldete; Regeln für Schreiben, Vorschau und Offline.
  • SofortspieleWas ein Spiel zum Sofortspiel macht: Hochformat, Gastzugang, höchstens 10 MiB Startdateien, Start in zwei Sekunden, und der Unterschied zu regulären Spielen.
  • Client-SDKReferenz zum PlayDrop-Browser-SDK: init, Lebenszyklus, Spieler und Spielstände, Geräte, Soziales, Multiplayer, Shop, Werbung, Bestenlisten, Erfolge, Assets, KI.
ZurückSofortspiele und reguläre Spiele auf PlayDropWeiterVollbild, sichere Bereiche und HUD-Ecken für PlayDrop-Spiele
Markdown anzeigen
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Auf dieser Seite

Initialisieren, dann „bereit“ meldenPhasen: Vorschau, Spielen und EditorPausieren und fortsetzenAudioVorladen und offline spielen in den AppsHaptisches Feedback
Markdown anzeigen