关于 remix-multiplayer
remix-multiplayer 是一份工作流技能,指导在 Remix 平台游戏中集成双人回合制多人玩法。它说明如何使用 RemixSDK 的 multiplayer 命名空间、处理状态更新,并提交包含玩家分数的游戏结束结果。
主要功能
- 01双人回合制多人玩法指南
- 02使用 RemixSDK multiplayer 命名空间
- 03处理并验证游戏状态更新
- 04提交包含玩家分数的结果
适用场景
- 01为 Remix 游戏添加回合制多人玩法
- 02读取会话中的玩家 ID
- 03处理收到的玩家状态
- 04提交多人游戏结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ farworld-labs/ remix-skills --skill remix-multiplayer安装后在 Claude Code 中输入/remix-multiplayer确认已加载。
详细介绍
实现多人游戏工作流
概述
本技能将指导你为 Remix 平台上的游戏启用并集成多人游戏功能。目前,平台支持使用 SDK multiplayer 命名空间实现双人回合制多人游戏。
前提条件
- 必须已在 Remix 平台上创建游戏(需要游戏 ID)。
- 必须设置
REMIX_API_KEY环境变量。 - 游戏必须包含 RemixSDK 脚本标签:
<script src="https://cdn.jsdelivr.net/npm/@remix-gg/sdk@latest/dist/index.min.js"></script>
步骤
1. 检查是否已有游戏 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()
// Access all players in the session
const players = sdk.players // Array of player objects
// Listen for game state updates from other players
sdk.onGameStateUpdated((state) => {
// Sync game state from other players
})
// Send game state to the other player when a turn ends
sdk.multiplayer.actions.saveGameState({
gameState: currentState,
alertUserIds: [opponent.id],
})
重要:使用多人游戏的 gameOver
对于多人游戏,请使用 multiplayer.actions.gameOver——不要使用
singlePlayer.actions.gameOver。传入包含玩家 ID 的分数数组:
sdk.multiplayer.actions.gameOver({
scores: [
{ playerId: player.id, score: playerScore },
{ playerId: opponent.id, score: opponentScore },
]
})
保留标准钩子
多人游戏仍需要以下回调:
sdk.onPlayAgain(() => {
// Reset game state and restart
})
sdk.onToggleMute(({ isMuted }) => {
// Mute or unmute all audio
})
提示
- 使用
sdk.players获取两位玩家及其 ID;目前多人游戏仅支持双人。 - 每当另一位玩家发送状态时,
onGameStateUpdated都会触发——应用状态前请先验证,并在收到的更新无效时使用sdk.multiplayer.actions.refuteGameState(...)。 - 保存多人游戏状态时使用
alertUserIds,以通知下一位玩家轮到自己了。 - 请勿在同一款游戏中混用
singlePlayer.actions.gameOver和multiplayer.actions.gameOver。二者选其一。
评论
支持 Markdown