PlayDrop klient-SDK for nettleserspill
Valgfri nettleser-SDK for PlayDrop-spill: innlogging, lagring, topplister, kjøp, annonser, venner, kontrollere og flerspiller, med én script-tag.
PlayDrop-SDK-en er valgfri: spill uten den kan spilles på PlayDrop. Legg den til for plattformfunksjoner som spillerinnlogging, lagring, prestasjoner og topplister, kjøp med kreditter, annonser, venner og spillkort i PlayDrop Chat, delingslenker, pause og lyd styrt av hosten, kontrollerinndata, hostet flerspiller og KI-generering. PlayDrop Cloud integrerer den for deg. Med PlayDrop Connector legger agenten din til én script-tag.
Legg til SDK-en og følg host-livssyklusen
<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>Last SDK-en fra PlayDrops CDN. Du trenger ingen pakkeinstallasjon. Tegn den første spillbare ruten og klargjør inndata før du kaller sdk.host.ready(). Sett simuleringen på pause når hosten pauser, gjenoppta uten doble løkker, og følg hostens lydregler.
Identitet, lagring og språk
sdk.me eksponerer spilleridentiteten, og sdk.me.appData lagrer private lagringer. sdk.achievements og sdk.leaderboards håndterer prestasjoner og poengsummer. Lagringer, prestasjoner og topplister fungerer uten en forhåndssjekk av innlogging. Bruk sdk.me.isLoggedIn for funksjoner som krever en ekte konto, som kjøp eller flerspiller. Forhåndsvisnings- og opptaksmodus må ikke skrive spillerfremdrift. sdk.host.language gir spillerens språk: lever engelsk pluss ditt eget språk hvis det er et annet. Å oversette en oppføring oversetter ikke spillinnholdet. Ved en naturlig pause, for eksempel en seier, lar sdk.host.requestReview() PlayDrop be spilleren om en anmeldelse, høyst én gang per spill. Spillet ditt får aldri vite svaret, så belønn det aldri.
Biblioteker, ressurser og flerspiller
sdk.libs laster støttede versjoner av Three.js, Phaser, Rapier, nipplejs og Colyseus. sdk.assets gir referanser til katalog, pakker og ressurser. sdk.social gir venner, spillkort og delingshandlinger. For hostet flerspiller returnerer sdk.multiplayer.getConnection() serveradressen og tokenet til den innloggede spilleren. Bli med via Colyseus-klienten. Siden om server-SDK-en dekker hostede servere. En server du kjører selv, trenger ingenting fra SDK-en. De gamle API-ene for relay-rom er avviklet.
Test med SDK-en før du publiserer
Kjør den vanlige utviklingsserveren din og åpne https://www.playdrop.ai/creators/<username>/apps/game/<slug>/dev?url=http://localhost:5173/ i Chrome for å spille i den ekte PlayDrop-rammen med SDK-hosten. Alle localhost-porter og https-URL-er fungerer. Funksjoner som krever en konto, som lagring og kjøp, fungerer når spillet er lastet opp én gang. En privat opplasting er nok. Mediegenerering i nettleseren kjører som asynkrone oppgaver med en kredittkostnad som hosten bekrefter. Se catalogue.json for metadata om oppføringen.
Spill sammen
Bruk await sdk.multiplayer.join("game") i spillfasen. Den blir med uavhengig, eller bruker hostens gruppereservasjon. En gruppefeil avviser kallet i stedet for å stille og rolig dele spillerne inn i et annet rom. getConnection() er fortsatt API-et for umiddelbare tilkoblingsdetaljer for eksisterende spill. Behold det samme rommet gjennom rundene, og hold nettverket i gang mens host-overlegg pauser spillinndata.
Bruk sdk.social.openParty() fra en spillerhandling for å åpne hostens gruppe-popup. Les medlemskap med await sdk.social.getParty() eller sdk.social.onPartyChange(callback). Spill kan ikke endre plattformgrupper eller styre mikrofoner. Gruppe- og romstemme ligger i web-/native-hosten og er fortsatt underlagt spillerens samtykke, demping, blokkeringer og kvalifisering for utrulling.
For jevn avspilling i rommet kaller du sdk.multiplayer.voice.updateSpatialState({ listener: { position, forward, up }, speakers: [{ userId, position }] }) med endelige { x, y, z }-vektorer. Hint påvirker volum og panorering, aldri autorisasjon. Serveren håndhever lag og nærhetskvalifisering.
Bruk sdk.device.localPlayers og sdk.device.onLocalPlayersChange(callback) for de valgte lokale kontrollerplassene { playerIndex, gamepadKey }. Oversikten over tilkoblede kontrollere er adskilt. En frakoblet plass beholder identiteten sin. Lokal modus kan ikke bli med i nettrom. Den kopierbare oppskriften playdrop-metagame/recipes/play-together viser begge moduser, to destinasjoner og romregler.
Kontrollere
Les fysiske kontrollere og PlayDrop-telefonkontrollere gjennom sdk.device, på samme måte på alle plattformer. Kall enableControllerInput() én gang etter init(), les gamepad(playerIndex) i spillløkken (0 er S1), og bruk onButton for trykk og slipp. Akser og knapper følger nettleserens standardrekkefølge for spillkontrollere. Knapper har posisjonsnavn som south og east, og pad.label("south") returnerer teksten for den kontrolleren, for eksempel "A" eller "Cross". Menu tilhører PlayDrop og setter spillet på pause.
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();Ikke kall navigator.getGamepads(): telefonkontrollere når spill bare via SDK-en, og PlayDrop logger en advarsel når et spill leser nettleser-API-et direkte. Hvis hosten ikke kan levere kontrollerinndata, avviser enableControllerInput() med controller_input_unavailable eller controller_input_timeout, og spillet fortsetter å kjøre. pad.has("dpad") forteller om en kontroll finnes. Deklarer kontrollene spillet ditt trenger i catalogue.json.