المجموعات المحلية ووحدات التحكم الفعلية والهاتف في ألعاب 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. صرّح بها في كل لعبة، بما في ذلكoff. - يحدد
controller.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 مع رمز QR للهاتف ووحدات التحكم المتصلة. ولا تعرض إلا الأوضاع التي صرّحت بها.
محلية أو عبر الإنترنت، لا الاثنتان معًا
يبدأ المضيف اللعبة إما بوصفها مجموعة محلية أو مجموعة عبر الإنترنت، ولا يجمع بينهما أبدًا: لا يستطيع اللاعبون المحليون الانضمام إلى الغرف عبر الإنترنت. وللعب مع الأصدقاء عبر الإنترنت راجع المجموعات والصوت عبر الإنترنت.
صمّم للعب الجماعي من الأريكة
اعرض لون كل لاعب وتلميح وحدة التحكم الخاص به، واسمح لأي شخص بالضغط على زر للانضمام، واجعل واجهة اللعب مقروءة من الأريكة. واحتفظ بأدوات التحكم باللمس ولوحة المفاتيح للعب الفردي.