用途:在 duel-game-core 上从零构建可部署的双人游戏,用户只提供纯英文规则描述,开发者自行完成状态、动作与渲染设计,仅当规则本身对胜负条件或上限含糊时才询问,引擎机制无需询问。
主要能力:框架包含 Motoko mops 包(会话引擎)与 npm 包(浏览器客户端),提供多桌大厅(公开或访问码保护)、座位、回合提交、复盘、闲置接管、再战、认赢、会话身份、轮询传输、无头客户端及可逐个替换的默认界面。一个成品游戏由六部分游戏专属代码组成:src/<Rules>.mo(纯模块,实现 TP.Spec<State, Action>)、src/Host.mo(复制的薄宿主 actor)、test/RulesUnit.test.mo、frontend/src/<game>-plugin.js、frontend/src/index.html 与 app.js、style.css,以及 icp.yaml、publish_wasm.sh、mops.toml、frontend/package.json、frontend/.npmrc、frontend/build.js 等模板文件。
使用方式:模板均在 templates/ 下,改造前先逐个阅读;references/ 覆盖交替回合游戏、canister 机器人、富界面、深度测试、为已有游戏做前端五种情形。安装后端可执行 mops add duel-game-core;若失败则克隆仓库改用路径依赖。前端先执行 npm view duel-game-core version,可用则保留 "duel-game-core": "*" 并执行 npm install duel-game-core --save-exact,否则改用 file:../duel-core/frontend 并先构建克隆仓库前端。
限制:State 中只保存未来回合需要的数据;Action 应为原始决策而非派生值;需将每种胜负平映射到 resolve 的 verdict,null 表示继续而非平局;Motoko 模块级 let 必须为静态,Nat 减法需用 a >= b 保护。idleTimeoutNs 应比 claimTimeoutNs 至少多 15 秒。createTable/joinTable/submit 等不得新增普通 Candid 方法,Transport.attach 是唯一变更路径。指标、canister 玩家、排行榜均为可选,仅在明确需要时接入;其余细节暂未提供。