PlayDrop logoPlayDrop Studio
MakenSpeelruilVerdienenLerenConnectorsAssetsCommunitySupport
PlayDrop logoPlayDrop Studio
MakenSpeelruilVerdienenLerenConnectorsAssetsCommunitySupport
Inloggen
Laden, pauze en audio
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
DocumentatieLaden, pauze en audio
Spelervaring

Levenscyclus van een PlayDrop-game: laden, klaar, pauze en audio

Initialiseer de PlayDrop-SDK, meld klaar bij het eerste speelbare frame, pauzeer en hervat netjes, volg het audiobeleid en laad vooraf voor apps en offline.

PlayDrop toont rond je game een eigen laadscherm, pauzemenu, dempknop en andere vensters. De levenscyclus-API houdt de game daarmee in de pas: hij stopt zolang PlayDrop hem pauzeert en speelt alleen geluid af als het audiobeleid van PlayDrop dat toestaat.

Initialiseer en meld daarna klaar

Laad de SDK, lees de begintoestand, abonneer je op wijzigingen, maak het eerste scherm klaar en roep pas dan ready() aan. Tot dat moment laat PlayDrop zijn laadscherm staan.

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>

Roep ready() aan zodra het ontworpen eerste scherm zichtbaar is en de invoer werkt, niet voordat de assets geladen zijn. sdk.host.error(message) laat PlayDrop weten dat de game niet kan starten. setLoadingState en firstFrameReady zijn oudere namen voor dezelfde stap; gebruik ready().

Fasen: voorbeeld, spelen en editor

sdk.host.phase is preview, play of editor, en onPhaseChange meldt wisselingen. Voorbeelden en opnames tonen de game zonder echte sessie: schrijf buiten play nooit saves, scores, prestaties of aankopen weg. sdk.host.mode is normaal play en dev in het lokale Dev-frame.

Pauzeren en hervatten

onPause(reason) en onResume(reason) worden geactiveerd wanneer de speler het pauzemenu opent, het tabblad verbergt, inlogt of iets koopt, of wanneer een advertentie of een PlayDrop-venster de game bedekt. reason is een van tab_hidden, auth_prompt, purchase_flow, host_overlay, detail_hidden, route_change of native_background; sdk.host.isPaused is de huidige toestand.

Stop tijdens de pauze de simulatie en de timers. Zet bij het hervatten je frameklok terug, zodat de game niet vooruitspringt:

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 en de Menu-knop van een controller horen bij het pauzemenu van PlayDrop; koppel ze niet aan acties in je game. Houd in een netwerkgame de verbinding met de kamer actief tijdens de pauze: als één speler pauzeert, mogen de anderen niet stilvallen.

Audio

Lees sdk.host.audioAllowed één keer na init() en volg daarna onAudioAllowedChange. Het combineert het dempen door de speler, de fase en de pauze, en blijft true tijdens een pauze door een verborgen tabblad, zodat muziek haar positie kan behouden. onAudioPolicyChange meldt { enabled, reason, volume } als je ook de reden of het volume van de host nodig hebt.

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

Audio begint gedempt tot de host het toestaat, en browsers hebben nog steeds een actie van de speler nodig voordat er geluid klinkt. Houd een volume-instelling in de game aan als extra limiet; het dempen door de host wint altijd. Vang geweigerde promises van play() en resume() af.

Vooraf laden en offline spelen in de apps

De native apps kunnen de bestanden van een game downloaden voordat hij start en ze bewaren om offline te spelen. Declareer ze in catalogue.json:

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

De startpagina hoort er altijd bij. Bestanden in required worden vóór het spelen opgehaald, die in optional daarna. Met offlineSupported: true kunnen de apps de game offline aanbieden zodra de vereiste bestanden zijn opgeslagen. Ongeldige waarden worden genegeerd en blokkeren nooit een upload. De website laadt games zoals gewoonlijk. Voor Instantgames bepalen de vereiste bestanden de startgrootte.

Op hosts die ondersteuning voor apparaatgegevens aangeven, blijven saves, scores en prestaties die offline zijn behaald op het apparaat en worden ze gesynchroniseerd zodra er verbinding is; offline tonen ranglijsten alleen het eigen record van de speler. In een browser is er geen offlinewachtrij, dus vang een mislukte save af. Alles wat de game van internet laadt, heeft nog steeds een verbinding nodig.

Haptische feedback

In de native apps geven sdk.haptics.selection(), impact("light" | "medium" | "heavy") en notification("success" | "warning" | "error") korte feedback; sdk.haptics.supported meldt of de host dat kan. Op het web doen ze niets, en ze staan los van dempen.

Gerelateerde gidsen

  • Schermvullend en veilige zonesLaat een PlayDrop-game het scherm vullen en houd de HUD binnen de CSS-veilige zones en vrij van de hostknoppen met de gemeten reservedCorners van de SDK.
  • CloudsavesSla 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.
  • InstantgamesWat een PlayDrop-game Instant maakt: staand spelen, gasttoegang, maximaal 10 MiB startbestanden, start binnen twee seconden, en het verschil met een gewone game.
  • Client-SDKDe PlayDrop-browser-SDK: init, host, speler en saves, controllers, sociaal, multiplayer, winkel, advertenties, ranglijsten, prestaties, assets en AI.
VorigeInstantgames en gewone games op PlayDropVolgendeSchermvullend, veilige zones en HUD-hoeken voor PlayDrop-games
Markdown bekijken
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

Op deze pagina

Initialiseer en meld daarna klaarFasen: voorbeeld, spelen en editorPauzeren en hervattenAudioVooraf laden en offline spelen in de appsHaptische feedback
Markdown bekijken