SuperAPI AI 工具集

game-engine

通用与其它

查看项目

更新于 10-16 08:46

技能介绍

Game Engine 负责管理游戏从大厅到结束的整个生命周期,包括状态转换、题目推进、答案跟踪、计分、iframe 通信,以及主持人与玩家之间的实时协调。

用途:构建或修改游戏状态机,实现主持人控制(开始、下一题、结果),搭建 iframe 沙箱与 MessageChannel 通信,实现玩家答题流程(iframe → 父应用 → Convex),实现服务端校验的计分逻辑,并处理断线、晚加入、超时、iframe 错误等边界情况。

状态机:lobby → playing → question ←→ results → complete。lobby 为玩家加入阶段;playing 为游戏开始时的过渡态;question 为题目进行中,玩家提交答案;results 展示本题结果与排行榜;complete 展示最终结果。主持人点击“开始游戏”从 lobby 进入 question;点击“显示结果”或计时结束从 question 进入 results;点击“下一题”在还有题目时从 results 回到 question,若是最后一题则进入 complete。

计分:Points = correctness_points + speed_bonus;correctness_points = correct ? 1000 : 0;speed_bonus = correct ? max(0, 500 * (1 - timeMs / timerDuration)) : 0。每题最高 1500 分。计分在服务端(Convex)校验,不在 iframe 中进行。

计时:默认每题 30 秒。计时器运行在父应用中,由父应用强制执行;iframe 可显示倒计时视觉,实际限制由父应用执行。计时结束时,父应用通过 MessageChannel 向 iframe 发送 TIME_UP。

iframe 通信:父应用创建 MessageChannel,通过初始 postMessage 将一个端口传给 iframe,之后所有通信都走该私有通道端口;沙箱中切勿同时使用 allow-scripts 与 allow-same-origin。父应用是唯一事实来源,iframe 仅是渲染器,运行的是 AI 生成的代码,不可信;即使 iframe 崩溃,父应用仍持有游戏状态并可恢复。

相关文件:convex/games.ts、convex/answers.ts、convex/players.ts、components/GameIframe.tsx;参考文件 reference.md 提供状态管理与 iframe 通信的代码模式。关于具体安装命令、收费或价格信息,资料暂未提供。