ปาร์ตี้ในเครื่อง เกมแพด และคอนโทรลเลอร์บนโทรศัพท์ในเกม PlayDrop
อ่านเกมแพดจริงและคอนโทรลเลอร์บนโทรศัพท์ของ PlayDrop ผ่าน sdk.device ติดตามช่องผู้เล่นในเครื่อง ประกาศการรองรับคอนโทรลเลอร์และขนาดปาร์ตี้ในเครื่อง
ปาร์ตี้ในเครื่องคือการที่หลายคนเล่นบนหน้าจอเดียว แต่ละคนมีคอนโทรลเลอร์ของตัวเอง: เกมแพดจริง หรือโทรศัพท์ที่ PlayDrop เปลี่ยนเป็นคอนโทรลเลอร์ด้วยการสแกนโค้ด เกมของคุณอ่านคอนโทรลเลอร์ทุกตัวด้วยวิธีเดียวกันผ่าน SDK ทั้งบนเว็บไซต์และในแอป
ประกาศคอนโทรลเลอร์และขนาดปาร์ตี้
{
"types": ["solo", "party"],
"party": { "local": [1, 2, 3, 4] },
"controller": { "support": "optional", "type": "simpler" }
}controller.supportเป็นoff,optionalหรือrequiredประกาศไว้ในทุกเกม รวมถึงoffcontroller.typeระบุปุ่มควบคุมขั้นต่ำที่เกมต้องใช้:any(ทิศทาง ปุ่มยืนยัน และปุ่มยกเลิก)simpler(สติ๊กหนึ่งอัน ปุ่มหน้าสี่ปุ่ม และปุ่ม Menu ซึ่งคอนโทรลเลอร์บนโทรศัพท์ผ่านเกณฑ์) หรือstandard(ปุ่มลูกศร สติ๊กที่กดได้สองอัน ปุ่มหน้าสี่ปุ่ม ปุ่มไหล่สองปุ่ม ทริกเกอร์สองปุ่ม และปุ่ม Menu)party.localระบุจำนวนผู้เล่นที่แน่ชัดบนหน้าจอเดียว เลข1ต้องมีประเภทsoloเมื่อเปิดรองรับคอนโทรลเลอร์ ทุกจำนวนที่ระบุต้องเล่นด้วยคอนโทรลเลอร์ได้
อ่านคอนโทรลเลอร์
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()หนึ่งครั้งหลังinit()ฟังก์ชันนี้จะปฏิเสธด้วยcontroller_input_unavailableหรือcontroller_input_timeoutเมื่อโฮสต์ให้อินพุตไม่ได้ โดยเกมยังทำงานต่อไป gamepad(playerIndex)ส่งคืนสแนปช็อตในเลย์เอาต์มาตรฐานของเบราว์เซอร์:axes(x/y ซ้าย x/y ขวา จาก -1 ถึง 1)buttonsสิบเจ็ดปุ่มsource(physicalหรือvirtual) และidโดยplayerIndex0 คือผู้เล่นคนที่ 1- ปุ่มมีชื่อตามตำแหน่ง เช่น
southและeastส่วนpad.label("south")ให้ข้อความที่จะแสดงบนหน้าจอ: "A", "Cross" หรือ "B" ขึ้นกับคอนโทรลเลอร์pad.has("dpad")บอกว่ามีปุ่มควบคุมนั้นหรือไม่ - ปุ่ม Menu และ Home เป็นของ PlayDrop และเกมจะอ่านค่าได้เป็นสถานะไม่ได้กดเสมอ
- ห้ามเรียก
navigator.getGamepads()เด็ดขาด: คอนโทรลเลอร์บนโทรศัพท์ส่งถึงเกมผ่าน SDK เท่านั้น และ PlayDrop จะบันทึกคำเตือน
ช่องผู้เล่นในเครื่อง
sdk.device.localPlayers แสดงช่องที่ผู้เล่นเลือกไว้ { playerIndex, gamepadKey } และ onLocalPlayersChange(callback) รายงานการเปลี่ยนแปลง คอนโทรลเลอร์ที่ตัดการเชื่อมต่อยังคงช่องของตัวเองไว้ เมื่อรายชื่อผู้เล่นเปลี่ยนหรือว่างลง ให้กลับไปที่เมนูที่เหมาะสมแทนที่จะให้เกมพัง คอนโทรลเลอร์ตัวเดียวคืออินพุตทั่วไป ไม่ใช่ปาร์ตี้
จากปุ่มในเกม sdk.social.openParty({ mode: "local" }) จะเปิดหน้าต่างจับคู่ของ PlayDrop พร้อมคิวอาร์โค้ดสำหรับโทรศัพท์และเกมแพดที่เชื่อมต่ออยู่ เสนอเฉพาะโหมดที่คุณประกาศไว้
ในเครื่องหรือออนไลน์ ไม่ใช่ทั้งสองอย่าง
โฮสต์เริ่มเกมเป็นปาร์ตี้ในเครื่องหรือปาร์ตี้ออนไลน์อย่างใดอย่างหนึ่ง ไม่ใช่ทั้งสองอย่าง: ผู้เล่นในเครื่องเข้าร่วมห้องออนไลน์ไม่ได้ สำหรับการเล่นออนไลน์กับเพื่อน ดูปาร์ตี้ออนไลน์และแชทเสียง
ออกแบบให้เล่นบนโซฟา
แสดงสีและข้อความปุ่มของผู้เล่นแต่ละคน ให้ใครก็ได้กดปุ่มเพื่อเข้าร่วม และทำให้ HUD อ่านได้จากโซฟา คงการควบคุมแบบสัมผัสและคีย์บอร์ดไว้สำหรับการเล่นคนเดียว