Pelin elinkaari PlayDropissa: lataus, valmius, tauko ja ääni
Alusta SDK, ilmoita valmiudesta ensimmäisellä pelattavalla ruudulla, hoida tauko ja jatko, noudata äänikäytäntöä ja esilataa tiedostot offline-käyttöön.
PlayDrop näyttää pelisi ympärillä oman latausruutunsa, taukovalikkonsa, mykistyssäätimensä ja muita ikkunoita. Elinkaarirajapinta pitää pelin tahdissa niiden kanssa: peli pysähtyy, kun PlayDrop keskeyttää sen, ja soittaa ääntä vain, kun PlayDropin äänikäytäntö sallii.
Alusta ja ilmoita sitten valmiudesta
Lataa SDK, lue alkutila, tilaa muutokset, valmistele ensimmäinen ruutu ja kutsu vasta sitten ready(). PlayDrop pitää latausruutunsa näkyvissä siihen asti.
<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>Kutsu ready(), kun suunniteltu ensimmäinen ruutu näkyy ja syöte toimii, älä ennen kuin resurssit ovat latautuneet. sdk.host.error(message) kertoo PlayDropille, ettei peli voi käynnistyä. setLoadingState ja firstFrameReady ovat saman vaiheen vanhempia nimiä; käytä ready()-kutsua.
Vaiheet: esikatselu, pelaaminen ja editori
sdk.host.phase on preview, play tai editor, ja onPhaseChange ilmoittaa vaihdoksista. Esikatselut ja kaappaukset näyttävät pelin ilman oikeaa istuntoa: älä koskaan kirjoita tallennuksia, pisteitä, saavutuksia tai ostoja play-vaiheen ulkopuolella. sdk.host.mode on tavallisesti play ja paikallisessa Dev-kehyksessä dev.
Tauko ja jatkaminen
onPause(reason) ja onResume(reason) laukeavat, kun pelaaja avaa taukovalikon, piilottaa välilehden, kirjautuu sisään tai ostaa jotain, tai kun mainos tai PlayDropin ikkuna peittää pelin. reason on jokin arvoista tab_hidden, auth_prompt, purchase_flow, host_overlay, detail_hidden, route_change tai native_background; sdk.host.isPaused kertoo nykyisen tilan.
Pysäytä tauon ajaksi simulaatio ja ajastimet. Kun peli jatkuu, nollaa ruutukellosi, jotta peli ei hyppää eteenpäin:
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 ja ohjaimen Menu-painike kuuluvat PlayDropin taukovalikolle; älä sido niitä pelissäsi. Verkkopelissä pidä huoneyhteys auki tauon aikana: yhden pelaajan tauko ei saa pysäyttää muita.
Ääni
Lue sdk.host.audioAllowed kerran init()-kutsun jälkeen ja seuraa sitten onAudioAllowedChange-tapahtumaa. Arvo yhdistää pelaajan mykistyksen, vaiheen ja tauon, ja se pysyy tosena piilotetun välilehden tauon aikana, jotta musiikki voi säilyttää kohtansa. onAudioPolicyChange ilmoittaa { enabled, reason, volume }, kun tarvitset myös syyn tai isännän äänenvoimakkuuden.
const audio = new AudioContext();
function setAudio(allowed) {
(allowed ? audio.resume() : audio.suspend()).catch(() => {});
}Ääni on aluksi mykistetty, kunnes isäntä sallii sen, ja selaimet vaativat silti pelaajan eleen ennen kuin ääntä kuuluu. Pidä pelin oma äänenvoimakkuusasetus lisärajana; isännän mykistys voittaa aina. Ota kiinni hylätyt play()- ja resume()-lupaukset.
Esilataus ja offline-pelaaminen sovelluksissa
Natiivisovellukset voivat ladata pelin tiedostot ennen sen käynnistymistä ja säilyttää ne offline-pelaamista varten. Ilmoita ne tiedostossa catalogue.json:
{
"prefetch": { "required": ["game.js", "assets/level-1.png"], "optional": ["assets/music.mp3"] },
"offlineSupported": true
}Aloitussivu on aina mukana. required-tiedostot haetaan ennen pelaamista, optional-tiedostot sen jälkeen. offlineSupported: true antaa sovellusten tarjota pelin offline-tilassa, kun sen pakolliset tiedostot on tallennettu. Virheelliset arvot ohitetaan, eivätkä ne koskaan estä latausta. Verkkosivusto lataa pelit tavalliseen tapaan. Instant-peleissä pakolliset tiedostot muodostavat aloituskoon.
Isännissä, jotka ilmoittavat tukevansa laitedataa, offline-tilassa tehdyt tallennukset, pisteet ja saavutukset pysyvät laitteella ja synkronoituvat, kun yhteys palaa; offline-tulostaulut näyttävät vain pelaajan oman ennätyksen. Selaimessa offline-jonoa ei ole, joten käsittele epäonnistunut tallennus. Kaikki, mitä peli lataa internetistä, vaatii yhä yhteyden.
Haptiikka
Natiivisovelluksissa sdk.haptics.selection(), impact("light" | "medium" | "heavy") ja notification("success" | "warning" | "error") antavat lyhyen tuntopalautteen; sdk.haptics.supported kertoo, pystyykö isäntä siihen. Verkossa ne eivät tee mitään, eivätkä ne riipu mykistyksestä.