用途
本技能用于为 Remix 平台上的游戏启用并集成多人功能。当前平台支持的范围是双人、回合制多人对战,基于 SDK 的 multiplayer 命名空间实现。
前置条件
- 游戏必须已在 Remix 平台创建(需要 game ID)。
- 必须设置 REMIX_API_KEY 环境变量。
- 游戏必须包含 RemixSDK 脚本标签:
<script src="https://cdn.jsdelivr.net/npm/@remix-gg/sdk@latest/dist/index.min.js"></script>
使用方式
1. 检查已有 game ID
优先使用任务上下文或此前工具结果中的 gameId;否则读取最近的 .remix-cli.json,较旧项目可能仍使用 .remix-mcp.json。若其中包含 gameId 则复用。只有当这些来源都没有 gameId 时,才走上传游戏(upload-game)流程创建一个。
2. 启用多人
不要依赖 updateGame 或直接通过 REST 切换 isMultiplayer。上游工作流文档目前将多人平台启用视为 Remix 侧的开关,而非公开的 agent 可变更操作。
3. 在游戏代码中集成多人
const sdk = window.RemixSDK
await sdk.ready()
// 访问对局中的所有玩家
const players = sdk.players // 玩家对象数组
// 监听其他玩家发来的游戏状态更新
sdk.onGameStateUpdated((state) => {
// 同步来自其他玩家的游戏状态
})
// 回合结束时把游戏状态发送给另一位玩家
sdk.multiplayer.actions.saveGameState({
gameState: currentState,
alertUserIds: [opponent.id],
})
多人游戏结束的处理
多人游戏应使用 multiplayer.actions.gameOver,而不是 singlePlayer.actions.gameOver,并传入带玩家 ID 的分数数组:
sdk.multiplayer.actions.gameOver({
scores: [
{ playerId: player.id, score: playerScore },
{ playerId: opponent.id, score: opponentScore },
]
})
保留标准回调
多人游戏仍然需要以下回调:
sdk.onPlayAgain(() => {
// 重置游戏状态并重新开始
})
sdk.onToggleMute(({ isMuted }) => {
// 静音或取消静音所有音频
})
提示
- 使用 sdk.players 获取两名玩家及其 ID;当前多人仅支持双人。
- onGameStateUpdated 在其他玩家发送状态时触发——应用前先校验,当收到的更新无效时使用 sdk.multiplayer.actions.refuteGameState(...)。
- 保存多人状态时使用 alertUserIds,以便通知下一位玩家轮到其行动。
- 不要在同一游戏中混用 singlePlayer.actions.gameOver 与 multiplayer.actions.gameOver,二者只用其一。
限制
当前平台仅支持双人、回合制多人模式;其余平台能力资料中暂未提供。