PlayDrop logoPlayDrop Studio
创作互玩赚取学习连接器素材社区支持
PlayDrop logoPlayDrop Studio
创作互玩赚取学习连接器素材社区支持
登录
本地队伍和控制器
文档

从这里开始

概览你的第一款游戏PlayDrop 游戏常见问题

用 Cloud 创作

Cloud 创作方案与生成次数

连接你的 AI 应用

所有连接器ClaudeChatGPTClaude CodeCodexCursorGeminiAntigravityGrok BuildGrok BotGrok ChatLovableReplit

发布与分享

从你的 AI 应用发布简单 HTML 游戏打包和 .play发布与导入游戏文件可见性与曝光商店页面图片和视频类型和标签本地化即玩游戏

游戏体验

加载、暂停和音频全屏和安全区域云存档本地队伍和控制器

一起玩

分享、好友和邀请排行榜成就在线队伍和语音实时游戏服务器

赚取收益

变现点数与奖励

素材

游戏素材AI 素材生成自定义格式和玩家作品

参考

客户端 SDK服务器 SDKcatalogue.json错误与恢复问题排查
文档本地队伍和控制器
游戏体验

PlayDrop 游戏中的本地队伍、手柄和手机控制器

通过 sdk.device 读取实体手柄和 PlayDrop 手机控制器,跟踪本地玩家槽位,并声明控制器支持和本地队伍人数。

本地队伍是几个人在同一块屏幕上一起玩,每人一个控制器:实体手柄,或者扫码后被 PlayDrop 变成控制器的手机。无论在网站上还是在应用中,你的游戏都通过 SDK 以相同的方式读取每个控制器。

声明控制器和队伍人数

json
{
  "types": ["solo", "party"],
  "party": { "local": [1, 2, 3, 4] },
  "controller": { "support": "optional", "type": "simpler" }
}
  • controller.support 为 off、optional 或 required。每款游戏都要声明,包括 off。
  • controller.type 指定游戏所需的最低操控:any(方向输入、确认和取消)、simpler(一根摇杆、四个正面按键和菜单键;手机控制器符合要求)或 standard(方向键、两根可按下的摇杆、四个正面按键、两个肩键、两个扳机和菜单键)。
  • party.local 列出同一屏幕上的确切玩家人数;1 需要 solo 类型。开启控制器支持时,列出的每种人数都必须能用控制器游玩。

读取控制器

js
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();
  • 在 init() 之后调用一次 enableControllerInput()。宿主无法提供输入时,它会以 controller_input_unavailable 或 controller_input_timeout 拒绝;游戏会继续运行。
  • gamepad(playerIndex) 按浏览器的标准布局返回一份快照:axes(左摇杆 x/y、右摇杆 x/y,范围 -1 到 1)、十七个 buttons、source(physical 或 virtual)和 id。playerIndex 为 0 表示玩家 1。
  • 按键按位置命名,例如 south 和 east。pad.label("south") 会给出要显示的按键提示:根据控制器不同,为“A”、“Cross”或“B”。pad.has("dpad") 可判断某个操控是否存在。
  • 菜单键和主页键属于 PlayDrop,读取时始终为松开状态。
  • 绝不能调用 navigator.getGamepads():手机控制器只能通过 SDK 传给游戏,PlayDrop 也会记录一条警告。

本地玩家槽位

sdk.device.localPlayers 列出玩家选择的槽位 { playerIndex, gamepadKey },onLocalPlayersChange(callback) 会报告变化。断开的控制器会保留它的槽位。当玩家名单变化或变为空时,返回一个合适的菜单,而不是让游戏崩溃。单独一个控制器只是普通输入,不算队伍。

从一个按钮调用 sdk.social.openParty({ mode: "local" }),可以打开 PlayDrop 的配对窗口,里面有手机二维码和已连接的手柄。只提供你声明过的模式。

本地或在线,二选一

宿主启动游戏时,要么作为本地队伍,要么作为在线队伍,绝不会同时进行:本地玩家不能加入在线房间。和朋友在线一起玩,请参阅在线队伍和语音。

为沙发游戏而设计

显示每位玩家的颜色和控制器按键提示,让任何人按一个键就能加入,并让 HUD 从沙发上也能看清。为单人游玩保留触屏和键盘操控。

相关指南

  • 在线队伍和语音让朋友们在线一起玩你的游戏:声明队伍人数,打开 PlayDrop 的队伍窗口,用 sdk.multiplayer.join 加入预留的房间,并控制房间语音。
  • 全屏和安全区域让 PlayDrop 游戏铺满屏幕,借助 SDK 测得的 reservedCorners,让 HUD 留在 CSS 安全区域内并避开宿主的控件。
  • catalogue.jsonPlayDrop 游戏使用的 catalogue.json 字段:标识、商店页面、游玩方式、显示形态、登录、即玩、预加载、媒体、翻译、分数和服务器。
上一页PlayDrop 游戏的云存档下一页PlayDrop 游戏中的分享、好友和邀请
查看 Markdown
EnglishFrançaisDeutsch日本語한국어EspañolPortuguês (Brasil)Bahasa Indonesia繁體中文简体中文ItalianoPolskiNederlandsSvenskaNorsk bokmålSuomiTürkçeไทยTiếng Việtالعربية

本页内容

声明控制器和队伍人数读取控制器本地玩家槽位本地或在线,二选一为沙发游戏而设计
查看 Markdown