PlayDrops klient-SDK för webbläsarspel
Valfritt webbläsar-SDK för alla PlayDrop-spel: inloggning, sparfiler, topplistor, köp, annonser, vänner, handkontroller och flerspelarläge med en script-tagg.
PlayDrop-SDK:t är valfritt: spel utan det går att spela på PlayDrop. Lägg till det för plattformsfunktioner som spelarinloggning, sparfiler, prestationer och topplistor, köp med krediter, annonser, vänner och spelkort i PlayDrop Chat, delningslänkar, paus och ljud som hanteras av värden, handkontrollsinmatning, hostat flerspelarläge och AI-generering. PlayDrop Cloud integrerar det åt dig. Med PlayDrop Connector lägger din agent till en script-tagg.
Lägg till SDK:t och följ värdens livscykel
<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>Läs in SDK:t från PlayDrops CDN. Ingen paketinstallation behövs. Rendera den första spelbara bildrutan och förbered inmatning innan du anropar sdk.host.ready(). Pausa simuleringen när värden pausar, återuppta utan dubbla loopar och följ värdens ljudpolicy.
Identitet, sparfiler och språk
sdk.me ger spelarens identitet och sdk.me.appData lagrar privata sparfiler. sdk.achievements och sdk.leaderboards hanterar prestationer och poäng. Sparfiler, prestationer och topplistor fungerar utan förhandskontroll av inloggning. Använd sdk.me.isLoggedIn för funktioner som kräver ett riktigt konto, som köp eller flerspelarläge. Förhandsvisnings- och inspelningslägen får inte skriva spelarens framsteg. sdk.host.language ger spelarens språk: leverera engelska plus ditt eget språk om det är ett annat. Att översätta en spelsida översätter inte spelets innehåll. Vid en naturlig paus, som en vinst, låter sdk.host.requestReview() PlayDrop be spelaren om en recension, högst en gång per spel. Ditt spel får aldrig veta svaret, så belöna det aldrig.
Bibliotek, assets och flerspelarläge
sdk.libs läser in versioner som stöds av Three.js, Phaser, Rapier, nipplejs och Colyseus. sdk.assets ger referenser till katalog, paket och assets. sdk.social ger vänner, spelkort och delningsåtgärder. För hostat flerspelarläge returnerar sdk.multiplayer.getConnection() serveradressen och den inloggade spelarens token. Gå med via Colyseus-klienten. Sidan om server-SDK:t beskriver hostade servrar. En server som du driver själv behöver ingenting från SDK:t. De gamla API:erna för relärum är avvecklade.
Testa med SDK:t innan du publicerar
Kör din vanliga utvecklingsserver och öppna https://www.playdrop.ai/creators/<username>/apps/game/<slug>/dev?url=http://localhost:5173/ i Chrome för att spela i den riktiga PlayDrop-ramen med SDK-värden. Valfri localhost-port eller https-adress fungerar. Funktioner som kräver ett konto, som sparfiler och köp, fungerar när spelet har laddats upp en gång. En privat uppladdning räcker. Mediagenerering i webbläsaren körs som asynkrona uppgifter med en kreditkostnad som bekräftas av värden. Se catalogue.json för metadata till spelsidan.
Spela tillsammans
Använd await sdk.multiplayer.join("game") i spelfasen. Den går med fristående eller använder värdens gruppreservation. Ett gruppfel avvisar anropet i stället för att tyst dela upp spelarna i ett annat rum. getConnection() är fortfarande API:et för omedelbar anslutningsinformation för befintliga spel. Behåll samma rum mellan omgångarna och håll nätverket igång medan värdens överlägg pausar spelets inmatning.
Använd sdk.social.openParty() från en spelaråtgärd för att öppna värdens grupprutor. Läs medlemskap med await sdk.social.getParty() eller sdk.social.onPartyChange(callback). Spel kan inte ändra plattformsgrupper eller styra mikrofoner. Grupp- och rumsröst finns i webb- och native-värden och styrs fortfarande av spelarens samtycke, ljudavstängning, blockeringar och behörighet i utrullningen.
För mjuk uppspelning i rummet anropar du sdk.multiplayer.voice.updateSpatialState({ listener: { position, forward, up }, speakers: [{ userId, position }] }) med ändliga { x, y, z }-vektorer. Tips påverkar volym och panorering, aldrig behörighet. Servern styr lag och närhetsbehörighet.
Använd sdk.device.localPlayers och sdk.device.onLocalPlayersChange(callback) för de valda lokala handkontrollplatserna { playerIndex, gamepadKey }. Förteckningen över anslutna handkontroller är separat. En frånkopplad plats behåller sin identitet. Lokalt läge kan inte gå med i onlinerum. Receptet playdrop-metagame/recipes/play-together, som går att kopiera, visar båda lägena, två destinationer och rumspolicyer.
Handkontroller
Läs fysiska handkontroller och PlayDrops telefonkontroller via sdk.device, på samma sätt på alla plattformar. Anropa enableControllerInput() en gång efter init(), läs gamepad(playerIndex) i spelloopen (0 är P1) och använd onButton för nedtryckningar och släpp. Axlar och knappar följer webbläsarens standardordning för gamepad. Knappar har positionsnamn som south och east, och pad.label("south") returnerar texten för den handkontrollen, som "A" eller "Cross". Menu tillhör PlayDrop och pausar spelet.
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();Anropa inte navigator.getGamepads(): telefonkontroller når spel bara via SDK:t, och PlayDrop loggar en varning när ett spel läser webbläsarens API direkt. Om värden inte kan ge handkontrollsinmatning avvisar enableControllerInput() anropet med controller_input_unavailable eller controller_input_timeout och spelet fortsätter köra. pad.has("dpad") visar om en kontroll finns. Ange de kontroller som ditt spel behöver i catalogue.json.