SuperAPI AI 工具集

remix-multiplayer

编程与开发

查看项目

更新于 10-16 14:57

技能介绍

用途

本技能用于为 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,二者只用其一。

限制

当前平台仅支持双人、回合制多人模式;其余平台能力资料中暂未提供。