Lokale Partys, Gamepads und Handy-Controller in PlayDrop-Spielen
Physische Gamepads und PlayDrop-Handy-Controller über sdk.device lesen, lokale Spielerplätze verfolgen, Controller-Unterstützung und Partygrößen deklarieren.
Eine lokale Party sind mehrere Leute, die an einem Bildschirm spielen, jeder mit einem Controller: einem physischen Gamepad oder einem Handy, das PlayDrop durch das Scannen eines Codes zum Controller macht. Dein Spiel liest jeden Controller auf dieselbe Weise über das SDK, auf der Website und in den Apps.
Controller und Partygrößen deklarieren
{
"types": ["solo", "party"],
"party": { "local": [1, 2, 3, 4] },
"controller": { "support": "optional", "type": "simpler" }
}controller.supportistoff,optionaloderrequired. Deklariere es bei jedem Spiel, auchoff.controller.typenennt die Mindestausstattung, die das Spiel braucht:any(Richtungen, Bestätigen und Abbrechen),simpler(ein Stick, vier Aktionstasten und Menü; Handy-Controller erfüllen das) oderstandard(Steuerkreuz, zwei klickbare Sticks, vier Aktionstasten, zwei Schultertasten, zwei Trigger und Menü).party.locallistet die genauen Spielerzahlen an einem Bildschirm auf; eine1erfordert den Typsolo. Ist die Controller-Unterstützung aktiv, muss jede aufgeführte Zahl mit Controllern spielbar sein.
Controller lesen
await sdk.device.enableControllerInput().catch(() => { /* keep keyboard and touch */ });
const stop = sdk.device.onButton(({ playerIndex, button, pressed }) => {
if (button === "south" && pressed) jump(playerIndex);
});
function update() {
for (const slot of sdk.device.localPlayers) {
const pad = sdk.device.gamepad(slot.playerIndex);
if (pad?.connected) move(slot.playerIndex, pad.axes[0], pad.axes[1]);
}
requestAnimationFrame(update);
}
update();- Rufe
enableControllerInput()einmal nachinit()auf. Der Aufruf wird mitcontroller_input_unavailableodercontroller_input_timeoutabgelehnt, wenn der Host keine Eingabe liefern kann; das Spiel läuft weiter. gamepad(playerIndex)liefert einen Snapshot im Standardlayout des Browsers:axes(links x/y, rechts x/y von -1 bis 1), siebzehnbuttons,source(physicalodervirtual) undid.playerIndex0 ist Spieler 1.- Tasten haben Namen nach ihrer Position, etwa
southundeast.pad.label("south")liefert die Beschriftung, die du anzeigen solltest: „A“, „Cross“ oder „B“, je nach Controller.pad.has("dpad")sagt, ob ein Bedienelement vorhanden ist. - Menü und Home gehören PlayDrop und gelten immer als losgelassen.
- Rufe niemals
navigator.getGamepads()auf: Handy-Controller erreichen Spiele nur über das SDK, und PlayDrop protokolliert eine Warnung.
Lokale Spielerplätze
sdk.device.localPlayers listet die Plätze auf, die Spieler gewählt haben, { playerIndex, gamepadKey }, und onLocalPlayersChange(callback) meldet Änderungen. Ein getrennter Controller behält seinen Platz. Wenn sich die Besetzung ändert oder leer wird, kehre zu einem sinnvollen Menü zurück, statt abzustürzen. Ein einzelner Controller ist eine gewöhnliche Eingabe, keine Party.
Über einen Button öffnet sdk.social.openParty({ mode: "local" }) das Kopplungsfenster von PlayDrop mit dem QR-Code für Handys und den verbundenen Gamepads. Biete nur die Modi an, die du deklariert hast.
Lokal oder online, nicht beides
Der Host startet ein Spiel entweder als lokale Party oder als Online-Party, nie beides: Lokale Spieler können keinen Online-Räumen beitreten. Für Online-Spiel mit Freunden siehe Online-Partys und Sprachchat.
Fürs Sofa gestalten
Zeige die Farbe und die Tastenbeschriftung jedes Spielers, lass jeden per Tastendruck beitreten und halte das HUD vom Sofa aus lesbar. Behalte Touch- und Tastatursteuerung für das Spielen allein bei.