PlayDropin client SDK selainpeleille
Valinnainen selain-SDK PlayDrop-peleille: kirjautuminen, tallennukset, tulostaulut, ostot, mainokset, ystävät, ohjaimet ja moninpeli yhdellä script-tagilla.
PlayDrop SDK on valinnainen: ilman sitä olevat pelit toimivat PlayDropissa. Lisää se alustaominaisuuksia varten, kuten pelaajan kirjautuminen, tallennukset, saavutukset ja tulostaulut, krediiteillä tehtävät ostot, mainokset, ystävät ja pelikortit PlayDrop Chatissa, jakolinkit, isännän hallitsema tauko ja ääni, ohjainsyöte, isännöity moninpeli ja tekoälyluonti. PlayDrop Cloud integroi sen puolestasi; PlayDrop Connectorin kanssa agenttisi lisää yhden script-tagin.
Lisää SDK ja noudata isännän elinkaarta
<script src="https://assets.playdrop.ai/sdk/playdrop.js"></script>
<script type="module">
const sdk = await playdrop.init();
// Render the game and prepare input, then:
sdk.host.ready();
sdk.host.onPause(() => pauseGame());
sdk.host.onResume(() => resumeGame());
sdk.host.onAudioPolicyChange(({ enabled }) => setAudioEnabled(enabled));
</script>Lataa SDK PlayDropin CDN:stä; pakettiasennusta ei tarvita. Renderöi ensimmäinen pelattava ruutu ja valmistele syöte ennen kuin kutsut sdk.host.ready(). Pysäytä simulaatio, kun isäntä keskeyttää, jatka luomatta päällekkäisiä silmukoita ja noudata isännän äänikäytäntöä.
Identiteetti, tallennukset ja kieli
sdk.me tarjoaa pelaajan identiteetin ja sdk.me.appData tallentaa yksityiset tallennukset; sdk.achievements ja sdk.leaderboards hoitavat saavutukset ja pisteet. Tallennukset, saavutukset ja tulostaulut toimivat ilman kirjautumisen ennakkotarkistusta. Käytä sdk.me.isLoggedIn-arvoa ominaisuuksiin, jotka vaativat oikean tilin, kuten ostot tai moninpeli. Esikatselu- ja kaappaustilat eivät saa kirjoittaa pelaajan edistymistä. sdk.host.language kertoo pelaajan kielen: toimita englanti sekä oma kielesi, jos se on eri. Pelisivun kääntäminen ei käännä pelin sisältöä. Luonnollisessa taukokohdassa, kuten voiton jälkeen, sdk.host.requestReview() antaa PlayDropin pyytää pelaajalta arvostelua, enintään kerran per peli; pelisi ei koskaan saa tietää vastausta, joten älä koskaan palkitse siitä.
Kirjastot, resurssit ja moninpeli
sdk.libs lataa tuetut Three.js-, Phaser-, Rapier-, nipplejs- ja Colyseus-versiot. sdk.assets tarjoaa katalogi-, paketti- ja resurssiviitteet; sdk.social tarjoaa ystävät, pelikortit ja jakotoiminnot. Isännöityä moninpeliä varten sdk.multiplayer.getConnection() palauttaa palvelimen osoitteen ja kirjautuneen pelaajan tunnisteen; liity Colyseus-clientillä. Sivu server SDK kattaa isännöidyt palvelimet; itse ylläpitämäsi palvelin ei tarvitse SDK:sta mitään. Vanhat relay-huoneen rajapinnat on poistettu käytöstä.
Testaa SDK:lla ennen julkaisua
Käynnistä tavallinen kehityspalvelimesi ja avaa https://www.playdrop.ai/creators/<username>/apps/game/<slug>/dev?url=http://localhost:5173/ Chromessa pelataksesi sitä oikeassa PlayDrop-kehyksessä SDK-isännän kanssa. Mikä tahansa localhost-portti tai https-URL-osoite käy. Tilin vaativat ominaisuudet, kuten tallennukset ja ostot, toimivat, kun peli on ladattu kerran; yksityinen lataus riittää. Selaimen mediageneroinnit toimivat asynkronisina töinä, joiden krediittihinnan isäntä vahvistaa. Katso pelisivun metatiedot kohdasta catalogue.json.
Pelaa yhdessä
Käytä await sdk.multiplayer.join("game") pelivaiheessa. Se liittyy itsenäisesti tai käyttää isännän ryhmävarausta. Ryhmävirhe hylkää liittymisen sen sijaan, että pelaajat hiljaa jaettaisiin toiseen huoneeseen. getConnection() säilyy välittömänä yhteystietorajapintana olemassa oleville peleille. Pidä sama huone kierrosten yli ja pidä verkkoyhteys käynnissä, kun isännän peittokuvat keskeyttävät pelisyötteen.
Käytä sdk.social.openParty() pelaajan toiminnosta avataksesi isännän ryhmäpopupin. Lue jäsenyys komennolla await sdk.social.getParty() tai sdk.social.onPartyChange(callback). Pelit eivät voi muuttaa alustan ryhmiä tai hallita mikrofoneja. Ryhmän ja huoneen puhe sijaitsee web-/natiivi-isännässä ja noudattaa pelaajan suostumusta, mykistystä, estoja ja käyttöönoton kelpoisuutta.
Sujuvaa huoneen toistoa varten kutsu sdk.multiplayer.voice.updateSpatialState({ listener: { position, forward, up }, speakers: [{ userId, position }] }) käyttäen äärellisiä { x, y, z }-vektoreita. Vihjeet vaikuttavat äänenvoimakkuuteen ja panorointiin, eivät koskaan valtuutukseen. Palvelin valvoo tiimejä ja läheisyyskelpoisuutta.
Käytä sdk.device.localPlayers ja sdk.device.onLocalPlayersChange(callback) valittujen paikallisten ohjainpaikkojen { playerIndex, gamepadKey } lukemiseen. Yhdistettyjen ohjainten luettelo on erillinen; yhteydetön paikka säilyttää identiteettinsä. Paikallinen tila ei voi liittyä verkkohuoneisiin. Kopioitava resepti playdrop-metagame/recipes/play-together havainnollistaa molemmat tilat, kaksi kohdetta ja huonekäytännöt.
Ohjaimet
Lue fyysiset ohjaimet ja PlayDropin puhelinohjaimet sdk.device-rajapinnan kautta, samalla tavalla kaikilla alustoilla. Kutsu enableControllerInput() kerran init():n jälkeen, lue gamepad(playerIndex) pelisilmukassa (0 on P1) ja käytä onButton painalluksiin ja vapautuksiin. Akselit ja painikkeet noudattavat selaimen standardia peliohjainjärjestystä; painikkeilla on sijaintinimet, kuten south ja east, ja pad.label("south") palauttaa kyseisen ohjaimen kehotteen, kuten "A" tai "Cross". Menu kuuluu PlayDropille ja keskeyttää pelin.
await sdk.device.enableControllerInput();
const stop = sdk.device.onButton(({ playerIndex, button, pressed }) => {
if (button === "south" && pressed) jump(playerIndex);
});
function update() {
const pad = sdk.device.gamepad(0);
if (pad?.connected) move(pad.axes[0], pad.axes[1]);
requestAnimationFrame(update);
}
update();Älä kutsu navigator.getGamepads(): puhelinohjaimet tavoittavat pelit vain SDK:n kautta, ja PlayDrop kirjaa varoituksen, kun peli lukee selaimen rajapintaa suoraan. Jos isäntä ei pysty tarjoamaan ohjainsyötettä, enableControllerInput() hylätään arvolla controller_input_unavailable tai controller_input_timeout ja peli jatkaa toimintaansa. pad.has("dpad") kertoo, onko ohjain olemassa; ilmoita pelisi tarvitsemat ohjaimet tiedostossa catalogue.json.