关于 remix-game-sdk
为使用 Remix SDK 的游戏代码生成与修复提供参考,面向游戏开发者。内容涵盖初始化、验证钩子、游戏数据以及单人与多人操作。
主要功能
- 01SDK 初始化与就绪检查
- 02游戏验证所需钩子
- 03玩家与游戏数据访问
- 04单人及多人操作
- 05购买与库存 API
适用场景
- 01开发 Remix 托管的单人游戏
- 02修复游戏代码中的 SDK 集成
- 03添加游戏状态与购买处理
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ farworld-labs/ remix-skills --skill remix-game-sdk安装后在 Claude Code 中输入/remix-game-sdk确认已加载。
详细介绍
Remix Game SDK 参考(@remix-gg/sdk)
生成或修复 Remix 游戏代码时,请使用此文件。
运行时模型
- 在 Remix 托管的上传内容中,SDK 可通过
window.RemixSDK使用。 window.FarcadeSDK仍会被赋值为向后兼容的别名,但新代码应使用window.RemixSDK。- 在 HTML
<head>中引入 SDK 脚本:<script src="https://cdn.jsdelivr.net/npm/@remix-gg/sdk@latest/dist/index.min.js"></script>
- 上传的单文件游戏代码不得依赖软件包导入。
- 读取玩家/游戏数据前,务必先调用
await window.RemixSDK.ready()。
v1 Agent 验证所需的钩子
以下检查是 GET /v1/games/{gameId}/versions/{versionId}/validate 的必需项:
window.RemixSDK.singlePlayer.actions.gameOver({ score })window.RemixSDK.onPlayAgain(() => { ... })window.RemixSDK.onToggleMute(({ isMuted }) => { ... })
常用 SDK 接口
属性/getter:
window.RemixSDK.playerwindow.RemixSDK.playerswindow.RemixSDK.gameStatewindow.RemixSDK.gameInfowindow.RemixSDK.purchasedItemswindow.RemixSDK.inventorywindow.RemixSDK.shopItemswindow.RemixSDK.isReadywindow.RemixSDK.hasItem(itemId)window.RemixSDK.getItemPurchaseCount(itemId)window.RemixSDK.getShopItem(slug)
实用的 gameInfo 字段:
viewContext:用于提供动态消息/全屏/挑战/锦标赛上下文contentSafeAreaInset:用于适配移动端布局,避免覆盖内容的安全区域initialGameState:用于还原持久化状态
单人游戏操作:
window.RemixSDK.singlePlayer.actions.gameOver({ score })window.RemixSDK.singlePlayer.actions.saveGameState({ gameState })window.RemixSDK.purchase({ item })window.RemixSDK.onPurchaseComplete(({ success, item }) => { ... })window.RemixSDK.singlePlayer.actions.reportError({ message, ... })window.RemixSDK.hapticFeedback()
多人游戏操作:
window.RemixSDK.multiplayer.actions.gameOver({ scores })window.RemixSDK.onGameStateUpdated(callback)
对于基础单人游戏,多人游戏操作/事件为可选项。
最简集成模板
async function initGame() {
const sdk = window.RemixSDK
await sdk.ready()
let muted = true
sdk.onToggleMute(({ isMuted }) => {
muted = isMuted
})
sdk.onPlayAgain(() => {
restart()
})
function finish(score) {
sdk.singlePlayer.actions.gameOver({ score })
}
function save(state) {
sdk.singlePlayer.actions.saveGameState({ gameState: state })
}
function restart() {
// reset local game state and render
}
// start gameplay loop...
}
initGame()
应避免的错误
- 在
ready()完成前调用 SDK getter。 - 遗漏必需验证钩子(
gameOver、onPlayAgain、onToggleMute)中的任何一个。 - 使用不存在的 SDK 方法,例如
vibrate、checkpoint或save。 - SDK 提供
sdk.purchase(...)时,在新代码中仍使用singlePlayer.actions.purchase(...)。 - HUD 或控件可能与移动端覆盖内容冲突时,忽略
contentSafeAreaInset。 - 将
localStorage/sessionStorage用作主要持久化方式,而不使用saveGameState。
评论
支持 Markdown