Spillets livssyklus på PlayDrop: lasting, klar, pause og lyd
Initialiser PlayDrop-SDK-en, meld klar ved første spillbare bilde, sett på pause og gjenoppta ryddig, følg lydreglene og forhåndslast filer for spill uten nett.
PlayDrop viser sin egen lasteskjerm, pausemeny, lydkontroll og andre vinduer rundt spillet ditt. Livssyklus-API-et holder spillet i takt med dem: det stopper mens PlayDrop setter det på pause, og spiller bare lyd når PlayDrops lydregler tillater det.
Initialiser, og meld deretter klar
Last SDK-en, les starttilstanden, abonner på endringer, klargjør den første skjermen og kall først da ready(). PlayDrop viser lasteskjermen sin frem til da.
<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>Kall ready() når den planlagte første skjermen er synlig og inndata fungerer, ikke før ressursene er lastet. sdk.host.error(message) forteller PlayDrop at spillet ikke kan starte. setLoadingState og firstFrameReady er eldre navn på det samme trinnet; bruk ready().
Faser: forhåndsvisning, spill og editor
sdk.host.phase er preview, play eller editor, og onPhaseChange rapporterer bytter. Forhåndsvisninger og opptak viser spillet uten en ekte økt: skriv aldri lagringer, poengsummer, prestasjoner eller kjøp utenfor play. sdk.host.mode er play til vanlig og dev i den lokale Dev-rammen.
Pause og gjenoppta
onPause(reason) og onResume(reason) utløses når spilleren åpner pausemenyen, skjuler fanen, logger inn, kjøper noe, eller når en annonse eller et PlayDrop-vindu dekker spillet. reason er en av tab_hidden, auth_prompt, purchase_flow, host_overlay, detail_hidden, route_change eller native_background; sdk.host.isPaused er den nåværende tilstanden.
Mens spillet står på pause, stopper du simulering og tidtakere. Når det gjenopptas, nullstiller du tidsmålingen mellom bildene slik at spillet ikke hopper fremover:
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 og Meny-knappen på en kontroller hører til PlayDrops pausemeny; ikke knytt dem til noe i spillet ditt. I et nettverksspill holder du romtilkoblingen i live under pause: at én spiller setter på pause, må ikke stoppe de andre.
Lyd
Les sdk.host.audioAllowed én gang etter init(), og følg deretter onAudioAllowedChange. Verdien kombinerer spillerens demping, fasen og pausen, og forblir sann under en pause med skjult fane, slik at musikken kan beholde posisjonen sin. onAudioPolicyChange rapporterer { enabled, reason, volume } når du også trenger årsaken eller vertens volum.
const audio = new AudioContext();
function setAudio(allowed) {
(allowed ? audio.resume() : audio.suspend()).catch(() => {});
}Lyden starter dempet til verten tillater den, og nettlesere krever fortsatt en handling fra spilleren før lyd spilles av. Behold en eventuell voluminnstilling i spillet som en ekstra grense; vertens demping vinner alltid. Fang opp avviste play()- og resume()-promiser.
Forhåndslast og spill uten nett i appene
De native appene kan laste ned et spills filer før det starter, og beholde dem for spill uten nett. Deklarer dem i catalogue.json:
{
"prefetch": { "required": ["game.js", "assets/level-1.png"], "optional": ["assets/music.mp3"] },
"offlineSupported": true
}Inngangssiden er alltid med. required-filer hentes før spillet starter, optional-filer etterpå. offlineSupported: true lar appene tilby spillet uten nett når de påkrevde filene er lagret. Ugyldige verdier ignoreres og blokkerer aldri en opplasting. Nettstedet laster spill som vanlig. For Instant-spill utgjør de påkrevde filene oppstartsstørrelsen.
På verter som oppgir støtte for enhetsdata, blir lagringer, poengsummer og prestasjoner oppnådd uten nett liggende på enheten og synkroniseres når den er på nett igjen; topplister uten nett viser bare spillerens egen rekord. I en nettleser finnes det ingen kø for lagringer uten nett, så håndter en mislykket lagring. Alt spillet laster fra internett, krever fortsatt tilkobling.
Haptikk
I de native appene gir sdk.haptics.selection(), impact("light" | "medium" | "heavy") og notification("success" | "warning" | "error") kort tilbakemelding; sdk.haptics.supported forteller om verten støtter det. De gjør ingenting på nettet og er uavhengige av demping.