PlayDrop oyunlarında yerel parti, fiziksel ve telefon kumandaları
Fiziksel kumandaları ve PlayDrop telefon kumandalarını sdk.device ile oku, yerel oyuncu yuvalarını izle, kumanda desteğini ve yerel parti boyutlarını bildir.
Yerel parti, aynı ekranda her biri bir kumandayla oynayan birkaç kişidir: fiziksel bir kumanda ya da PlayDrop’un bir kod okutarak kumandaya dönüştürdüğü bir telefon. Oyunun her kumandayı web sitesinde ve uygulamalarda SDK üzerinden aynı şekilde okur.
Kumandaları ve parti boyutlarını bildir
{
"types": ["solo", "party"],
"party": { "local": [1, 2, 3, 4] },
"controller": { "support": "optional", "type": "simpler" }
}controller.supportdeğerioff,optionalveyarequiredolur.offdahil her oyunda bildir.controller.type, oyunun gerektirdiği en az kontrolleri belirtir:any(yönler, Onayla ve İptal),simpler(bir analog çubuk, dört ön düğme ve Menü; telefon kumandaları buna uyar) ya dastandard(yön tuşları, basılabilir iki analog çubuk, dört ön düğme, iki omuz düğmesi, iki tetik ve Menü).party.local, tek ekrandaki tam oyuncu sayılarını listeler;1içinsolotürü gerekir. Kumanda desteği açıkken listelenen her sayı kumandalarla oynanabilir olmalıdır.
Kumandaları oku
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();enableControllerInput()fonksiyonunuinit()sonrasında bir kez çağır. Ana uygulama girdi sağlayamadığındacontroller_input_unavailableveyacontroller_input_timeoutile reddedilir; oyun çalışmaya devam eder.gamepad(playerIndex), tarayıcının standart düzeninde bir anlık görüntü döndürür:axes(-1 ile 1 arasında sol x/y, sağ x/y), on yedibuttons,source(physicalveyavirtual) veid.playerIndex0, 1. oyuncudur.- Düğmelerin
southveeastgibi konumsal adları vardır.pad.label("south")ekranda gösterilecek düğme adını verir: kumandaya göre “A”, “Cross” ya da “B”.pad.has("dpad")bir kontrolün var olup olmadığını söyler. - Menü ve Ana Sayfa düğmeleri PlayDrop’a aittir ve her zaman bırakılmış olarak okunur.
- Asla
navigator.getGamepads()çağırma: telefon kumandaları oyunlara yalnızca SDK üzerinden ulaşır ve PlayDrop bir uyarı kaydeder.
Yerel oyuncu yuvaları
sdk.device.localPlayers oyuncuların seçtiği yuvaları ({ playerIndex, gamepadKey }) listeler, onLocalPlayersChange(callback) ise değişiklikleri bildirir. Bağlantısı kopan bir kumanda yuvasını korur. Oyuncu listesi değiştiğinde ya da boşaldığında çökmek yerine mantıklı bir menüye dön. Tek başına bir kumanda sıradan bir girdidir, parti değildir.
Bir düğmeden çağrılan sdk.social.openParty({ mode: "local" }), PlayDrop’un telefon QR koduyla ve bağlı fiziksel kumandalarla eşleştirme penceresini açar. Yalnızca bildirdiğin modları sun.
Yerel ya da çevrimiçi, ikisi birden değil
Ana uygulama bir oyunu ya yerel ya da çevrimiçi bir parti olarak başlatır, asla ikisini birden: yerel oyuncular çevrimiçi odalara katılamaz. Arkadaşlarla çevrimiçi oyun için bkz. çevrimiçi partiler ve sesli sohbet.
Kanepe için tasarla
Her oyuncunun rengini ve kumanda düğme ipuçlarını göster, herkesin bir düğmeye basarak katılabilmesini sağla ve HUD’u kanepeden okunabilir tut. Tek oyunculu oyun için dokunmatik ve klavye kontrollerini koru.