文档中心
12 份文档随仓库走,克隆下来就能读。按你要做的事挑一篇——不用从头读到尾。
先做游戏
写界面与引擎 API
子系统
PHYSICS-GUIDE.md
2D 物理(planck 薄封装):何时用、像素换算、验收清单。官方示例
games/platformer。
ECONOMY-SAVE.md
数值配表 TSV + 存档 + 离线收益(@mg/economy)。
STORY.md
扁平剧情 .story.tsv + lint / compile(@mg/story)。
UI-PIPELINE.md
美术到代码:风格板 → 整屏图 → tokens → 图层切割 → 补全 → 位图字体。
perf-bench.md
Canvas 2D 性能基准:能画多少、什么时候必须上 WebGL。games/bench 可跑。
AGENTS.md
改引擎代码的硬规则(给 AI 的判据):七条铁律、平台扩展六步、提交前自检、禁止事项。
Agent 工具
文档之外的另外两条通道:两个 Skill(gamekit-minigame / ui-authoring)+ 17 个 MCP 工具 + 一键安装提示词,让 agent 不用猜。
四条核心设计
读代码之前先知道这四条,否则会觉得「为什么这么绕」。
一层一职责
契约(contract.ts)→ 实现 → 测试,三层分开。单文件 300 行是提醒线、500 行是警告线,确需更长要在文件头写 // @long-file <原因> 豁免。
数据 / 逻辑 / 渲染三分
数据文件只放字面量;逻辑是纯函数(输入旧状态 → 输出新状态,不碰 canvas);渲染只读状态、只画、不做判定。
平台差异只在 platform/
新增一个平台 = 新建目录 + 实现 PlatformAdapter + 写 probe(),不碰 core、不碰契约必需成员。业务代码里出现 wx. / tt. 一律打回。
无全局可变状态
状态挂在 Game 实例上,禁止模块级可变单例。注册表用工厂生产,每次新建一份,谁也污染不到谁。
仓库结构
packages 是框架,games 是游戏,templates 是脚手架。
目录
packages/
runtime/ 引擎内核:loop / stage / input / assets / audio / ads / save / ui / render / tween
+ 平台适配层(web / wechat / douyin / mock)
vite-plugin/ @mg/vite:三端产物、资源管线、图集打包、包体红线检查
ui-plugin/ @mg/ui-plugin:.ui 编译(dev 与 build 走同一个函数)
economy/ @mg/economy:配表校验、模拟、离线收益
story/ @mg/story:剧情扁平源 + lint / compile
physics-2d/ @mg/physics-2d:planck 薄封装(可选)
debug-mcp/ 调试 MCP server:离线 5 个 ui.* 工具 + 运行时 10 个工具
cli/ mg 命令:create / dev / build / check / pack / doctor
templates/
iaa-ui/ 默认模板:.ui 界面链 + 31 个组件注册表
iaa-simple/ 手写布局 demo:广告三件套 + 主菜单 + 存档 + 最小玩法
games/ 游戏工程只能放这里(mg create 强制)
docs/ 文档