Spelets livscykel på PlayDrop: inläsning, ready, paus och ljud
Initiera PlayDrop-SDK:t, signalera ready vid den första spelbara bildrutan, pausa och återuppta snyggt, följ ljudpolicyn och förladda filer för offlinespel.
PlayDrop visar en egen inläsningsskärm, pausmeny, ljudavstängning och andra fönster runt ditt spel. Livscykel-API:et håller spelet i takt med dem: det stannar medan PlayDrop pausar det och spelar bara ljud när PlayDrops ljudpolicy tillåter det.
Initiera och signalera sedan ready
Läs in SDK:t, läs det första tillståndet, prenumerera på ändringar, förbered den första skärmen och anropa först då ready(). PlayDrop visar sin inläsningsskärm fram till dess.
<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>Anropa ready() när den planerade första skärmen syns och inmatningen fungerar, inte innan dina assets har lästs in. sdk.host.error(message) talar om för PlayDrop att spelet inte kan starta. setLoadingState och firstFrameReady är äldre namn för samma steg; använd ready().
Faser: förhandsvisning, spel och editor
sdk.host.phase är preview, play eller editor, och onPhaseChange rapporterar byten. Förhandsvisningar och inspelningar visar spelet utan en riktig session: skriv aldrig sparningar, poäng, prestationer eller köp utanför play. sdk.host.mode är normalt play och dev i den lokala Dev-ramen.
Pausa och återuppta
onPause(reason) och onResume(reason) utlöses när spelaren öppnar pausmenyn, döljer fliken, loggar in eller köper något, eller när en annons eller ett PlayDrop-fönster täcker spelet. reason är någon av tab_hidden, auth_prompt, purchase_flow, host_overlay, detail_hidden, route_change eller native_background; sdk.host.isPaused är det aktuella tillståndet.
Stoppa simulering och timers medan spelet är pausat. När det återupptas nollställer du bildruteklockan så att spelet inte hoppar framåt:
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 och handkontrollens Menu-knapp hör till PlayDrops pausmeny; bind dem inte i ditt spel. I ett nätverksspel håller du rumsanslutningen vid liv under pausen: att en spelare pausar får inte stoppa de andra.
Ljud
Läs sdk.host.audioAllowed en gång efter init() och följ sedan onAudioAllowedChange. Värdet kombinerar spelarens ljudavstängning, fasen och pausen, och förblir true under en paus med dold flik så att musiken kan behålla sin position. onAudioPolicyChange rapporterar { enabled, reason, volume } när du också behöver orsaken eller värdens volym.
const audio = new AudioContext();
function setAudio(allowed) {
(allowed ? audio.resume() : audio.suspend()).catch(() => {});
}Ljudet är avstängt tills värden tillåter det, och webbläsare kräver fortfarande en spelarhandling innan ljud spelas. Behåll en eventuell volyminställning i spelet som en extra begränsning; värdens ljudavstängning vinner alltid. Fånga avvisade promise-objekt från play() och resume().
Förladda och spela offline i apparna
De inbyggda apparna kan ladda ner ett spels filer innan det startar och behålla dem för offlinespel. Deklarera dem i catalogue.json:
{
"prefetch": { "required": ["game.js", "assets/level-1.png"], "optional": ["assets/music.mp3"] },
"offlineSupported": true
}Startsidan ingår alltid. Filer i required hämtas före spelstart och filer i optional efteråt. offlineSupported: true låter apparna erbjuda spelet offline när dess obligatoriska filer har sparats. Ogiltiga värden ignoreras och stoppar aldrig en uppladdning. Webbplatsen läser in spel som vanligt. För Instant-spel utgör de obligatoriska filerna startstorleken.
På värdar som anger stöd för enhetsdata stannar sparningar, poäng och prestationer som görs offline på enheten och synkroniseras när den är online; topplistor offline visar bara spelarens eget rekord. I en webbläsare finns ingen offlinekö, så hantera en misslyckad sparning. Allt som spelet läser in från internet kräver fortfarande en anslutning.
Haptik
I de inbyggda apparna ger sdk.haptics.selection(), impact("light" | "medium" | "heavy") och notification("success" | "warning" | "error") kort återkoppling; sdk.haptics.supported talar om ifall värden klarar det. De gör ingenting på webben och påverkas inte av ljudavstängningen.