Agent 可编程技术栈选型(唯一版 · 2026-10)
五轮追问合并:存量工程 → 新项目 → 多端一次导出 → 全自建 → LayaAir vs Cocos 对比
2026-10-06 | 本文件是以下五篇的唯一留存版,原五篇已并入此处并删除(归档见交付说明):
| 篇 | 原文件名 | 回答的问题 |
|---|---|---|
| 1 | agent-tech-stack-review-2026-10.md | 存量工程(Cocos 2.4.15)为什么难被 agent 编程,能救到哪一步 |
| 2 | agent-first-stacks-new-project-2026-10.md | 只看新项目,哪些栈能全 agent 编程 |
| 3 | agent-plus-multiplatform-stacks-2026-10.md | AI 全编码 ∩ 一次导出七端,交集还剩什么 |
| 4 | code-first-selfbuilt-multiplatform-2026-10.md | 代码优先+全部自建,能不能做到全平台 |
| 5 | layaair-vs-cocos-对比审查报告-2026-10.md | LayaAir 与 Cocos 逐条对比,新项目该选谁 |
编号约定:判据 C1–C10;决策 D1–D73(跨篇连续,编号不重复);证据标注 [实测]/[文档]/[推论] 各篇自注。
第 1 篇 · 可被 AI Agent 全面编程的游戏技术栈梳理(微信小游戏为主目标)
原文件:
docs/agent-tech-stack-review-2026-10.md(已并入本篇)
可被 AI Agent 全面编程的游戏技术栈梳理(微信小游戏为主目标)
调研日期:2026-10-06 | 适用工程:水泊风云录(Cocos Creator 2.4.15) 本文所有"本机数字"均为当场实测(命令见附录),所有"外部事实"均带来源链接;推测/待验证项统一编号为 D1…D10。
2026-10-06 追加:本文=第一代(存量工程视角:214 个 prefab 怎么办、三条路线 A/B/C)。新项目选型另出第二代稿
agent-first-stacks-new-project-2026-10.md(判据扩到 C1–C10、候选栈铺到 6 组、含资产管线与发布/验证回路),其决策编号从 D11 起,与本文 D1–D10 不复用。
0. 速查结论(先看这一屏)
一句话:你的判断需要修正一半——Cocos 2.4.15 确实没有 agent 通道(无 MCP、场景真源是编辑器产出的 JSON),但 Cocos Creator 3.8+ 已有第三方 MCP(Funplay,105 个工具,可直接读写 scene/prefab/component);真正决定 agent 能不能干活的是"真源是不是文本 + 有没有自检回路",其次才是引擎名字。
| 栈 | Agent 改场景/界面的能力 | 微信小游戏 | 多平台广度 | 对本工程的代价 | 定位 |
|---|---|---|---|---|---|
| Phaser 4.2.1 + TS + Vite | ★★★★★ 纯代码即场景,可无头自证 | ✅ 自维护 adapter(已有 MVP 案例) | 网页/各小游戏需逐端 adapter | ⚠️ 全量重写(含 214 prefab 内容) | 新项目首选 |
| kaplay / Excalibur / Pixi8+ECS | ★★★★★ 同上,体量小、语料少 | ✅ 同 adapter 路线 | 窄 | 全量重写 | 小项目/原型 |
| Eva.js(阿里互动引擎) | ★★★★☆ ECS + JSON 场景,无编辑器 | ⚠️ 主要面向淘宝/支付宝互动,微信侧要自证 | 阿里系强,微信弱 | 全量重写 | 谨慎(社区 1782★) |
| Cocos Creator 3.8.x | ★★★★☆ 走 MCP 通道(GUI 在场)+ 官方 CLI 构建 | ✅ 官方一键发布,最省事 | ✅✅ 最广(微信/抖音/QQ/快手/支付宝/B站/H5/原生) | ⚠️ 2.x→3.x prefab 格式转换(D1) | 续命路线 |
| Cocos Creator 2.4.15(现状) | ★★☆☆☆ 只能改 .ts;.prefab/.fire 手改即脏 | ✅ 已跑通(含分包/远程资源) | 同上(2.x 版本较老) | 0 | 只做局部改造 |
| LayaAir 3.x | ★★★☆☆ 引擎开源、代码建场景可行,但发布依赖闭源 IDE | ✅ 官方文档齐 | 官方支持多端 | 全量重写 | 只有 3D 需求时看 |
| Godot 4 + 社区小游戏适配 | ★★★★☆ .tscn/.gd 是纯文本,天然可 diff | ⚠️ 社区工具(Web 导出改造,≈20MB、仅 WebGL2) | 桌面/移动强,小游戏非官方 | 全量重写 | 小游戏目标下不推荐 |
| Unity / 团结引擎(WebGL 转换) | ★★★☆☆ 编辑器 MCP 很成熟(unity-mcp 14.7k★)但小游戏必须过 GUI 转换工具 | ✅ 官方转换链路 | 小游戏 + 原生 | 全量重写 + 版号/审核流程 | 不推荐(2D 重 UI 是它的短板) |
| Egret / cocos2d-x 2-3 / Hilo / CreateJS | — | — | — | — | 已停更,排除 |
我的建议(可推翻):不要为了 agent 而重写。走 两段式:
- 现在(0-2 周,留在 2.4.15):把"UI 真源"从 prefab 里搬出来 —— 工程已有 40 处
new cc.Node、46 处addComponent的代码建 UI 先例(assets/scripts/ui/commonTip/ProbDisclosure.ts:87,114,131),把它升级为声明式布局 DSL + 运行时构建;再把已经跑得通的npm run typecheck(实测 0 错误)接进 CI,并补无头 Chrome 截图回归。agent 立刻获得"全面编程"的 80%。 - 下一个新项目 / 或本 project 的 v2:直接 Phaser 4 + TS + Vite + 自维护 weapp-adapter,真源 100% 是文本,agent 可无人值守、可并行多子代理。
- 只有当你想让 agent 继续改存量 214 个 prefab 时,才值得考虑升 3.8.x + Funplay MCP(注意:MCP 要求编辑器 GUI 打开,属于"人在场"模式,见 §2 的 Mode B)。
1. 为什么"agent 改不动"——本工程的实测病因
| 指标 | 实测值 | 含义 |
|---|---|---|
| 场景文件 | 1 个 assets/Scene/HallScene.fire,5402 B(只有 Canvas + Main Camera) | 场景本身几乎空,不是瓶颈 |
| Prefab | 214 个 / 4,440,599 B / 249,238 行 JSON | 内容的真正载体,agent 的死角 |
| ├ Spine 包装 prefab | 155 个 / 50,227 行(assets/bundles/battle/spine/*,141 个含 sp.Skeleton) | 只是 sp.Skeleton 外壳,代码里一次初始化调用即可替代 |
| └ UI 型 prefab | 58 个 / 198,883 行(其中 47 个含 Button/ClickEvent/Widget/Label/ScrollView/Toggle) | 真正需要重写/迁移的面板只有 约 47 个 |
| 序列化组件统计 | cc.Color 3636 / cc.Size 2093 / cc.Node 2093 / cc.PrefabInfo 2093 / cc.Sprite 851 / cc.Label 384 / cc.Widget 240 / cc.Button 138 / cc.ClickEvent 169 / sp.Skeleton 141 | 2093 个节点摊在 47 个面板上 ≈ 45 节点/面板,每个节点被拆成 4 段序列化块 |
| TypeScript | 110 个文件 / 30,924 行 | 目前 agent 唯一能安全操作的部分(≈内容总量的 11%) |
| 最重的三个面板 | UIShop.prefab 30,951 行、UIBattle.prefab 12,040 行、UIHeroInfo.prefab 10,979 行 | 改一个商店按钮 = 在 3 万行 JSON 里定位 fileId |
| 引擎版本 | project.json:4 → 2.4.15 | 2.x 无 MCP 生态(Funplay 要求 3.8+) |
| 依赖 | node_modules 只有 typescript/iconv-lite/safer-buffer;tsconfig.json:5-6 = target: es5 + experimentalDecorators,未开 strict | 只有类型检查一层自证能力,且没接线(见下方根因 3) |
根因是三条,不是"引擎不支持 AI":
- 真源不是文本可读形式:
.prefab虽是 JSON,但靠fileId/_id/uuid 互相引用,改错一个字符串就静默丢引用,且人看不出 diff;agent 没有可视化确认手段。 - 构建与预览必须 GUI:
settings/wechatgame.json+ 构建面板产出build/wechatgame,tools/post-build-wechat-subpackage.sh:27,43-48只是把 bundle 搬到subpackages/{name}/的后处理,且脚本自己就在:54要求"请用微信开发者工具重新编译验证";agent 拿不到"构建是否成功"的退出码 → 无法闭环。 - 自检回路只建了一半:
package.json已有typecheck(tsc --noEmit),2026-10-06 实测退出码 0、0 条错误(本地node_modules带 typescript 5.9.3);但 CI 只有两个 python 步骤(.github/workflows/reskin-check.yml:23,26=validate_spine.py+scan_old_theme_residuals.py),没有 npm ci、没有 typecheck;也没有 eslint、没有单测、没有截图回归。结论:agent 目前唯一可用的自证手段是类型检查,而且没人把它接进回路里。
这三条在 Cocos 2.4 里也能全部治(见 §5 路线 A),所以"要不要换栈"其实是投入产出比问题,不是能力有无问题。
2. 判据:什么才算"能被 agent 全面编程"(7 条,按权重排序)
| # | 判据 | 为什么 | 现状(2.4) | Phaser4 | Cocos3.8+MCP | Laya3 | Godot4 | Unity+小游戏 |
|---|---|---|---|---|---|---|---|---|
| C1 | 场景/界面有纯文本真源(代码或可手写 DSL,无不可读 ID) | agent 只能可靠编辑文本 | ❌ 89% 在 prefab JSON | ✅ | ⚠️ 文本但含 uuid | ⚠️ .ls 是 JSON,IDE 产出 | ✅ .tscn 可 diff | ⚠️ YAML+guid |
| C2 | 不打开 GUI 就能构建出可运行包(CLI 退出码可信) | 决定能否无人值守/CI | ❌ D3 | ✅ vite build | ✅ 官方 CLI | ❌ IDE 发布 | ✅ headless export | ❌ 转换工具 GUI |
| C3 | 能无头跑起来并截图(agent 自证"真的画对了") | 否则只能靠人眼验收 | ⚠️ web 构建+Chrome(D4) | ✅ Chrome/Puppeteer | ⚠️ 同左 | ✅ | ✅ | ⚠️ |
| C4 | 类型/静态检查可当门禁(TS strict、lint 能抓错) | agent 的第一道回路 | ⚠️ typecheck 实测 0 错误但未进 CI、无 eslint | ✅ | ✅ | ✅ | ❌ GDScript 弱 | ✅ C# |
| C5 | LLM 语料密度(npm 周下载、star、文档站稳定度) | 决定幻觉率 | 中(中文语料多但 2.x API 已老化) | 极高:phaser 545,951/周、40,410★ | 高 | 中:2,204★ | 中 | 高 |
| C6 | 一次可并行多改(多子代理同时改不同面板不冲突) | 决定产能上限 | ❌ 二进制化 JSON 必冲突 | ✅ 按文件天然分片 | ❌ 编辑器单实例、MCP 串行 | ⚠️ | ✅ | ❌ |
| C7 | 平台 SDK 差异被隔离在单层内(wx/tt/qq/ks 与广告/支付/开放数据域) | 换栈不重复踩坑 | ⚠️ 散落 | ⚠️ 需自建 | ✅ 官方导出层 | ✅ | ⚠️ | ⚠️ |
两种 agent 工作模式,必须先选一个:
- Mode A|文本真源直改(对应 C1+C2+C3+C6):agent 写
.ts/.tscn/DSL → CLI 构建 → 无头截图 → 断言。特点:可无人值守、可并行、可回归,代价是所有场景必须文本化。 - Mode B|MCP 驱动编辑器(Cocos Funplay / unity-mcp / godot-mcp):agent 调工具在编辑器里建节点、挂组件、存 prefab。特点:存量工程零重写,但要求编辑器进程开着(HTTP 服务
127.0.0.1:8765跑在编辑器内)、单实例串行、产出仍是二进制化 JSON(diff 噪声大、难以 code review)。 - 结论性判断:Mode A 是产能上限更高的那个;Mode B 只是"不想重写"的补偿手段。你现在的痛苦本质是 Mode A 不成立,而 Mode B 也没有(2.4 无 MCP)。
3. 候选栈逐条说明(只写会影响决策的部分)
Phaser 4(MIT,v4.2.1,2026-07-09;40,410★,npm 545,951 次/周)
- agent 友好度最高的现实选择:场景=Scene 类里的代码,UI=自写布局函数;没有编辑器、没有 uuid,
tsc --noEmit+vite build+ Puppeteer 截图三件套全部命令行可得。 - 微信小游戏已被验证:2026-08 有开发者做出 "Phaser4 in 微信小游戏 最小可行性验证",用自写
weapp-adapter.js(不依赖第三方库),需 patch 的点:npm 包导出方式、document/windowpolyfill、XMLHttpRequest、真实 WebGL 上下文;作者结论"无需降级"。 - 风险:① Phaser 没有成套 UI 框架(按钮/滚动列表/输入框/富文本要么用社区 RexUI,要么自建)——而你的游戏是 47 个面板、384 Label、138 Button、9 ScrollView、1 EditBox 的重 UI 结构,这块是自付成本;② Spine 运行时(你有 141 个
sp.Skeleton包装)在 Phaser 侧要走官方 spine-ts 运行时,资源可复用但要重接;③ 音频/字体/热更/分包策略全部自己实现——你现在这层是 Cocos 内置的远程资源 + 手工后处理脚本(settings/wechatgame.json:5、tools/post-build-wechat-subpackage.sh),换栈要整体重建。
Cocos Creator 3.8.x + MCP(升级路线)
- agent 通道确实存在:Funplay MCP for Cocos(Cocos 商店 #8913)面向 3.8+,本质是嵌在编辑器里的 HTTP 服务(
http://127.0.0.1:8765),让 AI 在scene/editor上下文执行 JS,提供 105 个工具管理 node/prefab/component,并有路径穿越等安全检查、限制在当前工程根目录。安装=把扩展放进工程extensions/或编辑器菜单 "Funplay > MCP Settings"。商店里还有 #9469 "Cocos Creator AI MCP 助手"、#8586 "Cocos Agent"(页面 JS 渲染,本文未能读到功能详情,见 D2)。 - 小游戏侧最省事:官方发布链路 + 官方分包/远程资源/开放数据域支持;平台广度是所有候选里最广的(微信/抖音/QQ/快手/支付宝/B站/H5/原生 App)。
- 代价:
.scene/.prefab仍是 uuid 引用的 JSON,agent 直改文本依然危险(要靠 MCP);MCP = 人在场、单实例、不可并行;extensions/目前不存在于本工程,需新建。 - 2.4.15 → 3.8 的迁移成本必须先量:2.x 的
.fire/.prefab与 3.x 格式不兼容,cc.*全局 API →import from 'cc'、组件生命周期与渲染管线全变。官方 2.x→3.x prefab 迁移工具现状 = D1(这条直接决定该路线是否可行;不要在没有结论前投入)。
LayaAir 3(引擎 MIT,2,204★,最近推送 2026-09-24)
- 引擎源码开源、
.ls场景是 JSON 文本、可纯代码建场景;官方微信小游戏文档齐(adapter 为weapp-adapter.js,分包在 IDE 里勾选)。 - 卡点:IDE 闭源,发布流程设计为在 IDE 里点,因此 C2/C6(CLI 构建、并行)弱;社区体量与 LLM 语料明显小于 Phaser;2D 重 UI 生态一般。
- 只有在要做 3D 或需要 Laya 的特定能力时才值得比。
Eva.js(阿里淘系互动引擎,MIT,1,782★,最近推送 2026-07-10)
- 真 ECS + 纯代码/JSON 场景,无编辑器依赖,agent 友好度结构上很好;双 11 级互动场景背书。
- 卡点:定位是淘宝/支付宝互动,微信小游戏侧适配与生态证据薄;社区小 → LLM 对其 API 熟悉度低(这是我的判断,不是实测),生成代码幻觉率会高于 Phaser;文档/示例中文为主但更新偏慢。
- 若你未来主要投淘宝/支付宝小游戏,它的优先级要重排。
Godot 4(+ 社区小游戏适配)
Godot 场景文件 .tscn / 脚本 .gd 都是纯文本,是**唯一"编辑器型但 Mode A 完全成立"**的传统引擎(且 godot-mcp 生态也很热:最高 5,950★)。- 但小游戏是硬墙:官方 Web 导出是 WASM+线程模型,微信小游戏不支持;现仅有社区工具把 Godot 4.6.4 的 Web 导出改造到微信/抖音小游戏,MIT、9★、总包 ≈20MB、仅 WebGL2、不支持 EH。为"尽可能多平台"的目标选它=把上线风险押在一个人的仓库上。结论:排除。
Unity / 团结引擎(WebGL → 小游戏转换)
- 反差最大的一格:编辑器 MCP 生态最成熟(
CoplayDev/unity-mcp14,710★,最近推送 2026-10-06,能管资源、控场景、改脚本、自动化任务;另有 unity-cli 315★、AnkleBreaker 268 工具的 UPM 插件)。 - 但小游戏侧的约束正好打在你的游戏类型上:官方转换链路必须跑编辑器里的转换工具(C2 不成立),内存/字体(<3MB)/纹理限制明确,文档自己就指出 2D 重 UI 游戏面临字体/纹理限制;个人主体虽可免版号发行,但要吃 Unity License + 转换包体优化一整摊事。结论:为 agent 产能选 Unity 是本末倒置,排除。
已停更,别碰(避免被旧教程误导)
- Egret/白鹭:2022 年 2 月停止维护;微信官方引擎适配页仍写着 Cocos/Laya/Egret,是历史文档,不要据此选型。
- cocos2d-x v2/v3、Hilo(2016 后停更)、CreateJS、EaselJS:同上,教程多、活着少。
4. 平台侧硬约束(换栈不会帮你绕过,选型时要一起算)
- 包体:主包 4MB;所有包合计 ≤30MB;普通分包无单独上限,独立分包 ≤4MB;入口
game.js,代码与资源同包(微信官方分包文档)。→ 你现在靠REMOTE_SERVER_ROOT https://dd.qthy.cc远程资源(settings/wechatgame.json)+tools/post-build-wechat-subpackage.sh拆subpackages/battle|common,这套策略与引擎无关,换栈要重建(Phaser 侧=自己写 vite 插件产出分包结构)。 - 适配层:小游戏无 DOM/BOM,
weapp-adapter模拟document/window/canvas/localStorage;非 Cocos/Laya/Egret 的通用 H5 引擎都走这条路(微信官方引擎适配页)。已验证到 Phaser 4 可行(§3)。 - 开放数据域(好友排行榜等):是独立的
openDataContext/index.js上下文,不能与主包共享引擎实例——你已经在build-templates/wechatgame/openDataContext/index.js趟过了,换栈时这块必然重写,且 agent 只能靠真机验证(D5)。 - 多平台(抖音/QQ/快手/支付宝/B站):API 高度同源,但广告/支付/实名 SDK 各端不同。
- Cocos/Laya:官方导出面板直接给多端,这是它们对"尽可能多平台"的真实优势。
- Phaser/自研:要自己维护一个
platform抽象层 + 各端 adapter(我的估计:单端 1-3 人日,含真机调试;不是官方承诺)。
- 审核/版号:与引擎无关,任何栈都要走软著/版号或"个人主体免版号"路径。
5. 三条路线与代价(估时为我的估计,需你按团队实际校准 = D6)
路线 A|留在 2.4.15,把"文本真源 + 自检回路"补起来 —— 推荐起点
0 重写风险,2 周内让 agent 产能翻倍量级。四步,每步都有验收判据:
| 步 | 做什么 | 验收判据(必须实测,不看文档) |
|---|---|---|
| A1 | 把已有但没接线的门禁接上:package.json 的 typecheck(实测 0 错误)进 CI;补 eslint;CI 里加一条"故意坏样本"阳性对照 | 故意写坏一个 .ts,CI 必须红;恢复后必须绿 |
| A2 | UI 声明式布局层:定义 LayoutNode = {type, name, children, ...},运行时用 new cc.Node/addComponent 构建(沿用 ProbDisclosure.ts:87,114,131,141、UIBattle.ts:582,1120,1126 已有写法);新面板一律不建 prefab | 新面板的真源只有 .ts;agent 能在无编辑器条件下改出一个完整弹窗 |
| A3 | Spine 真源瘦身:155 个 spine 包装 prefab(50,227 行)→ 一次 sp.Skeleton 初始化函数 + 一张"英雄/怪/技能/子弹 → sku 名 + 默认皮肤"表(进你现有 config_tables.xlsx 管线) | 删除这 155 个 prefab 后,战斗/主页动画逐项过;git ls-files 里 prefab 数从 214 → 59 |
| A4 | 构建/预览脚本化 + 无头截图:产出 web 包,用 Puppeteer 打开并截 5 个主面板;(2.4 CLI 构建现状见 D3) | 一条命令从源码到截图,退出码可信;截图能进 review |
A2/A3 做完的实际效果:198,883 + 50,227 行的 JSON 里,真正需要人/agent 读的部分变成 ~1 万行
.ts,agent 从"改不动"变成"主力劳动力"。
路线 B|升 Cocos Creator 3.8.x + Funplay MCP(Mode B)
- 收益:agent 能直接操作存量 scene/prefab;多平台官方导出;分包/远程资源现成。
- 前置:D1(2.x prefab 能否自动迁移)必须先有结论,否则等于用 47 个面板 + 155 个 spine 包装的重做量去换一条 MCP 通道。
- 上线代价:MCP 要求编辑器 GUI 在场、单实例,agent 不能并行,产出仍是 uuid JSON,review 困难;扩展装进
extensions/(本工程目前没有extensions/,只有packages/下三个 ai-* 扩展:ai-asset-pipeline/ai-asset-studio/ai-game-audio-forge,它们是否仍可用也要确认 = D7)。
路线 C|Phaser 4 + TS + Vite(Mode A 满分,新项目/v2 才做)
- 收益:C1-C7 全绿;场景/界面/战斗逻辑全部文本真源;agent 可并行分片、可无人值守跑构建与截图回归;LLM 语料最厚(545,951 次/周)→ 幻觉率低。
- 你要自付的清单(按你的实际内容量列):UI 组件层(47 面板 / 384 Label / 138 Button / 9 ScrollView / 1 EditBox)、Spine 接入(141 个骨架)、
weapp-adapter(4 类 patch:npm 导出 / document+window / XHR / WebGL 上下文)、分包与远程资源、热更、开放数据域、各端 SDK、音频与字体子集化。 - 明确不建议:为了 agent 产能把现有工程整体重写。§1 的数据说明产能瓶颈在"真源不是文本",这在路线 A 里就能解决。
6. 待确认清单(请你点选/答复;未答复我按括号内默认值自决)
| # | 问题 | 默认值(你不答时我这么做) |
|---|---|---|
| D1 | 是否有渠道验证 Cocos 2.4.15 prefab → 3.8 的迁移工具实际效果(尤其 47 个 UI 面板)? | 按"无法自动迁移、需全量重做"评估,路线 B 判负 |
| D2 | 是否允许试用 Cocos 商店的 Funplay MCP / #9469 / #8586(均需编辑器 GUI、部分可能收费)? | 不试用,路线 B 不启动 |
| D3 | 本机是否已有 Cocos Creator 2.4 编辑器可执行文件,能试 --project/--build 命令行构建? | 假定不可用,A4 退化为"agent 只改源、人点构建" |
| D4 | web 平台构建能否在纯 Chrome(无小游戏环境)跑通全部逻辑(有无 wx.* 硬依赖)? | 假定有依赖,A4 里加一层 wx mock |
| D5 | 是否有真机可用以验证开放数据域/广告/支付? | 把这些验收标为"仅人工,不进 agent 回路" |
| D6 | 路线 A 的四步估时(我按 0.5/1.5/1/1 周估)与你的排期是否冲突? | 按我的估时排 |
| D7 | packages/ 下三个 ai-* 扩展(2.4 面板式)现在还在用吗?能不能承担素材管线自动化? | 视为在用,A 阶段不动它们 |
| D8 | 是否真的需要 3D/多端中的"原生 App"?(会改变 B 与 C 的分值) | 只按"微信 + 尽可能多多端小游戏"算 |
| D9 | Phaser 路线要不要做(作为 v2 或另一个小项目立项)? | 只做技术预研 spike(1 个面板 + 1 个战斗场景),不立项 |
| D10 | docs/build-and-hotupdate-guide.md:60,113 的"目标平台未定/包体上限未定"口径要不要按现状(已配 wechatgame + 主包 4M/总包 30M)改写? | 不改别人文档,只在本次选型里按实测口径走 |
附录 A:本机实测命令与数字(2026-10-06)
# 引擎版本:project.json:4 -> "version":"2.4.15"
find assets -name '*.prefab' -printf '%h\n' | sort | uniq -c | sort -rn # 214 个,spine 目录占 155
grep -rhoE '"__type__": ?"[A-Za-z][A-Za-z.]*"' assets --include=*.prefab | sed -E 's/.*"([A-Za-z][A-Za-z.]*)"$/\1/' | sort | uniq -c | sort -rn
# -> cc.Color 3636 / cc.Size 2093 / cc.Node 2093 / cc.PrefabInfo 2093 / cc.Sprite 851 / cc.Label 384
# -> cc.Widget 240 / cc.Prefab 214 / cc.ClickEvent 169 / sp.Skeleton 141 / cc.Button 138 / cc.ProgressBar 65
grep -rlE '"__type__": ?"(cc\.Button|cc\.ClickEvent|cc\.Widget|cc\.Label|cc\.ScrollView|cc\.Toggle)"' assets --include=*.prefab | wc -l # 47
find assets -name '*.prefab' -exec cat {} + | wc -l # 249238 行
find assets -name '*.prefab' -not -path '*spine*' -exec cat {} + | wc -l # 198883 行(58 个)
find assets/scripts -name '*.ts' | wc -l ; find assets/scripts -name '*.ts' -exec cat {} + | wc -l # 110 / 30924
for p in 'new cc.Node' 'addComponent' 'cc.instantiate'; do printf '%s ' "$p"; grep -roh -- "$p" assets/scripts --include=*.ts | wc -l; done # 40 / 46 / 36(按出现次数,不是行数)→ 代码建 UI 已有大量先例
npm run typecheck; echo "exit=$?" # 实测 exit=0、0 条错误(typescript 5.9.3 在 node_modules 里)
git log --oneline | wc -l; git status --porcelain | wc -l # 11 / 104(工程已是 git 仓库,且有在途改动)
关键文件:project.json:4(2.4.15)、tsconfig.json:5-6(target es5、无 strict)、settings/wechatgame.json:2,5,7(appid wx9632ab7f64e42bf0 / REMOTE_SERVER_ROOT https://dd.qthy.cc / startSceneAssetBundle true)、build-templates/wechatgame/{game.json,main.js,project.config.json,openDataContext/index.js}、分包后处理 tools/post-build-wechat-subpackage.sh:27,43-48,54(搬到 subpackages/{name}/,脚本结尾仍要求"用微信开发者工具重新编译验证"= 人在场)、配置解包 export_config.py:29,32,94-96 → config_export/*.json、产物 assets/resources/dataconfig/allconfig.bin(695,761 B,实测 27 条目)、代码建 UI 先例 assets/scripts/ui/commonTip/ProbDisclosure.ts:87,114,131,141、assets/scripts/ui/UIBattle.ts:582,1120,1126。
纠偏(重要):
export_config.py的shutil.rmtree()删 xlsx 唯一源是旧缺陷,现已修复——代码里rmtree只出现在变更记录注释:8与:14-15的修复说明中,活代码走"备份上一版 json 到config_export/_prev_json_<ts>/+extractall不删其它文件"(:39,92-96)。今后任何文档/记忆再引用"会永久删 xlsx"这条,属于旧口径。 同类过期口径(2026-10-06 实测已推翻 2026-10-05 审查基线中的两条):① "无 node_modules、npm run typecheck跑不起来" —— 现在node_modules里有 typescript 5.9.3,npm run typecheck退出码 0、0 条错误;② "工程不是 git 仓库" ——shuihu-master/.git存在,git log11 条提交,当前工作区有 104 项改动/未跟踪(=有在途工作,本次调研全程只读、不提交)。 另一处不一致(本文不改别人文档,仅登记):①shuihu-master/docs/README.md:4,12,152写 "Cocos Creator 2.4.13",实测project.json:4为 2.4.15;②shuihu-master/docs/build-and-hotupdate-guide.md:60,113仍写"目标发行平台未定(待办 1.6)、包体上限未定(待办 1.8)",而settings/wechatgame.json已配好小游戏 appid —— 见 D10。
附录 B:外部事实来源
- 微信小游戏分包/包体上限:https://developers.weixin.qq.com/minigame/dev/guide/base-ability/subPackage/useSubPackage.html(主包 4M / 总包 ≤30M / 独立分包 ≤4M)
- 引擎适配(Cocos/Laya/Egret + adapter 模拟 BOM/DOM,通用 H5 引擎走此路):https://developers.weixin.qq.com/minigame/dev/guide/game-engine/cocos-laya-egret.html
- Phaser 4 跑通微信小游戏的最小可行性验证(自写 weapp-adapter、patch 点、"无需降级"):https://juejin.cn/post/7672283918332706862(2026-08)
- Phaser 版本与维护:https://github.com/phaserjs/phaser/releases(v4.2.1,2026-07-09)、GitHub API:40,410★ / 最近推送 2026-08-21 / MIT;npm 周下载 545,951
- Cocos Creator 3.8 的 MCP 通道(3.8+、105 工具、编辑器内 HTTP
127.0.0.1:8765、extensions 安装、安全检查):https://cloud.tencent.com/developer/article/2736077;商店条目 https://store.cocos.com/dashboard/detail/8913、https://store.cocos.com/app/detail/9469、https://store.cocos.com/app/detail/8586 - Unity WebGL → 小游戏技术 QA(需编辑器转换工具、内存/字体限制、2D 重 UI 短板):https://developers.weixin.qq.com/minigame/dev/guide/game-engine/unity-webgl-transform/Design/DevelopmentQAList;Unity 编辑器 MCP 生态:https://github.com/CoplayDev/unity-mcp(14,710★,2026-10-06 仍在推)
- Godot → 微信/抖音小游戏社区适配(Godot 4.6.4 Web 导出、≈20MB、仅 WebGL2、9★):https://github.com/mkdevkit/godot-minigame
- LayaAir 3 微信小游戏发布(IDE 发布、
.ls场景、weapp-adapter.js、IDE 勾选分包):https://layaair.layabox.com/3.x/doc/released/minigame/wechat/;引擎仓库 https://github.com/layabox/LayaAir(MIT,2,204★,2026-09-24) - Eva.js 仓库 https://github.com/eva-engine/eva.js(MIT,1,782★,2026-07-10);背景 https://developer.aliyun.com/article/786429
- 停更引擎盘点(Egret 2022-02 停维护、Hilo、cocos2d-x v2/v3):https://news.17173.com/content/04042026/163835087.shtml
- Cocos Creator 发布到微信小游戏手册(3.8 提到"命令行发布项目"):https://docs.cocos.com/creator/3.8/manual/zh/editor/publish/publish-wechatgame.html;2.4 手册页只链接了另一份 CLI 指南,未确认 2.4 的 CLI 构建能力(= D3)
第 2 篇 · 新项目 · Agent 优先技术栈全清单(主目标:微信小游戏)
原文件:
docs/agent-first-stacks-new-project-2026-10.md(已并入本篇)
新项目 · Agent 优先技术栈全清单(主目标:微信小游戏)
版本 v2(只看新项目) | 2026-10-06 | 上一代:agent-tech-stack-review-2026-10.md(那份管"存量 Cocos 2.4.15 工程怎么办",本文管"从零立项选什么")
2026-10-06 第三次追加(重要更正):后续实测把本文三处口径改掉了——① COCOS 4 已于 2025-12-30 公布、彻底 MIT 开源、官方按"MCP/Agent 交付逻辑"重做并 CLI 化,但小游戏各端适配官方明说"分阶段解锁";② Cocos 3.8 的"命令行发布项目"要求图形会话(文档原文),只给 macOS/Windows 范例,Linux 无官方支持;③ Cocos/Laya 的官方渠道里没有 QQ 小游戏、快手小游戏、Bilibili、小米(Cocos 侧),所以"多端一次导出"必然有缺口。详见第三版
agent-plus-multiplatform-stacks-2026-10.md(决策编号 D25 起)。 阅读门槛:本文默认你已经接受 Mode A 工作流=真源全是文本 → 命令行构建 → 无头自证 → CI 出预览。凡 Mode A 不成立的栈,一律不进推荐位(只进"可选/排除"表并注明原因)。 标注规则:[实测]= 我这次亲自拉取并核对;[代理查证]= 调研子代理取证、我未逐条复测(URL 都在附录);[估]= 我的估计,不是官方承诺。决策编号从 D11 起,与上一代 D1–D10 不冲突。
0. 速查(先看这一屏)
一句话:新项目要"agent 全面编程",最优解不是找一个"支持 AI 的引擎",而是找一个真源全是文本、且能在无 GUI 环境下自证的组合。下表按品类给首选位,§3 再展开 3 套可直接开工的配方(含依赖清单与 agent 回路命令)。
默认栈:TypeScript + Vite + PixiJS 8(重 UI)/ Phaser 4(重玩法)+ 纯 JS 物理 + LDtk 文本关卡 + Aseprite CLI 序列帧 + 自维护 weapp-adapter + miniprogram-ci 出预览。
| 场景 | 首选栈 | 为什么是它 | 次选 |
|---|---|---|---|
| 重 UI 的 2D(塔防/卡牌/放置/模拟经营) | PixiJS 8.22.0 + @pixi/ui 2.4.1 [实测] | 唯一"渲染层现成 + UI 控件库官方在维护 + 全 MIT + 内置 TS 类型"的组合;界面全部是 .ts | Phaser 4 + 自建控件层 |
| 重玩法的 2D(动作/弹幕/射击/物理解谜) | Phaser 4.2.1 [实测] | LLM 语料最厚(npm 545,951/周、40,410★);场景=代码;已有"Phaser4 跑通微信小游戏"的可行性验证 | PixiJS + 自研玩法层 |
| 超休闲 / 一周 demo | kaplay 或 自研 Canvas2D + TS | 真源最少、心智负担最低(kaplay 1,809★、2026-10-04 仍在推)[实测] | Excalibur、LittleJS |
| 3D / 2.5D | three.js r186(自维护 adapter) 或 Babylon 9.29.0 | 两者都能纯代码建场景;three 语料碾压(24,326,206/周 [实测]),Babylon 内置 TS 类型 + Apache-2.0 [代理查证] | PlayCanvas(若接受云编辑器) |
| 必须"多端一次导出"(微信+抖音+QQ+快手+支付宝+H5+原生) | Cocos Creator 3.8.x(代码优先用法)+ Funplay MCP 兜底 | 官方导出链路覆盖最广,平台 SDK 差异由引擎吃掉 | LayaAir 3 |
任何一条不满足就别选(硬门槛):① 场景/界面有纯文本真源;② 不开 GUI 能构建出包;③ 能无头跑起来并截图断言;④ 依赖是 MIT/Apache 且可商用;⑤ 资产(动画/地图/音效)的真源也能文本编辑(§4)。
1. 判据(C1–C10,比上一代多 3 条)
| # | 判据 | 新项目里的具体含义 |
|---|---|---|
| C1 | 场景/界面无不可读 ID 的文本真源 | 没有 .prefab/.fire/.unity 这类 uuid 互引;界面是 .ts/.tsx-like DSL 或可读 JSON |
| C2 | 无 GUI 构建 | vite build / 引擎 CLI 返回可信退出码;不要求开编辑器 |
| C3 | 无头自证 | 同一份代码能在 Chromium(WebGL)里跑,截图 → 像素/节点断言 |
| C4 | 静态门禁 | TS strict + eslint;agent 第一道回路(no-restricted-globals 禁直连 wx.*,见 §6) |
| C5 | LLM 语料密度 | npm 周下载 + star + 文档站稳定度;有学术证据:web game 智能体编码基准里 Phaser 被选作目标引擎(OpenGame, arXiv 2604.18394 [代理查证]) |
| C6 | 可并行分片 | 多个子代理同时改不同面板/关卡不打架(按文件天然分片) |
| C7 | 平台 SDK 差异被单层隔离 | platform/ 目录内吸收 wx/tt/qq/ks 差异 |
| C8 | 资产真源可文本编辑(新) | 动画/地图/图集/音效的工程文件要么是文本、要么只"单向消费";见 §4 的可编辑性排序 |
| C9 | 发布/验证回路可 CLI 化(新) | miniprogram-ci 能无开发者工具出预览二维码与上传体验版 [代理查证](我实测周下载 21,609 [实测]);但小游戏用不了 miniprogram-automator(0.12.1,2023-11-06 后未更新 [实测])→ 验收只能"无头浏览器自证 + 真机人工" |
| C10 | 依赖许可可商用、无 GPL 传染(新) | pixi.js/@pixi/ui/phaser/kaplay/planck/LDtk 全 MIT [实测/代理查证];Tiled 是 GPL(工具 GPL 不传染你的地图数据,但要知道);Spine/Rive/Live2D 编辑器为付费闭源 |
给预期:GameDevBench(arXiv 2602.11103
[代理查证])报告智能体在 2D 游戏任务上解题率约 33%。也就是说 agent 不是全自动流水线,上面 C1–C10 的全部意义就是把"剩下 67% 的失败"变成机器能当场发现的失败。
2. 候选栈全景(6 组,尽量铺满)
A. 代码优先 2D 引擎(Mode A 天生满分)
| 栈 | 版本/许可/热度 [实测除非标注] | agent 场景能力 | 小游戏路径 | 主要风险 |
|---|---|---|---|---|
| Phaser 4 | 4.2.1(2026-07-09)/MIT/40,410★/545,951 次/周 | ★★★★★ 场景=Scene 代码 | 官方 Adapter + 自写 weapp-adapter.js(已有人跑通) | 无成套 UI 控件(RexUI 对 v4 的兼容=D18);v4 相对 v3 教程/语料迁移期 |
| PixiJS 8 + @pixi/ui | pixi.js 8.22.0 MIT 1,502,200/周;@pixi/ui 2.4.1 MIT 21,482/周,peer pixi.js ^8.6.2,只依赖 tweedle.js | ★★★★★ 界面=组件树代码 | Adapter + WebGL 渲染器(v8 默认探 WebGPU,小游戏里需强制 WebGL=D19) | 玩法层(场景管理/输入/补间/物理)要自己或第三方拼 |
| kaplay(Kaboom 后继) | MIT/1,809★/2026-10-04 仍在推/9,593/周 | ★★★★★ 声明式 API,代码量极小 | 纯 JS/TS,走 Adapter | 社区小,重 UI 控件基本靠自建 |
| Excalibur.js | MIT/14,986/周(版本未复核 [代理查证]) | ★★★★★ | 同上 | 语料薄于 Phaser/Pixi |
| melonJS | 未核实:melon.js 包名在 npm 404,melonjs 未取到版本号 | ★★★★☆ | 未知 | 证据不足,暂不推荐 |
| LittleJS | 宣称 12KB 单文件(未核实) | ★★★★★ | 未知 | 文档薄,agent 语料更少 |
| Eva.js(阿里淘系) | MIT/1,782★/2026-07-10 | ★★★★☆ ECS+JSON 场景,无编辑器 | 面向淘宝/支付宝互动为主,微信侧证据薄 | 社区与语料小,跨端要自证 |
B. 引擎型,但可被约束成"代码优先"
| 栈 | 事实 | agent 能力 | 备注 |
|---|---|---|---|
| Cocos Creator 3.8.x | cocos/cocos-engine 9,846★/2026-09-21/License 非标准 SPDX [实测] | ★★★★☆(代码建节点 + CLI 构建;MCP 让 agent 能读写 scene/prefab) | 新项目纪律:界面一律代码/JSON 建,不许往编辑器里拖 prefab,否则退化成 Mode B。Funplay MCP = 3.8+、105 工具、编辑器内 HTTP 127.0.0.1:8765(上一代文档已引) |
| LayaAir 3 | layabox/LayaAir 2,204★/MIT/2026-09-24 [实测];IDE 闭源 | ★★★☆☆ 引擎可纯代码,发布依赖 IDE | 多端官方导出是真优势;3D 需求时再排前 |
| Godot 4 | .tscn/.gd 纯文本、godot-mcp 生态 5,950★ [代理查证] | ★★★★☆(脱离小游戏满分) | 小游戏是硬墙:官方 Web 导出为 WASM+线程;社区适配 9★/≈20MB/仅 WebGL2 → 新项目主投小游戏则排除 |
| PlayCanvas | 引擎 16,986★ MIT 2026-10-05;npm playcanvas 2.23.0 内置 d.ts 103,124/周;编辑器仓库亦 MIT [代理查证] | ★★★★☆(可纯代码用引擎) | 官方手册仍以云编辑器为主流程,能否完全离线发布未证 → 只有你接受"引擎当库用"才选 |
C. 3D / 2.5D
| 栈 | 事实 | 小游戏可行性 | 建议 |
|---|---|---|---|
| three.js | r186(2026-09-24)、three 0.186.1 MIT、包内不含类型(社区 @types/three 0.186.0)、24,326,206/周 [实测] | 官方适配仓库 wechat-miniprogram/threejs-miniprogram 799★、末次推送 2023-05-22、基于 r108 [实测] → 必须自己把 adapter 打到新版 | 首选;语料碾压,且 glTF 资产是文本(§4) |
| Babylon.js | 9.29.0(2026-10-01)、@babylonjs/core Apache-2.0 + 内置 TS 类型、434,846/周;Inspector 自称"诊断工具"、官方 Editor 仓库 community-managed → 纯代码建场景成立 [代理查证] | 未找到官方/社区小游戏适配文档(只有 2020 踩坑帖)→ 风险最高 | 想要"引擎自带全套(材质/动画/物理/后处理)"再选;spike 先行(D20) |
| A-Frame / WebXR 类 | 面向 WebXR,非小游戏场景 | 无依据 | 排除 |
D. 无引擎 / 官方轻量件(agent 自由度最高,但要自己搭)
- 纯
wx.createCanvas+ 自研渲染/ECS + TypeScript:真源 100% 自己的代码,agent 无第三方 API 幻觉问题;代价是渲染器、图集、字体、补间、音频、调试面板全自研。适合超休闲或你想长期沉淀自有引擎(估 首版投入 3–6 人周)。 wechat-miniprogram/minigame-canvas-engine[实测:312★/MIT/2026-09-10 仍在推]:官方"轻量 canvas 2D 渲染引擎 + 开放数据域解决方案",用**组件树 + style 子集(纯文本配置)**描述 UI。→ 它是"排行榜/好友面板"这类开放数据域 UI 的最佳 agent 友好载体(那里你本来就不能跑主引擎),也可当作轻量 UI 层的参考实现。
E. 支撑库(新项目要用,且必须"纯 JS、无 WASM")
| 用途 | 选它 | 事实 |
|---|---|---|
| 物理/碰撞 | planck 1.5.0(内置类型)[实测下载量 217,176/周];备选 matter-js 0.20.0(MIT,2024-06-23,377,587/周)、cannon-es 0.20.0(内置 d.ts,158,451/周,但仓库末次提交 2024-01=维护弱)[代理查证] | 都是纯 JS,小游戏可用 |
| 物理(排除) | rapier(WASM) | @dimforge/rapier3d 0.21.0 [代理查证];而 WXWebAssembly 只有 instantiate(path)、path 必须指向代码包内 .wasm/.wasm.br、基础库 2.13.0+、SIMD 需微信 8.0.25+、iOS 不支持 Global [代理查证] → 别把上线赌在这上面 |
| 关卡/地图 | LDtk 1.5.3(.ldtk 即 JSON,schema 公开,MIT,2026-01);Tiled 1.12.2(TMX=XML,另有官方 JSON 格式与 CSV 图层数据,GPL,2026-05-27,有导出 CLI)[代理查证] | 两者 agent 都能直接生成/改 |
| 序列帧/图集 | Aseprite CLI v1.3.18.6(--batch --sheet --data 出 PNG+JSON);TexturePacker(CLI 存在,CI/Docker 需 Pro)[代理查证] | .ase 是二进制 → 只当输入,产物 JSON 才进 agent 可改面 |
| 音效 | ZzFX/ZzFXM(MIT,约 20 个数字参数=完全文本真源)[代理查证];播放层 Howler.js / Tone.js;小游戏有 wx.createWebAudioContext [代理查证] | 最终仍要烘焙成官方建议的 mp3/aac |
| 构建/测试 | Vite + esbuild + TypeScript(strict) + Vitest + Playwright/Puppeteer(Chromium WebGL) | 全命令行,退出码可信,agent 闭环的地基 |
F. 新项目也别碰(理由各一句)
Egret(2022-02 停维护)· cocos2d-x v2/v3、Hilo(2016 后停更)、CreateJS/EaselJS · Defold/LibreFX 等需自编 WASM 的桌面系 · Godot 主投小游戏(社区适配 9★)· Unity/团结为 agent 产能而上(转换链路必须 GUI,且官方 QA 自陈 2D 重 UI 面临字体/纹理限制;团结小游戏文档自陈 WASM 单线程、无 SIMD、iOS 内存受限 [代理查证])· Spine/Rive/Live2D 工程文件当"agent 可改真源"(全是二进制或闭源 GUI)。
3. 三套可直接开工的配方(含 agent 回路)
配方①「重 UI 2D」——塔防/卡牌/放置/经营(对应你这类项目的默认解)
core: Vite + TypeScript(strict) + PixiJS 8.22.0 + @pixi/ui 2.4.1(MIT)
逻辑: 自研 Entity-Component(或 miniplex,纯 TS)
关卡: LDtk(.ldtk=JSON) → 编译进 src/levels/*.ldtk(agent 直接写)
动画: Aseprite CLI 出 PNG+JSON 图集;程序化补间用 tweedle.js
音频: ZzFX 参数数组(.ts) → 构建期烘焙 mp3/aac
平台: src/platform/{wx,tt,qq,ks}.ts + eslint 禁业务层直连 wx.*
小游戏: 自维护 weapp-adapter.js(patch: document/window、XHR、Image、canvas 创建、WebGL 上下文)
回路: tsc --noEmit → eslint → vitest → playwright 截图断言 → vite build --mode wxgame → miniprogram-ci preview
- agent 干得了:整块界面、组件树、关卡 JSON、数值表、单测、素材命名对齐(因为全是文本)。
- 人必须干:真机手感、审核、开放数据域联调、性能(iOS 内存)。
- 里程碑 估:第 1 周把回路跑通(能构建+截图+出预览码);第 2–3 周把 5 个核心面板与 1 个战斗场景做完;第 4 周起 agent 可并行铺量。
配方②「重玩法 2D」——动作/弹幕/射击/物理解谜
core: Vite + TypeScript(strict) + Phaser 4.2.1
物理: planck 1.5.0 或 matter-js(Phaser 自带的 matter 版本较旧,需确认)
地图: Tiled(TMX/XML 或 JSON,agent 可写;有导出 CLI)
UI: 自建控件层(按钮/列表/九宫格),或 RexUI(兼容性=D18)
回路: 同配方①
- 为什么语料密度在这里最关键:玩法代码量大、API 面广,LLM 对 Phaser 的熟悉度是所有 JS 引擎里最高的(40,410★/545,951 次/周
[实测],且学术基准 OpenGame 直接选它作目标引擎[代理查证])。
配方③「多端一次导出」——上线窗口紧、渠道多、老板要"微信+抖音+快手+支付宝+H5+App"
core: Cocos Creator 3.8.x + TypeScript,但强制"代码优先"纪律:
- 界面/战场节点一律 new Node()/addComponent 建(禁止 prefab 拖拽,
或只允许" prefab 当纯资源壳、真源字段全在 .ts")
- 关卡与数值走 JSON(沿用你已验证的 allconfig 式管线,但真源用 CSV/JSON 而非 xlsx)
兜底: Funplay MCP(3.8+,105 工具)→ 仅用于"必须动存量 scene/prefab"的偶发场景
回路: 引擎 CLI 构建 → 无头浏览器/web 包截图 → miniprogram-ci preview/upload(各端各自的 CLI:微信 miniprogram-ci、抖音 tt-minigame-ide-cli)
- 代价:C2/C6 弱于①②(编辑器在场、二进制化 JSON 的 diff 噪声),agent 产能天花板低于 Mode A。
- 收益:平台 SDK、分包、远程资源、开放数据域这些"脏活"由官方吃掉;你要做的不是引擎而是纪律。
4. 资产管线:新项目最容易踩、也最致命的一坑(C8)
可编辑性排序(结论):
可 agent 直接读写 ▸ LDtk(.ldtk=JSON) ≈ Tiled(TMX/XML 或 JSON) ≈ .gltf(JSON) ≈
序列帧 PNG + 图集 JSON(Aseprite/TexturePacker 产物) ≈
ZzFX/jsfxr 参数数组 ≈ Live2D 的 .model3/.motion3/.physics3.json
只可"单向消费" ▸ Spine 导出的 skeleton JSON(官方有格式文档,可读、可脚本生成,
但官方论坛明确:靠数据文件重建工程风险极大;.spine 是专有二进制)
DragonBones 导出 JSON(编辑器近乎停更,PRO 仓库 404,社区续作 LoongBones)
agent 完全改不动 ▸ Rive .riv(二进制+闭源编辑器)· Aseprite .ase · Spine .spine ·
Live2D .cmo3/.can3/.moc3 · .glb(二进制;且 Draco/Meshopt 压缩后
几何连结构层都不能靠文本改)
三条立项规则:
- 动画方案按"agent 能不能改"选:默认走序列帧 + JSON 图集 + 程序化补间(完全文本);骨骼动画只在确实需要时用 Spine,并把它的 skeleton JSON 当只读输入(美术在 Spine 里改,agent 只消费与装配),绝不让 agent 去写
.spine。 - 数值/关卡真源用 CSV/JSON,不用 xlsx:xlsx 是二进制(实测 你现在
config_tables.xlsx→allconfig.bin的管线里,xlsx 与 json 已出现 10/191/924/13927 行漂移的历史教训);新项目把表拆成 CSV/JSON 进 git,构建期编译成运行时格式,agent 才能安全改数值。 - 3D 用 .gltf 不用 .glb(进版本库的那一份);压缩(Draco/Meshopt)只在构建产物阶段施加,别把压缩版当源。
5. 验证与发布回路(C9:决定能不能"无人值守")
| 环节 | 能做什么 | 事实与坑 |
|---|---|---|
| 构建 | vite build → dist/ + 小游戏包结构(game.js/game.json) | 全命令行,退出码可信;分包/远程资源要自建插件产出 subpackages/* |
| 无头自证 | Playwright/Puppeteer 打开 web 构建,取 canvas 截图、跑 DOM-less 断言 | 这是 agent 的主力验收;小游戏专属 API 用 wx mock;WebGPU 需回退 WebGL(D19) |
| 出预览 | miniprogram-ci:preview 生成二维码、upload 传体验版,无需安装/打开开发者工具,需"代码上传密钥 + IP 白名单" | 2.1.31(2024-11-12)[代理查证],周下载 21,609 [实测];文档在小游戏树下 |
| 自动化操作真机模拟器 | miniprogram-automator | ⚠️ 官方文档只声明支持"小程序";小游戏树下的 auto 页复用的是小程序 API(pageStack/navigateTo 在小游戏不存在);0.12.1 且发布于 2023-11-06 [实测] → 不要把验收押它上面,除非 D17 spike 证明可用 |
| 开发者工具 CLI | open/preview/upload/auto、--auto-port,需在工具里开启服务端口 | 只有 macOS(Contents/MacOS/cli) 与 Windows(cli.bat),文档无 Linux [代理查证] → CI 别设计"自动开工具";无 GUI 容器跑小游戏无官方依据 |
| 抖音侧 | 官方 npm tt-minigame-ide-cli(bin tmg:login/preview/upload) | 2.1.1,周下载仅 258 [代理查证];未找到官方自动化 SDK;tt/wx 差异无官方对照表(D21) |
| 包体红线 | 主包 4MB/总包 ≤30MB/独立分包 ≤4MB [实测·官方文档] | 与引擎无关;远程资源/CMS 素材从第一天就设计进去 |
推荐的 agent 门禁顺序(每一步失败都要响亮,不许静默):
tsc --noEmit → eslint(含"业务层禁直连 wx"规则)→ vitest run → playwright 截图 + 像素断言 → vite build → miniprogram-ci preview(人扫码)。
6. 多平台策略("尽可能多平台"的真实代价)
| 目标端 | 引擎/官方支持 | 代码优先栈(Phaser/Pixi/three)要做的 |
|---|---|---|
| 微信小游戏 | 全栈可行 | 自维护 weapp-adapter:官方 Adapter 页提供 weapp-adapter.zip(模拟 createElement/Image 等,非基础库需自行引入)[代理查证] |
| 抖音小游戏 | Cocos/Laya 官方;官方 Adapter 页存在 | 复用同一套 shim(tt.* 与 wx.* 高度同源)+ tmg CLI 出预览 |
| QQ/快手/B站/支付宝/美团 | Cocos/Laya 官方导出面板给多端 | 各端 adapter + 各自 CLI/上传方式;估 单端 1–3 人日(含真机调试) |
| H5 / Web | 全栈天然支持 | 零成本(且这是无头自证的入口) |
| 原生 App | Cocos/Laya/Unity 官方;JS 引擎需 webview 套壳 | 套壳会引入新坑,除非必须否则别承诺 |
纪律(一次定,永久省):把平台 API 关进 src/platform/,并用 eslint no-restricted-globals/no-restricted-syntax 禁止业务代码直接摸 wx/tt——否则"多端"会在半年后变成"每个功能改 5 处"。
运行时约束备忘([代理查证],来自官方文档):小游戏无 DOM/BOM、无全局 document/window、入口 game.js/game.json、GameGlobal 为全局、canvas 由 wx.createCanvas 取得、支持 Worker(createWorker,V2 有独立规则)、API 索引里没有 createSelectorQuery;官方对非 Cocos/Laya/Egret 的通用路径就是 Adapter 替换 BOM/DOM,另有面向 WASM/Emscripten 的"通用引擎适配方案"页。
7. 选型决策树(30 秒走一遍)
需要 3D/2.5D?
├─ 是 → 平台必须小游戏?
│ ├─ 是 → three.js(自写 adapter) 先做 3 天 spike;spike 过 → 选它;不过 → 降级"2.5D 伪 3D(Pixi/Phaser)"
│ └─ 否(Web/原生也要)→ Babylon 9(内置类型/组件最全)或 three
└─ 否 → UI 面板数量级 ≥30 个?
├─ 是(塔防/卡牌/经营/放置)→ 配方①:PixiJS 8 + @pixi/ui
└─ 否 → 玩法/物理/弹幕密集?
├─ 是 → 配方②:Phaser 4 + planck
└─ 极简单局 → kaplay 或自研 Canvas2D
再叠加两个否决项:
A. "首发就要 5 个以上小游戏端"? → 权重倒向 配方③(Cocos 3.8 代码优先 / Laya 3)
B. "美术已定 Spine/Rive 且要求频繁调动画"? → 该项目的动画不进 agent 回路,写清人工环节
8. 推荐结论
默认解:新项目主投微信小游戏且要 agent 全面编程 → 配方①(PixiJS 8 + @pixi/ui)或配方②(Phaser 4),Vite + TS strict + 纯 JS 物理 + LDtk/Tiled 文本关卡 + Aseprite CLI 图集 + 自维护 weapp-adapter + miniprogram-ci。 为什么(3 条):① 只有"真源全文本 + 无 GUI 构建 + 无头自证"能同时把 C1–C10 打满,这是 agent 产能的地基,不是口味问题;② 2D 需求上它们成熟、MIT、语料厚(Pixi 1,502,200/周 + @pixi/ui 官方维护;Phaser 545,951/周 且被学术基准选作目标);③ 平台脏活(adapter/分包/预览)有官方依据可循,且不依赖任何闭源 GUI。 何时改选 Cocos 3.8 / Laya 3:多端渠道 ≥4 个、或团队已有人熟引擎、或要原生 App —— 这时官方导出链路省下的成本大于 Mode A 损失的产能,但要用"代码优先纪律 + MCP 兜底"把 agent 通道留住。 明确不推荐:Godot(小游戏靠 9★ 社区件)、Unity/团结(转换必 GUI、2D 重 UI 短板)、WASM 物理(rapier 撞上 WXWebAssembly 一堆限制)、把 Spine/Rive/Aseprite 工程当 agent 可改真源。
9. 待确认 D11–D24(你点选/答复;未答我按默认值自决)
| # | 问题 | 默认值 |
|---|---|---|
| D11 | 新项目主品类是"重 UI"还是"重玩法"?(定配方①还是②) | 按重 UI(配方①)出脚手架 |
| D12 | 是否接受自维护 weapp-adapter(估 3–5 人日起步,含音频/XHR/输入) | 接受,spike 里先做最小版 |
| D13 | 首发要覆盖几个小游戏端?(≥4 端则倒向配方③) | 只微信首发,架构预留 shim |
| D14 | 有 3D/2.5D 需求吗? | 无;不做 three/Babylon spike |
| D15 | 美术管线是否已定 Spine/Rive?若是,动画就划出 agent 回路 | 按"序列帧 + 程序化动画"设计 |
| D16 | 是否允许付费工具(Spine Essential $69/Pro $379、TexturePacker Pro for CI) | 只用免费:Aseprite CLI / LDtk / Tiled / ZzFX |
| D17 | 要不要我实测 miniprogram-automator 在小游戏里能否 evaluate/screenshot(决定要不要它) | 做一次 spike,不行就永久剔除 |
| D18 | RexUI 是否兼容 Phaser 4?(决定重 UI 场景是否改用 Pixi 方案) | 不依赖 RexUI,UI 层自建 |
| D19 | Pixi v8 在小游戏里强制 WebGL 的可行性与性能(需 spike) | spike 通过才用 @pixi/ui |
| D20 | Babylon 9 的小游戏适配有无生产先例(我查到的是"未找到") | 不选 Babylon |
| D21 | tt/wx API 差异无官方对照表 → 是否允许我用"自建 shim + 双端断言"的方式收敛 | 允许 |
| D22 | CI 机器有无 Windows/macOS(开发者工具 CLI 只支持 mac/win) | CI 只用无头浏览器 + miniprogram-ci,不碰开发者工具 |
| D23 | 服务端要不要一起定(排行榜/存档/广告回调) | 排行榜优先用官方开放数据域 + minigame-canvas-engine,不自建 |
| D24 | 首个可验证里程碑要不要我直接搭脚手架(空仓 + 门禁 + 1 个面板 + 1 个场景) | 等你点头再动手(本轮全程未改工程) |
10. 实测回填(2026-10-06 当日,代码优先栈真跑验证)
按本文判据在 水泊风云录/Demo/ 搭了一个最小工程(Phaser 4.2.1 + TS + Vite,配方②),把"写玩法 → 门禁 → 构建 → 无头自证 → 出小游戏包"整条链跑通:
| 环节 | 结果 |
|---|---|
check-imports(机械守卫)+ tsc --noEmit + 双端构建 | 全绿 |
| 垫片设备路径单测(Node + 假 wx + 真产物) | 24/24 |
小游戏运行时模拟(真 Phaser + 真垫片 + 真 game.js) | 18/18(含加分/掉命/触摸/结算/最高分入 wx 存储/点击重开) |
| 小游戏包 | game.js 1360 KB + wx-adapter.js 7 KB + 两个 json = 1368.6 KB(主包上限 4096 KB),无 html/css、无 ESM 残留 |
| Web 包(真实 DOM,无垫片) | 同一套玩法断言全过 |
实测纠正了本文三处口径(都已改进正文判断,不是脚注):
- C2 无 GUI 构建:成立,但有个必须写进风险表的坑——Vite 构建默认吃 phaser 的
browser字段(UMD),UMD 在 ESM 里退化成root["Phaser"]=factory()而顶层this是undefined,运行期才炸ReferenceError: Phaser is not defined,而tsc查不出来(phaser 的 d.ts 里有全局Phaser命名空间兜底)。必须显式resolve.alias到dist/phaser.esm.js,并配一条"用了Phaser.*却没 import 就报错"的机械守卫。 - 自写
weapp-adapter的真实难度不在 DOM 形状,而在回调风格:Phaser 的TextureManager.addBase64用属性式image.onload = fn(src/textures/TextureManager.js:376-397)。只实现addEventListener的 Image 垫片会让纹理_pending永不归零 →'ready'不发 →game.isRunning永远为假。这条在真机上是同一个 bug,D12 的"3–5 人日"估计应按"要读懂 Phaser 内部约定"来重估。 - C3 无头自证:成立但必须改造断言方式。headless/后台页面里 rAF 被饿死(实测 12s 只有 6 帧;Qoder in-app 浏览器为 0 帧),任何"等真实时间再看结果"的断言都会偶发红。解法是用
TimeStep.step(time)(src/core/TimeStep.js:718)喂合成帧,把断言变成确定性的——这比"截图对比"更值得作为 agent 主回路。另外miniprogram-automator对小游戏的不可用(0.12.1 停在 2023-11-06,官方只声明支持小程序)在本次实测中得到确认。
仍未覆盖(别当成已验证):微信开发者工具与真机(本机没装)、外部资源/图集加载、分包与远程资源、音频、dpr 清晰度。
附录 A:我本轮亲自核到的数字(可复现)
Phaser 4.2.1(2026-07-09) / MIT / 40,410★ / pushed 2026-08-21 / npm 545,951 周
pixi.js 8.22.0 / MIT / types: lib/index.d.ts / npm 1,502,200 周
@pixi/ui 2.4.1 / MIT / peerDependencies: pixi.js ^8.6.2 / deps: tweedle.js(1) / npm 21,482 周
kaplay MIT / 1,809★ / pushed 2026-10-04 / npm 9,593 周
excalibur npm 14,986 周
layabox/LayaAir MIT / 2,204★ / pushed 2026-09-24
cocos/cocos-engine 9,846★ / pushed 2026-09-21 / license=NOASSERTION(需读仓库 LICENSE)
eva-engine/eva.js MIT / 1,782★ / pushed 2026-07-10
miniprogram-ci npm 21,609 周
miniprogram-automator 0.12.1,发布于 2023-11-06
three npm 24,326,206 周
wechat-miniprogram/threejs-miniprogram 799★ / 末次推送 2023-05-22 / 未 archived
wechat-miniprogram/minigame-canvas-engine 312★ / MIT / pushed 2026-09-10 / open_issues 6
planck npm 217,176 周
微信小游戏包体 主包 4MB / 总包 ≤30MB / 独立分包 ≤4MB(官方分包文档)
未核实项(诚实标注):melonJS 版本号(npm melon.js 404)、LittleJS 体积与许可、Excalibur 版本、Cocos Creator 3.8.x 的确切小版本号(官方下载页为 JS 渲染,我未取到)。
附录 B:来源
工程化与平台(官方)
- 小游戏 CI(preview/upload,我复验:200,页面确为小游戏 CI 且提到"代码上传密钥"):https://developers.weixin.qq.com/minigame/dev/devtools/ci.html
- 开发者工具 CLI 与 HTTP 调用:https://developers.weixin.qq.com/miniprogram/dev/devtools/cli.html、https://developers.weixin.qq.com/minigame/dev/devtools/cli.html、https://developers.weixin.qq.com/miniprogram/dev/devtools/http.html
- 小程序自动化 SDK(只声明支持小程序):https://developers.weixin.qq.com/miniprogram/dev/devtools/auto/、小游戏侧复用页 https://developers.weixin.qq.com/minigame/dev/devtools/auto/quick-start.html、https://developers.weixin.qq.com/minigame/dev/devtools/auto/miniprogram.html
- 运行时 Adapter(含
weapp-adapter.zip):https://developers.weixin.qq.com/minigame/dev/guide/runtime/adapter.html - 通用引擎适配方案(WASM/Emscripten):https://developers.weixin.qq.com/minigame/dev/guide/game-engine/common-adaptation.html
- Cocos/Laya/Egret 适配(历史口径):https://developers.weixin.qq.com/minigame/dev/guide/game-engine/cocos-laya-egret.html
- 分包与包体上限:https://developers.weixin.qq.com/minigame/dev/guide/base-ability/subPackage/useSubPackage.html
- 小游戏新手教程/运行时约束:https://developers.weixin.qq.com/minigame/dev/guide/develop/start.html、Worker:https://developers.weixin.qq.com/minigame/dev/guide/base-ability/new-worker.html、API 索引:https://developers.weixin.qq.com/minigame/dev/api/
- WXWebAssembly 限制:https://developers.weixin.qq.com/miniprogram/dev/framework/performance/wasm.html
- 小游戏音视频格式建议:http://developers.weixin.qq.com/minigame/dev/guide/game-engine/unity-webgl-transform/Design/AudioAndVideo.html、
wx.createWebAudioContext - 抖音小游戏:官方 npm
tt-minigame-ide-cli可核(https://registry.npmjs.org/tt-minigame-ide-cli、下载量 https://api.npmjs.org/downloads/point/last-week/tt-minigame-ide-cli);其文档站为 SPA,深层 URL 我无法验证正文,请在 https://developer.open-douyin.com/ 站内搜ide-cli/Adapter取权威页;官方 Adapter 页(子代理给出,未复验):https://partner.open-douyin.com/docs/resource/zh-CN/mini-game/develop/framework/runtime/adapter - Unity/团结引擎小游戏平台(自陈 WASM 单线程/无 SIMD/iOS 内存):https://docs.unity.cn/cn/tuanjiemanual/Manual/MiniGamePlatform.html(我复验:200,内容对得上)
引擎与库
- Phaser:https://github.com/phaserjs/phaser/releases、https://phaser.io/download/stable
- PixiJS / @pixi/ui:https://registry.npmjs.org/pixi.js/latest、https://registry.npmjs.org/@pixi/ui/latest
- three / 官方小游戏适配(已停更):https://github.com/mrdoob/three.js/releases、https://github.com/wechat-miniprogram/threejs-miniprogram
- Babylon 9 与 Inspector/Editor 定位:https://api.github.com/repos/BabylonJS/Babylon.js/releases、https://github.com/BabylonJS/Editor、https://doc.babylonjs.com/
- PlayCanvas:https://github.com/playcanvas/engine、https://github.com/playcanvas/editor
- minigame-canvas-engine(官方 canvas UI/开放数据域):https://github.com/wechat-miniprogram/minigame-canvas-engine
- 物理:https://registry.npmjs.org/planck/latest、https://registry.npmjs.org/matter-js/latest、https://registry.npmjs.org/cannon-es/latest、https://registry.npmjs.org/@dimforge/rapier3d/latest
- 关卡工具:https://ldtk.io/docs/game-dev/json-overview/、https://ldtk.io/json、https://github.com/deepnight/ldtk/releases、https://doc.mapeditor.org/en/stable/reference/tmx-map-format/、https://doc.mapeditor.org/en/stable/reference/json-map-format/、https://github.com/mapeditor/tiled/releases
- 资产工具与格式:https://www.aseprite.org/docs/cli/、https://www.codeandweb.com/texturepacker、https://esotericsoftware.com/spine-json-format、https://esotericsoftware.com/spine-command-line-interface、https://eu.esotericsoftware.com/forum/("JSON 反推工程风险极大")、https://rive.app/docs/runtimes/advanced-topic/format、http://docs.live2d.com/en/cubism-editor-manual/file-type-and-extension/、https://www.khronos.org/gltf/、glTF Draco/Meshopt 扩展规范
- 音频:https://github.com/KilledByAPixel/ZzFX、https://github.com/chr15m/jsfxr
- 工具 npm:https://registry.npmjs.org/miniprogram-ci/latest、https://registry.npmjs.org/miniprogram-automator/latest、https://registry.npmjs.org/tt-minigame-ide-cli
- Phaser 跑通小游戏可行性验证(2026-08):https://juejin.cn/post/7672283918332706862;three.js 小游戏实战(2026-02):https://juejin.cn/post/7611432097543192603
- 学术/基准:https://arxiv.org/html/2604.18394v1(OpenGame,选 Phaser)、GameDevBench arXiv 2602.11103(2D 解题率约 33%)
- 停更引擎盘点:https://news.17173.com/content/04042026/163835087.shtml;Cocos 商店 MCP 条目 https://store.cocos.com/dashboard/detail/8913
- LayaAir 小游戏文档:https://layaair.layabox.com/3.x/doc/released/minigame/wechat/
第 3 篇 · 全 AI 编码 ∩ 多端一次导出:行业成熟方案梳理(第三版)
原文件:
docs/agent-plus-multiplatform-stacks-2026-10.md(已并入本篇)
全 AI 编码 ∩ 多端一次导出:行业成熟方案梳理(第三版)
2026-10-06 | 前置文档:agent-tech-stack-review-2026-10.md(存量工程,D1–D10)、agent-first-stacks-new-project-2026-10.md(新项目选型判据 C1–C10,D11–D24)| 本文决策编号从 D25 起,跨版不复用。
后续(同日第四版):本文的 R3(代码优先 + 自建多端 shim + Capacitor)已被单独展开成
code-first-selfbuilt-multiplatform-2026-10.md(分层现成件清单、逐端工作量、"哪些层根本没有开源件"的取证结论,D38–D48)。本文 R3 相关段落以那份为准。 本轮新增实证:水泊风云录/Demo/已用 Phaser 4.2.1 + TS + Vite 把"编码→门禁→构建→无头自证→出微信小游戏包"整条链跑通(垫片单测 24/24、小游戏运行时模拟 18/18、包体 1368.6 KB)。 标注:[实测]=我这次亲自核过;[代理查证]=子代理取证;[估]=我的估计。
0. 一句话结论(先答"还有哪些方案")
**你列的 7 个端,没有任何一个引擎能"官方全部覆盖 + AI 完成全部编码"同时成立。**缺口是硬事实(逐条数过官方页):Cocos Creator 3.8/4.0 缺 QQ 小游戏、快手小游戏、Bilibili、小米快游戏;LayaAir 3 缺 QQ 小游戏、快手小游戏(它有华为与 B站,见 §7.1 对我上一版的更正);团结引擎有微信/抖音/快手但缺 QQ/支付宝,且转换必须 GUI。所以真正要选的,是"缺的那几端由谁承担":
本轮新增的硬结论(§5 已逐条复核):AI 完成全部编码的上限由平台侧决定,不是引擎侧。微信/支付宝/B站/vivo/QQ 都有官方 CLI(版本号我已亲自核过),但快手小游戏与百度小游戏的上传只有 GUI 按钮 + 扫码登录;各端包体上限还不一致(华为 10MB/抖音 20MB/微信·快手·B站 30MB/百度 8MB;主包多为 4MB,快手是 6MB)。所以"七端一次导出 + AI 全自动"的真实形态是:代码一次导出 + 每端一条各自的(半)自动发布流水线,快手/百度那两端每次上传得有人点一下。
| 方案 | 端覆盖 | AI 完成全部编码 | 一句话定位 |
|---|---|---|---|
| R1 Cocos Creator 3.8 LTS(代码优先纪律 + MCP 兜底) | ★★★★★ 最广(官方渠道最多,QQ/快手需社区件) | ★★★☆☆ 代码全可、场景要 MCP 且构建需图形会话 | 行业默认答案,代价是 agent 走"人在场"模式 |
| R2 COCOS 4(MIT) | ★★☆☆☆ 官方明说小游戏各端"分阶段解锁" | ★★★★★ 官方按"MCP/Agent 交付逻辑"重做 | 方向最对、时机未到:2026 内只做试点,别押首发多端 |
| R3 代码优先(Phaser 4 / Pixi 8 / three + 自维护多端 shim + Capacitor) | ★★★☆☆ 每端自己拥有适配层 | ★★★★★ 本机已实测跑通微信端全链路 | AI 产能最高,代价是"多端"变成你的交付物 |
| R4 LayaAir 3(本轮被我上调) | ★★★★★ 微信(含 Worker)/抖音/OPPO/vivo/小米/华为/B站/支付宝/淘宝 + LayaNative 原生(Android/iOS/鸿蒙 NEXT/Windows(Steam)/Linux);只缺 QQ、快手 | ★★★★☆ 官方 CLI(IDE 二进制后台模式,"脚本执行完自动退出")+ 官方仓库 layaair-cli(2026-06)、layaair-skills(2026-09)、LayaAir-mcp-plugin(2025-11) + 官方 AI 产品 LayaIdea | 被我此前低估的那一个:端覆盖与 agent 通道都比"IDE 闭源所以弱"的直觉好;短板是缺 QQ/快手 + IDE 闭源 + 无公开收费页 |
| R5 Unity / 团结引擎(对照) | ★★★★☆ 官方平台支持页列 微信/抖音/快手 + Unity 小游戏宿主(QQ、支付宝未列);原生与 H5 是常规能力 | ★☆☆☆☆ 转换工具必须 GUI;但团结 2.0(2026-07-28)已内嵌 AI Agent"团结Codely" | 不满足"AI 完成全部",且收费要算清:财务规模 <150 万元可用免费个人版;150 万–1500 万元需 1 套基础编辑器 18888 元/年才能无水印发小游戏;1.6.0 起收构建费(社区称减免至 2027-06-30);Unity 6 起不再开放中国用户 |
我的推荐(可推翻):R1 打底 + 把 UI/玩法/数值全部代码化——即"引擎选 Cocos 3.8 LTS 拿端覆盖与原生,工程纪律按 Mode A 写",让 agent 在 90% 工作量(代码、数值、关卡、脚本化构建产物)上走可并行可自证的路,只有"构建/发布/偶发改 prefab"走 Mode B(GUI 在场)。本轮把 R4 LayaAir 3 提到与 R1 并列:如果你不需要 QQ/快手,Laya 的"官方 CLI(IDE 后台模式)+ 官方 MCP/skills + LayaNative 连 Linux 都给"其实更干净,风险只剩 IDE 闭源与收费未公开。若你的实际优先级是"AI 产能第一、多端适配层我们自己啃",那就直接 R3(本仓库 Demo/ 就是它的可行性证据)。
顺带排除两个常见误解:uni-app / Taro 不是游戏方案(它们编译到小程序页面运行时,不是小游戏 canvas 运行时;2026-05 的行业盘点也明确"偏应用/不适合复杂游戏");Godot 官方没有微信小游戏导出,只有 9★ 级社区件。
1. 官方渠道矩阵(逐格给依据,别信"支持全平台"这种话)
| 目标端 | Cocos Creator 3.8 LTS [实测·手册] | LayaAir 3 [代理查证] | 代码优先栈(Phaser/Pixi/three) | 上传/预览能否脱离 GUI |
|---|---|---|---|---|
| 微信小游戏 | ✅ 官方页(含引擎插件、PC 小游戏、iOS 内存指南、分包、开放数据域) | ✅ 官方(含 Worker 模式) | ✅ 自维护 adapter(本机已实测) | ✅ miniprogram-ci(无需开发者工具,需上传密钥+IP 白名单)[实测 21,609 次/周] |
| 抖音小游戏 | ✅ 官方页(含 PC 小游戏、内存指南) | ✅ 官方 | ⚠️ 自建 shim | ⚠️ 官方 npm tt-minigame-ide-cli(bin tmg,2.1.1,258 次/周)[代理查证],但需本地装 IDE |
| QQ 小游戏 | ❌ 手册无官方页(社区教程存在) | ❌ 未列 | ⚠️ 自建(API 与微信高度同源) | 🟡 官方 cli -l/-p/-u,但依赖本地 QQ 开发者工具(§5) |
| 快手小游戏 | ❌ 手册无官方页 | ❌ 未列 | ⚠️ 自建 | ❌ 无 CLI,上传/预览只有 GUI + 扫码(§5 实测官方页) |
| 支付宝小游戏 | ✅ 官方页(2023 起支持) | ✅ 官方 | ⚠️ 自建(差异比 QQ 大) | 🟡 官方 minidev 2.2.5(描述含开发/预览/上传) |
| 淘宝小游戏 | ✅ 官方页(含引擎插件) | ✅ 官方 | ⚠️ 自建 | 🟠 待核:淘宝是否纳入 minidev(D26) |
| 华为快游戏 / 荣耀 / OPPO / vivo | ✅ 各自官方页(无小米页) | ✅ 华为/OPPO/vivo/小米 均官方列出;荣耀未列 | ⚠️ 自建(快游戏标准 API) | 🟡 vivo 有官方 npm @vivo-minigame/cli 1.27.45;华为 .rpk+openssl,文档 SPA 未读到(D27) |
| Bilibili 小游戏 | ❌ 手册无页(论坛有 3.8.3 适配方案帖) | ✅ 官方(Laya 文档列出哔哩哔哩) | ⚠️ 自建 | 🟡 官方 bili-sgame-cli 2.1.22(ISC) |
| H5(Web 移动/桌面) | ✅ 官方 | ✅ 官方 | ✅ 天然 | ✅ 任意静态托管 |
| 原生 App(iOS/Android) | ✅ 官方(真原生工程,非套壳:4.0 指南"即可生成 Xcode 项目";3.8 需 JDK17 + Android Studio 2022.2/3 + NDK r21~r23 + Xcode 14+;另有 macOS/Windows/HarmonyOS Next/HMS/Google Play) | ✅ LayaNative:Android/iOS/鸿蒙 NEXT/Windows(Steam)/Linux | ⚠️ Capacitor/Cordova webview 套壳(性能与包体代价) | ❌ 需 Xcode/Android Studio |
读法:✅=官方文档有专门页/可脚本化;🟡=有官方件但要登录态或本地 IDE;🟠=我这轮没读到原文(见 D25–D28);❌=官方没有,要么社区件要么自己做;⚠️=能做但要自己负责。
2. 两条硬约束的真实冲突点
| 约束 | 满足它需要的条件 | 与另一条的冲突 |
|---|---|---|
| AI 完成全部编码 | 真源是文本(无 uuid 二进制化场景)、构建不需 GUI、能无头自证、可并行分片 | 官方多端导出能力长在编辑器里:Cocos 官方手册的"命令行发布项目"明确写着命令行运行也需要 GUI 环境,且只给 macOS/Windows 路径范例(无 Linux)→ CI 必须是带图形会话的 Win/mac 机器 |
| 多端一次导出 | 引擎官方适配层覆盖各端 SDK、审核规则、分包与开放数据域 | 官方适配层意味着产物由编辑器生成,agent 直改文本会破坏 uuid 引用 → 只能走 MCP(人在场、单实例、不可并行) |
结论:这不是"选错引擎",而是必然要放弃一点点。三种放弃方式,选一种:
- 放弃"构建不需 GUI" → R1/R4(Cocos/Laya):agent 写代码很爽,构建/改场景要编辑器在场。
- 放弃"官方端覆盖" → R3(Phaser/Pixi/three):agent 全自动,QQ/快手/支付宝的适配层与审核差异自己扛。
- 放弃"当下" → R2(COCOS 4):官方路线就是冲着你这两条约束设计的(MIT 彻底开源、放弃商业授权条款、新特性按"MCP/Agent 交付逻辑"设计、编辑器底层能力 CLI 化),但小游戏各端适配官方明说"分阶段解锁、取决于取得对应平台同意",2026 年内不宜押注首发多端。
3. R1 落地清单(若选"行业默认答案")
引擎侧:Cocos Creator 3.8.x(当前 3.8.8,2025-12-16 发布 [实测 GitHub release])。
必须写进仓库规则的"代码优先纪律"(否则 agent 又回到改 prefab 的坑):
- 界面/战场节点一律
new Node()/addComponent构建,禁止把 UI 拖进 prefab;确需 prefab 时只当"资源壳",真源字段全在.ts。 - 数值/关卡用 JSON/CSV 进版本库(构建期编译成运行时格式),不要用 xlsx 当真源。
- 动画资产按"agent 能不能改"选:序列帧 + 图集 JSON / LDtk /
.gltf(文本)优先;Spine/Rive 工程只当单向输入。 - 构建走官方命令行:
CocosCreator(.app/.exe) --project <路径> --build "platform=wechatgame;debug=true",可加configPath=、stage=bundle、buildScriptsOnly=true;退出码 36=成功、32/34=错误(这条一定要进 agent 门禁,别只看有没有产物)。CI 机器必须是 Windows 或 macOS 且有图形会话——官方原文"命令行运行的时候也是需要 GUI 环境的",Jenkins 要以 agent 模式访问 WindowServer;Linux 无官方支持。 - agent 改场景的唯一通道是 MCP:3.8 用第三方 Funplay MCP(3.8+、105 工具、编辑器内 HTTP
127.0.0.1:8765)[实测];2.4 也有社区件cocos-mcp-2x(MIT,2026-06-10 发布,作者声明在 2.4.15 上验证过,依赖本地 Python+WebSocket,个人项目)[代理查证]——这条更正了我第一版文档里"2.4 没有 MCP 通道"的结论。 - 验收回路照抄 Demo 的做法:无头浏览器跑 web 构建 + 喂合成帧(
TimeStep.step(time))做确定性断言,小游戏端再用各端 CI 工具上传体验版。
4. R3 落地清单(若选"AI 产能第一")
引擎层:Phaser 4.2.1(重玩法)或 PixiJS 8.22 + @pixi/ui 2.4.1(重 UI,MIT,peer 要求 pixi.js ^8.6.2)
适配层:src/platform/{wx,tt,qq,ks,my,web,capacitor}.ts —— eslint 禁业务层直连 wx.*
构建层:Vite(三 mode:web / 各端小游戏包)+ 包体自查脚本(主包 4MB、无 ESM 残留、无 html/css)
自证层:tsc --noEmit → eslint → 单测 → 无头 Chromium 喂帧断言 → 各端 CLI 上传体验版
原生层:Capacitor(webview 套壳;性能/包体代价要单独评估 = D29)
已实测的证据(本仓库 Demo/):微信端全链路跑通,包括 miniprogram-ci 之外的每一环;三个必踩坑的修法已固化成守卫与回归测试(Vite 吃 browser 字段→UMD 运行期炸;Phaser 用属性式 img.onload;headless rAF 饿死)。
未实测:抖音/QQ/快手/支付宝四端的真机与审核差异、带图集资源的分包、原生套壳性能。
行业先例:2026-08 有开发者复盘"全程用 AI 做了一款微信小游戏并上线",技术栈正是 Canvas 2D + TypeScript + Vite 自研管线(明确不用 Unity/Cocos),AI 负责编码/美术/关卡,人负责规范、架构分层、多端适配封装、提审合规与抽检 [代理查证]——注意他自己列的"必须人做"项里就有"多端适配封装",与本文判断一致。
5. 各端工具链成熟度(决定"能不能无人值守")——本轮已逐条复核
本节最重要的结论:AI 完成全部的上限由平台侧决定,不由引擎侧决定。 即使选官方端覆盖最广的 Cocos,快手小游戏的上传/预览也只有 GUI 按钮 + 扫码登录(官方文档原文,全文无 CLI),百度小游戏上传也没有 CLI。所以"七端全自动无人值守"目前不存在,能做到的上限就是下表"判定"列。
| 端 | 官方 CLI(我复核到的版本) | 必须本地装 IDE / 扫码? | 包体上限 | 判定 |
|---|---|---|---|---|
| 微信 | miniprogram-ci 2.1.31(preview/upload)[实测] | 否(需代码上传密钥 + IP 白名单) | 主包 4MB/总包 ≤30MB/独立分包 ≤4MB [实测官方] | ✅ 可无人值守 |
| 支付宝/淘宝 | minidev 2.2.5(描述含"开发、预览、上传",maintainer 域名 alibaba-inc.com)[实测] | 引擎文档口径要装 IDE;CLI 免登录所需 token 未取证 | 主包 4MB,超出走 CDN | 🟡 大概率可脚本化 |
| Bilibili | bili-sgame-cli 2.1.22(ISC,"Bilibili Small Game Cli")[实测] | 需登录态,无 CI 章节 | 总 30M/单包 4M [代理查证] | 🟡 可脚本化(引擎侧仍要自己适配,Cocos 无官方页) |
| vivo 小游戏 | @vivo-minigame/cli 1.27.45(MIT,持续发版)[实测] | 待核 | 主包 4MB [代理查证] | 🟡 可脚本化 |
| QQ 小游戏 | 官方 cli -l / -p / -u / --build-npm [代理查证] | 是(依赖本地 QQ 开发者工具,预览/上传需登录态;二维码可导出图片/base64) | 小游戏侧未找到官方数字(小程序侧分包总和 24M/单包 2M) | 🟡 半自动 |
| 抖音 | 官方文档口径是 IDE 内置 bytecli(-o/-l/-p/-u);npm 另有 tt-minigame-ide-cli 2.1.1(258 次/周)[代理查证] | 是(须先装抖音开发者工具;登录要手机验证码/飞书扫码) | 总 20MB/主包 4MB/单分包 20MB(Cocos 手册转述,非平台原始文档) | 🟡 半自动(首次登录必须人) |
| 小米快游戏 | RPK 可脚本打包(manifest.json 手写 subpackages)[代理查证] | 待核 | 主包 4M/单分包不限/RPK 总 30M | 🟡 可脚本化 |
| 华为快游戏 | Cocos 直接产 .rpk,签名用 openssl [代理查证];hap-toolkit 2.1.1 维护者是个人账号(非官方 org) | 官方文档为 SPA,正文未读到 | 代码包总 10MB | 🟠 待核(D27) |
| 快手小游戏 | 无 CLI(官方页只有"点击上传 button""点击真机预览 Button",登录要快手 App 扫码)[实测官方页] | 是 | 总 30M/主包 ≤6M/单分包不限 | ❌ 每次上传都要人 |
| 百度小游戏 | 无上传 CLI [代理查证] | 是 | 总 8M/单包 4M | ❌ 必须 GUI |
| H5 | 任意静态托管 | 否 | — | ✅ 最省事,也是无头自证入口 |
| 原生 App | Cocos 原生构建可 CLI;Xcode/证书/上架必须人 | 是(需原生工具链) | — | 🟠 半自动 |
| 套壳路线 | Capacitor(MIT,2026-10-05 仍在推)[代理查证];Cordova(Apache,2026-05-19 有推送,节奏慢) | 需原生工具链 | — | 🟡 活跃;但 wx.* 在 App 内要自建 shim,无官方桥接 |
排期读法:✅ 可进 agent 流水线;🟡 可脚本化但首次登录/提审要人;❌ 每次上传都要人点(快手、百度)。另外 miniprogram-automator 不覆盖小游戏(0.12.1,2023-11-06 起未更新 [实测]),"自动开模拟器验收"也别指望。
附带结论:各端包体上限不一致(华为 10MB/抖音 20MB/微信·快手·B站 30M/百度 8M;主包 4MB 是多数但快手是 6MB),所以"一次导出"必须在构建期按目标端做包体门禁,不能只测微信一端。
6. 待确认 D25–D37
| # | 问题 | 默认值 |
|---|---|---|
| D25 | cli(依赖本地 QQ 开发者工具);快手小游戏无 CLI(上传/预览只有 GUI + 扫码)。剩余缺口:QQ 小游戏侧包体上限未找到官方数字(只有小程序侧 24M/2M) | 按"主包 4MB、总包 20MB"最严口径设计,QQ 端实测后再放宽 |
| D26 | minidev 免 GUI 登录所需 token/私钥口径;淘宝小游戏是否纳入 minidev | 按"要人工"排期,脚本化留到打通 token 后 |
| D27 | 华为/OPPO 快游戏工具链(官方文档是 SPA,正文没读到);hap-toolkit 维护者是个人账号而非官方 org | 华为按"Cocos 产 .rpk + openssl 签名 + 人工上传"排期 |
| D28 | 若把 R4 纳入候选,先要到一个书面收费口径 | |
| D29 | 原生 App 用 Capacitor 套壳跑 WebGL 的性能是否达标(低端机) | 先做 spike 再承诺原生 |
| D30 | 七端里哪些是首发必须、哪些可 T+3 月?(决定 R1 还是 R3) | 按"微信+抖音+H5 首发,其余 T+3 月"排 |
| D31 | 是否接受"CI 机器必须是 Win/mac 且有图形会话"(R1 的硬条件) | 接受则选 R1,不接受则选 R3 |
| D32 | COCOS 4 是否进入你的观察计划(每季度复评小游戏端解锁进度) | 列入,但不押注 2026 内多端 |
| D33 | 2.4 的社区 MCP(cocos-mcp-2x)要不要在存量工程上试(个人项目、依赖 Python) | 试,但只读操作先行 |
| D34 | Demo 这条线要不要继续推到"带图集资源 + 分包 + 远程资源 + 抖音端" | 等你定优先级 |
| D35 | LayaAir 的书面收费口径与官方 layaair-cli/LayaAir-mcp-plugin 的成熟度实测(我这次只核到仓库存在与文档描述,没跑过) | 要选 R4 就先做一次"CLI 出微信包 + MCP 改场景"的 spike,跑通再谈选型 |
| D36 | 是否接受团结引擎的钱与流程(18888 元/年量级、构建费、提审人工、Unity 6 不再开放中国用户)以换取官方快手端 | 不接受 → 快手端走 R3 的自建 shim 或干脆不做快手 |
| D37 | 是否把 Cocos 命令行退出码 36/32/34 这类"平台侧硬信号"照 Demo 风格写成构建门禁(build:wx 后断言退出码而非看产物) | 要,我可以直接在 Demo 里加一条等价守卫 |
7. 第二路调研回填:我更正了什么、以及由此改变的排序
7.1 我自己写错/低估的三条
- LayaAir 3 的端覆盖被我写窄了。前文按
layaair.com/3.3的"小游戏发布"页只列了微信/抖音/OPPO/vivo/小米/支付宝/淘宝;但 3.x 文档目录(v3.4,2026-08-17 更新)实际还包含 华为快游戏 与 哔哩哔哩小游戏,原生侧有 LayaNative:Android / iOS / 鸿蒙 NEXT / Windows(Steam) / Linux(Linux 是 Cocos 编辑器都不给的)。仍缺的是 QQ 与 快手。→ §0 的 R4 已从"3D 才看"上调为"值得与 R1 并列评估"。 - Laya 的 agent 通道不是"薄",是有官方件:官方 CLI
LayaAirIDE --project=<路径> [--script=类.方法] [--script-args],官方描述"后台脚本执行结束后自动退出"(可批处理/CI);官方组织下另有layaair-cli(2026-06)、layaair-skills(2026-09)、LayaAir-mcp-plugin(2025-11),以及官方 AI 产品 LayaIdea(1.0 beta2,网页版)。论坛官方答复口径:"IDE 其实已经支持 headless CLI 模式""CLI 工作流正在开发中"。→ 但IDE 本体仍闭源(引擎 MIT,组织仓库里没有 IDE 源码),且未找到官方收费页(D35)。 - 团结引擎的端覆盖里其实有快手:官方平台支持页列 微信/抖音/快手 + Unity 小游戏宿主,另有《快手小游戏转换 SDK》(2025-12-09)。→ 它是唯一官方覆盖快手的,但转换工具必须 GUI,仍不满足"AI 完成全部";且要算清钱:<150 万元财务规模可免费个人版;150 万–1500 万需 18888 元/年 一套基础编辑器才能无水印发小游戏;1.6.0 起收构建费(社区称减免至 2027-06-30);Unity 6 起不再开放中国用户;团结 2.0(2026-07-28)已内嵌 AI Agent"团结Codely"。
7.2 COCOS 4 的官方通道(比我上一版描述更具体,也更有硬条件)
- 官方仓库
cocos/cocos-cli(cocos 组织、MIT、建 2025-09-04、最近推送 2026-09-28):cocos create/cocos build --platform <端>/--no-interactive/cocos start-mcp-server --port 9527。 - 官方新闻稿(2026-01-05)口径:引擎与编辑器解耦、核心编辑功能转 headless CLI、可视化交给 PinK IDE、MIT 并移除原商业条款、"AI 原生/MCP 优先"。
- 硬条件:README 只声明 Windows(VS C++ 工具链)与 macOS(Xcode),未声明 Linux;
cocos-cli项目当前没有集成本地图形编辑器,要看可视化还得开 3.8.7;实测介绍要求 Node.js 22.17.0(其他版本可能报错)。 - 结论:R2 的"方向最对"从推测升级为有官方仓库与官方新闻稿支撑;但"小游戏各端分阶段解锁"没变,所以2026 内仍不押多端首发,改为"用 R1/R4 上线,同时每季度复评 cocos-cli 的端解锁进度"(D32 保留)。
7.3 排序变化(这就是答案的收敛形态)
| 排序 | 方案 | 为什么 |
|---|---|---|
| 1 | R1 Cocos Creator 3.8 LTS + 代码优先纪律 | 端覆盖 + 真原生 + 官方 CLI(含明确退出码 36/32/34)+ 3.8 有第三方 MCP、4.0 有官方 MCP 可平滑过渡 |
| 1′ | R4 LayaAir 3(与 R1 并列,条件成立时优先) | 若你不需要 QQ/快手、且要 Linux 原生或更少商业条款不确定性,Laya 的官方 CLI + 官方 MCP/skills 组合其实更干净;风险是 IDE 闭源 + 收费未公开 |
| 2 | R3 代码优先 + 自维护多端 shim | 唯一能让 agent 端到端全自动的路(本机已实测微信端),代价是每端适配层归你 |
| 3 | R2 COCOS 4 | 观察 + 试点,别押 2026 多端首发 |
| — | R5 团结引擎 | 只有"必须快手 + 接受人工上传 + 接受 18888 元/年量级"时才考虑 |
第四种引擎:没有。 Egret 2022-02 停止运营(仅社区维护);Eva.js 官网未列多端发布/原生;字节 Lyda、Cryeng 等无官方七端依据。所以可选面就是上面这五个。
附录 A:各端工具链依据(本轮 §5 用)
- 快手小游戏·开发者工具(只有 GUI:登录要扫码、"点击
上传button"、"点击真机预览 Button",全文无 CLI):https://ks-game-docs.kuaishou.com/minigame/start/devtool.html;代码包/分包:https://ks-game-docs.kuaishou.com/minigame/guide/framework/code-package.html、https://ks-game-docs.kuaishou.com/minigame/guide/basic-function/subpackages.html(总 30M/主包 ≤6M) - QQ 小游戏官方命令行:https://q.qq.com/wiki/tools/cli/(
-l/-p/-u/--build-npm,依赖本地 QQ 开发者工具);分包数字(仅小程序侧):https://q.qq.com/wiki/develop/miniprogram/frame/basic_ability/basic_pack.html - 支付宝系开发 CLI
minidev:https://opendocs.alipay.com/mini-game/094n6m(SPA 正文不可读)+ npm 元数据我实测:minidev2.2.5,描述"开发、预览、上传",maintainer 域名 alibaba-inc.com - B站小游戏:https://miniapp.bilibili.com/small-game-doc/guide/publish/(发布 CLI ≥2.0.0)、分包 https://miniapp.bilibili.com/small-game-doc/ability/subpackage;npm 实测
bili-sgame-cli2.1.22(ISC) - vivo 小游戏:npm 实测
@vivo-minigame/cli1.27.45(MIT,"Command line interface for rapid Vivo minigame development") - 小米快游戏分包/包体:https://dev.mi.com/xiaomihyperos/documentation/detail?pId=1897;华为快游戏打包:https://developer.huawei.com/consumer/cn/doc/games-guides/games-quickgame-tool-build-formal-0000002317894976(SPA 未读到正文);OPPO rpk:https://open.oppomobile.com/new/developmentDoc/info?id=12533(同上);社区
hap-toolkit2.1.1(维护者为个人账号) - 抖音:官方命令行工具页 https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/dev-tools/developer-instrument/development-assistance/ide-cli(SPA,正文未读到;口径为 IDE 内置
bytecli)、CLI Skill 指南 https://partner.open-douyin.com/docs/resource/zh-CN/mini-app/develop/dev-tools/developer-instrument/development-assistance/cli-skill、小游戏 Adapter https://partner.open-douyin.com/docs/resource/zh-CN/mini-game/develop/framework/runtime/adapter;团结引擎上传抖音页(明说须下载安装抖音开发者工具)https://docs.unity.cn/cn/tuanjiemanual/Manual/UploadDouyinMiniGame.html - 原生/套壳:https://github.com/ionic-team/capacitor(MIT,2026-10-05 仍在推)、https://github.com/apache/cordova(2026-05-19 有推送)
- 引擎侧包体数字(抖音 20MB/主包 4MB 等由 Cocos 手册转述,非平台原始文档):https://docs.cocos.com/creator/3.8/manual/zh/editor/publish/publish-bytedance-mini-game.html
附录 B:我本轮亲自核到的 npm/包事实
miniprogram-ci 2.1.31(2024-11-12)/ 周下载 21,609
miniprogram-automator 0.12.1 / 发布 2023-11-06 / 周下载 15,314
minidev 2.2.5 / maintainers: vip.qq.com, alibaba-inc.com / 描述含"开发、预览、上传"
bili-sgame-cli 2.1.22 / ISC / "Bilibili Small Game Cli"
@vivo-minigame/cli 1.27.45 / MIT
tt-minigame-ide-cli 2.1.1 / 周下载 258
cocos/cocos-engine latest release 3.8.8(2025-12-16)
附录 C:引擎与方案侧依据
- Cocos Creator 3.8 手册·跨平台发布(官方渠道清单 +
命令行发布项目):https://docs.cocos.com/creator/3.8/manual/zh/editor/publish/、https://docs.cocos.com/creator/3.8/manual/zh/editor/publish/publish-in-command-line.html - Cocos Creator 4.0 手册(4.0 LTS 存在,渠道清单同上,无 QQ/快手/B站/小米页):https://docs.cocos.com/creator/4.0/manual/zh/editor/publish/
- 命令行构建需 GUI 环境、仅给 macOS/Windows 范例:同上"命令行发布项目"页(我复验过要点)
- COCOS 4 官方发布稿(2025-12-30;MIT、脱离商业约定、新特性按 MCP/Agent 交付逻辑设计、编辑器能力 CLI 化、小游戏适配分阶段解锁):https://forum.cocos.org/t/topic/172915;英文通稿 https://www.prnewswire.com/apac/news-releases/cocos-4-is-here-fully-open-source-302652633.html(2026-01-05)
- Cocos 4
cocos-cli内置官方 MCP 的实测介绍(2026-04;需 Node 22.17.0;CLI 项目暂无集成图形编辑器):https://juejin.cn/post/7625923696347807770 - Cocos 引擎版本事实:GitHub
cocos/cocos-enginelatest release 3.8.8(2025-12-16)[实测] - Cocos Creator 2.4 的社区 MCP 插件
cocos-mcp-2x(MIT,2026-06-10,声明 2.4.15 验证):https://forum.cocos.org/t/topic/176150、https://github.com/shiliyu1991-lang/cocos-mcp-2x - Cocos 支持支付宝小游戏的官方公告(2023):https://www.cocos.com/post/1f74a54f39b3123ad272ca0a06e7463f;B站小游戏为社区适配方案:https://forum.cocos.org/t/topic/163571/4
- LayaAir 3 官方文档目录(v3.4,2026-08-17 更新):发布章节含 Web/H5(单文件、CrazyGames、Poki)、微信(含 Worker)、抖音、OPPO、vivo、小米快游戏、华为、哔哩哔哩、支付宝、淘宝,以及 LayaNative 原生(Android/iOS/鸿蒙 NEXT/Windows(Steam)/Linux):https://layaair.com/3.x/doc/;小游戏发布页(渠道 +
build-templates/+ 命令行):https://layaair.com/3.3/doc/released/miniGame/readme.html - LayaAir 官方命令行(IDE 二进制后台模式,"脚本执行结束后自动退出"):https://layaair.com/3.3/doc/released/commandLine/readme.html;官方论坛答复"IDE 已支持 headless CLI 模式、CLI 工作流开发中":https://ask.layabox.com/d/55091
- Laya 官方 AI 相关仓库:https://github.com/layabox/layaair-cli(2026-06)、https://github.com/layabox/layaair-skills(2026-09)、https://github.com/layabox/LayaAir-mcp-plugin(2025-11);官方 AI 产品 LayaIdea:https://layaidea.layabox.com/;引擎仓库 https://github.com/layabox/LayaAir(MIT,2026-09-24,组织内无 IDE 源码 → IDE 闭源)
- 行业盘点(2026-05):Cocos 覆盖国内小游戏公司比例、uni-app/Taro 不适合复杂游戏:https://juejin.cn/post/7642258996859355162
- 全程 AI 上线微信小游戏的复盘(2026-08,Canvas2D+TS+Vite,人工负责规范/架构/多端封装/提审):https://article.juejin.cn/post/7669058712007147539
- 第三方"AI 时代引擎选择"观点(Godot 纯文本场景适合 AI、Cocos 3.x/Unity 因序列化不透明受阻;该文对 Godot 多端导出的说法不含小游戏,需按本文矩阵修正理解):https://juejin.cn/post/7633051643748024363
- 本机实测(Demo):
miniprogram-ci周下载 21,609、miniprogram-automator0.12.1/2023-11-06、tt-minigame-ide-cli2.1.1/258、Phaser 4.2.1、pixi.js 8.22.0、@pixi/ui 2.4.1(MIT, peerpixi.js ^8.6.2)、planck 217,176/周、微信包体上限 主包 4MB/总包 ≤30MB/独立分包 ≤4MB
附录 D:第二路调研依据(引擎官方件、团结引擎收费)
- 官方
cocos-cli仓库(cocos 组织、MIT、建 2025-09-04、最近推送 2026-09-28;cocos create/build --platform、--no-interactive、cocos start-mcp-server --port 9527;README 只声明 Windows/macOS):https://github.com/cocos/cocos-cli - Cocos 3.8 命令行构建(
--project+--build "platform=wechatgame;debug=true"、configPath/stage=bundle/buildScriptsOnly、退出码 36 成功 / 32·34 错误、需 GUI 会话、仅 Win/mac 范例):https://docs.cocos.com/creator/3.8/manual/zh/editor/publish/publish-in-command-line.html - Cocos 原生环境要求(JDK17、Android Studio 2022.2/2022.3、NDK r21~r23、Xcode 14+):https://docs.cocos.com/creator/3.8/manual/zh/editor/publish/setup-native-development.html;4.0 iOS 指南"即可生成 Xcode 项目":https://docs.cocos.com/creator/4.0/manual/zh/editor/publish/ios/build-example-ios.html;编辑器系统要求仅 Win/macOS(无 Linux):https://docs.cocos.com/creator/3.8/manual/zh/getting-started/install/
- Cocos 3.8.8 官方公告(2025-12-16):https://forum.cocos.com/t/topic/172319;Cocos 用户服务协议(2022-09-01,"是否收费以公示为准"):https://download.cocos.com/CocosUdc/agreement/Cocos_User_Service_Agreement_cn_20220901.html
- 3.8 无 QQ 小游戏专页(
publish-qqplay.html已 404,仅 2.x/3.2 手册有"QQ 玩一玩");社区做法:https://forum.cocos.org/t/topic/167278(2025-04-21) - 团结引擎平台支持(微信/抖音/快手 + Unity 小游戏宿主,"更多平台即将推出"):https://docs.unity.cn/cn/tuanjiemanual/1.7/Manual/PlatformSupport.html;《快手小游戏转换 SDK》:https://docs.unity.cn/cn/tuanjiemanual/1.7/Manual/KuaishouSDK.html;1.7.3 发布 2025-10-23
- 团结引擎授权新政(2025-07-01 生效:<150 万元免费个人版;150 万–1500 万 需 1 套基础编辑器 18888 元/年 无水印发小游戏;>1500 万按席位;1.6.0 起收构建费):https://developer.unity.cn/projects/tuan-jie-yin-qing-zui-xin-shou-quan-zheng-ce-sheng-ming-2025nian-7yue;社区答复称小游戏构建费减免至 2027-06-30:https://developer.unity.cn/ask/question/69d5ce8cedbc2a25b3892e35
- 团结 2.0(2026-07-28 发布会,内嵌 AI Agent"团结Codely")与"Unity 6 不再开放中国用户":https://www.36kr.com/p/3934480632462729
- Egret 停止运营(2022-02,仅第三方社区维护):https://news.17173.com/content/04042026/163758762.shtml
第 4 篇 · 代码优先栈"全部自建"做全平台导出:可行吗?有现成件吗?(第四版)
原文件:
docs/code-first-selfbuilt-multiplatform-2026-10.md(已并入本篇)
代码优先栈"全部自建"做全平台导出:可行吗?有现成件吗?(第四版)
2026-10-06 | 前三版:agent-tech-stack-review-2026-10.md(存量,D1–D10)→ agent-first-stacks-new-project-2026-10.md(新项目,D11–D24)→ agent-plus-multiplatform-stacks-2026-10.md(多端交集,D25–D37)。本文决策编号从 D38 起。
讨论对象 = 上一版的 R3:Phaser 4 / PixiJS 8 / three.js + 自维护多端 shim + Capacitor。
标注:[实测] 我亲自核过;[代理查证] 子代理取证(URL 在附录);[估] 我的估计,不是任何官方承诺。
0. 一句话结论
技术上可行,成本可控,但"全部自建的成熟方案包"不存在——你能选到的是"零件",不是"整体"。 具体分三句话:
- 跨端统一适配层没有可选型的开源件。我这次专门找过:最接近的
@pixifact/platform-*(0★、仅 Web/微信/抖音、末次提交 2026-06-01)、minigame-std(GPL-3.0,只 polyfill fetch/fs/crypto/webaudio)、godot-minigame(9★、Godot 专用)。结论:中间那层归一接口必须你自己拥有。 - 但每一端都有"官方单端 adapter",所以事实上的成熟模式是以微信为基准 + 每端薄壳:微信官方
weapp-adapter.zip直链、支付宝官方my-adapter.js/microgame-adapter.js、B站官方weapp-adapter.js+blapp-adapter-cocos.js直链、快手开发者工具"开启自动适配微信"会自动生成kwaiadapter.js、OPPO 有官方"微信小游戏一键转 OPPO"转换工具。→ 你要写的不是"七套 DOM 垫片",而是一套业务 API 归一层 + 各端薄壳。 - 原生壳与 H5 渠道是真成熟的:Capacitor 8.5.2(MIT,2026-09-11)+ Phaser 官方出的 iOS/Android 接入教程;H5 出海有 Poki SDK v2、CrazyGames SDK v3、GameDistribution
GD-HTML5(MIT 1.3.0)。但两个硬数字要先看:① iOS WKWebView 性能——微信官方同场景数据 10–15 FPS vs 原生渲染 48–50 FPS(这就是"高性能模式"存在的原因,也是 WebView 壳的量级代价);② 国区安卓上架要营业执照+网文证+增值电信许可证+ISBN 版号+软著(小米官方,无版号只能"预约")→ 原生 App 的门槛是资质,不是代码。
顺带一句诚实话:我没找到任何"用 Phaser/Pixi 做到多个小游戏端同时上线"的公开可查案例(只有单端 demo 级)。所以这条路的成熟度是"零件成熟、集成无先例可查",别按"业界都这么做"来评估风险。
1. 分层拆解:哪层现成、哪层空白
| 层 | 能直接选(成熟件) | 能抄但要改 | 必须自己写 |
|---|---|---|---|
| 渲染/玩法 | Phaser 4.2.1(MIT,40,410★)、PixiJS 8.22.0 + @pixi/ui 2.4.1(MIT)、three r186(MIT,24,326,206 次/周)[实测] | 骨骼动画:Spine 运行时只能单向消费导出 JSON | 玩法代码、UI 组件层(Phaser 无成套控件) |
| DOM/BOM 垫片 | 微信 weapp-adapter.zip(官方直链)、支付宝 my-adapter.js/microgame-adapter.js、B站 blapp-adapter-cocos.js、快手 kwaiadapter.js(工具自动生成)[代理查证] | 各家 adapter 都是按 Cocos/Laya/Egret 的形状写的,Phaser/Pixi 用要裁剪(我 Demo 自写 <300 行即跑通,与 2026-08 那篇复盘一致) | QQ、小米/华为/vivo 快游戏这几端未找到官方 adapter → 自己补 |
| 业务 API 归一层(登录/支付/广告/分享/排行榜/生命周期/隐私授权) | ❌ 没有成熟开源件(本文核心发现) | 各家 api-typings 可当形状来源(但 QQ/快手/B站无 typings) | ✅ 整层自建,约 15–20 个接口面(§3) |
| 构建/打包 | Vite 7.3.6、esbuild、miniprogram-ci 2.1.31、@douyin-minigame/cli 0.4.0、bili-sgame-cli 2.1.22、@vivo-minigame/cli 1.27.45、minidev 2.2.5 [实测] | 分包结构、远程资源策略要按端调 | Vite 小游戏专用插件:未找到 → 我 Demo 的三 mode + finalize-wxgame.mjs 就是这块自研 |
| 无头自证 | Chromium/Edge headless、Playwright/Puppeteer、Vitest | 各家 IDE 的模拟器无法无头驱动(miniprogram-automator 不覆盖小游戏 [实测]) | 喂帧断言框架(Demo 已实现:TimeStep.step(time)) |
| 原生壳 | Capacitor 8.5.2(MIT,36 个官方插件,含 SplashScreen/Keyboard/Filesystem/StatusBar/System Bars)、Cordova 13.0.0、Tauri 2.12.1(移动端用系统 WebView) | 音频要用户手势解锁(Capacitor 不提供绕过);iOS 最低 15;HTTP 资源要手写 Info.plist(v8 未文档化 ATS) | App 内 wx.* 反向 mock:未找到成熟件 → 自己写(这层其实最简单,因为 Web 有原生实现) |
| H5 渠道 | Poki SDK v2、CrazyGames SDK v3、GD-HTML5 1.3.0(MIT)、华为快游戏官方文档 | Poki 明文要求"广告期间关闭音频与键盘输入"→ 要有中断状态机 | 国内 4399 文档站是 JS 渲染正文不可核、闪玩未找到 |
2. 逐端可行性与工作量(估 人日,按"已有微信端"为基线)
| 端 | 官方 adapter | 上传/预览可脚本化? | 包体上限(主包/总包) | 剩余自建面 | 估 |
|---|---|---|---|---|---|
| 微信(基准) | ✅ 官方 zip | ✅ miniprogram-ci | 4MB / ≤30MB(独立分包 ≤4MB) | — | 已做完(Demo) |
| 抖音 | ✅ 官方 Adapter 章节(直链未取到) | 🟡 IDE 内置 bytecli,首次登录要人 | 4MB / 20MB;支持开放数据域 | 登录/广告/分享 API 名差异 | 2–3 |
| ❌ 未找到官方 adapter | 🟡 官方 cli -l/-p/-u,依赖本地 IDE | 4MB / 20MB [代理查证];小游戏侧上限未找到官方原文 | 垫片 + 业务层 + 自己写 d.ts | 3–5 | |
| 快手 | ✅ 工具自动生成 kwaiadapter.js("开启自动适配微信") | ❌ 无 CLI,上传只有 GUI + 扫码 | 6MB / 30MB | 业务层;每次发版要人点一下 | 2–3 |
| 支付宝 | ✅ my-adapter.js/microgame-adapter.js | 🟡 minidev 2.2.5(token 口径未取证) | 4MB / 20MB | my.* 与 wx.* 差异(这是最大一块未知)、开放数据域未找到官方依据 | 4–6 |
| Bilibili | ✅ 官方 zip + cocos 版直链 | 🟡 bili-sgame-cli 2.1.22 | 4MB / 30MB | 业务层 + 自己写 d.ts | 2–3 |
| 华为/小米/OPPO/vivo 快游戏 | ❌ 未找到官方 adapter(OPPO 有"微信一键转换"工具) | 🟡 vivo 有官方 npm CLI;华为 .rpk+openssl;小米 RPK 可脚本 | 华为代码包 10MB/小米 4MB+RPK 30MB/vivo 4MB | 联盟 API 与微信差异未找到官方对照表(D40) | 每厂 2–4 |
| H5(自有站) | 不需要 | ✅ | — | 无 | 0.5 |
| H5 出海渠道 | ✅ Poki/CrazyGames/GD 官方 SDK | ✅ | — | 中断状态机(广告期间锁音频/输入) | 2–3 |
| 原生 App | 不需要(Web 原生) | 🟡 Capacitor 可 CLI,签名/上架要人 | — | wx.* 反向 mock(薄)+资质 | 3–5 + 资质不可控 |
合计:七端 + H5 + 原生 ≈ 估 25–40 人日(不含玩法与美术),其中约 40% 是"归一层的接口设计 + 各端差异取证",这部分恰好是 agent 最能干、且最容易用类型与断言钉死的活。
3. 必须自己写的那一层:接口面清单(这就是"全部自建"的真实内容)
src/platform/
types.ts GamePlatform 接口(唯一真源,业务只认它)
web.ts Capacitor/H5 用(localStorage、fetch、Audio、pointer)
wx.ts tt.ts qq.ts ks.ts my.ts bili.ts quick.ts(联盟)
__tests__/ 每个实现跑同一套契约测试(判据来自官方文档行号,不能照抄自己的产物)
接口面(15–20 个,按"差异最大"排序,前 5 个决定成败):
- 登录与鉴权(
wx.login/tt.login/my.getAuthCode/ 快游戏各家不同)→ 后端换 openid 的链路每端不同; - 支付/内购(国内小游戏端基本只有安卓可内购,iOS 走广告变现);
- 广告(激励视频/插屏/banner 的命名与回调形状各家不同,跨端聚合 SDK 我这一轮还没取证 = D41);
- 开放数据域/好友排行榜(微信、抖音明确支持;支付宝/B站/快游戏未找到官方依据,D42);
- 分包与远程资源(上限各不同:华为 10MB/多数 20MB/微信 30MB;主包 4MB 是共性,快手 6MB);
- canvas/图片/音频创建、触摸事件归一(我 Demo 已做:
wx.onTouchX → 合成 TouchEvent → Phaser); - 生命周期(onShow/onHide ↔ visibilitychange)、剪贴板、震动、键盘、隐私授权弹窗、网络类型、系统信息、字体子集/度量。
为什么这层适合交给 agent:它是纯 TypeScript + 契约测试,能类型检查、能无头跑、能并行分片(每端一个文件互不打架),且判据可以钉到官方文档 URL(避免"照抄自己的 mock")。我 Demo 里 src/core/platform.ts + src/minigame/adapter.ts + tools/adapter-node-test.mjs(24 项,含假 wx)就是这层的最小可运行范式。
4. 工具链与类型现状(直接影响 agent 能不能自证)
| 端 | 官方/社区 TS typings | 备注 |
|---|---|---|
| 微信 | ✅ minigame-api-typings 3.8.21(2026-07-27,wechat-miniprogram 组织)、miniprogram-api-typings 5.2.3(2026-08-07,MIT) | 小游戏专用那份最有用 |
| 抖音 | 🟡 @douyin-minigame/api-typings 1.3.0(2026-07-16,维护者含 bytednpm,疑官方) | |
| 支付宝 | 🟡 @mini-types/alipay 3.0.14(2024-01,偏小程序不是小游戏) | 小游戏侧要自己补 |
| QQ / 快手 / B站 / 快游戏联盟 | ❌ 未找到 api-typings | agent 要自己写 .d.ts,而判据只能来自文档正文(多家文档是 SPA 抓不到正文 → D43 要人工截图/导出) |
构建侧:Vite 小游戏专用插件未找到(npm 搜 vite-plugin minigame 无命中)。所以"多 mode 构建 + 包体自查 + require 注入"这类脚本要自己维护——Demo 里 vite.config.ts(三 mode)+ tools/finalize-wxgame.mjs(4 项硬自查)已经给了可复制的做法。另有微信官方 wx-transformer(面向 Emscripten/C++ 自研引擎,对 JS 引擎用处有限)。
5. 原生与 H5 渠道的真实门槛(不是代码)
- 性能:iOS WebView 是这条路线最大的量级损失(微信官方 10–15 FPS vs 原生渲染 48–50 FPS)。缓解办法只有两条:把游戏做成"轻量 2D + 低分辨率",或放弃 WebView 壳改用引擎原生 runtime(那就回到 R1/R4:Cocos 真原生工程、Laya LayaNative)。
- 内存:Cocos 官方 iOS 指南给的口径是 2GB 机型上限约 1GB、3GB 约 1.4GB,音频约 20MB,建议 ASTC → 内存预算要写成构建门禁(资源总量 + 纹理格式断言)。
- 审核:App Store 指南 4.2 原文要求"elevate it beyond a repackaged website",2.5.2 禁止下载/执行会改变 App 功能的代码 → 纯 URL 套壳高危、远端整包热更高危;游戏资源打进 bundle + 加原生能力(离线包/Game Center/原生插件)才可控。
- 资质:国区安卓商店(小米官方页)要营业执照、网文证、增值电信许可证、ISBN 版号、软著及授权书;无版号只能"预约"。→ 原生 App 渠道要先解决版号,再谈技术方案(D44)。
- H5 出海:Poki/CrazyGames/GD 三家 SDK 都要求"广告中断时锁住音频与输入",所以玩法层必须有可暂停状态机——这条要一开始就设计进去,事后补很痛。
6. 三条实施路线(都在 R3 内部)
| 路线 | 做法 | 适合 | 代价 |
|---|---|---|---|
| P1 纯自建归一 | 一套 platform 接口 + 每端 adapter + 每端 CLI 脚本;agent 全自动写与测 | 你确实要 7 端且能接受每端 2–6 人日 | 无先例可抄,风险自己扛;QQ/快手/B站 无 typings |
| P2 微信基准 + 官方转换工具兜底(我推荐) | 只把微信端做"真源端";快手用"自动适配微信"生成 kwaiadapter.js、OPPO 用官方"微信一键转换"、B站/支付宝用官方 adapter;归一层只写差异部分 | 想省一半工作量 | 转换工具多为 GUI/闭源 → 那几端的发版会引入人工步骤(快手本来就要 GUI) |
| P3 混合:R3 主干 + 最难端交给 R1/R4 | 微信/抖音/H5/原生用 Phaser/Pixi;把支付宝或快游戏这类差异最大的端,用 Cocos/Laya 出一个"壳工程"发布 | 商业上必须全端但团队小 | 两套工程/两套美术管线,长期维护成本翻倍(不推荐,除非某端收入权重极高) |
与 R1/R4 的最终对比(一句话版):R1/R4 是"用编辑器在场换官方端覆盖",R3 是"用自建 25–40 人日 + 无先例风险换 agent 全自动"。如果"AI 完成全部编码"是硬约束,只有 R3 满足;如果"七端一次导出"是硬约束,R3 + P2 是唯一现实解,且快手/百度两端仍需人工点上传。
7. 待确认 D38–D48
| # | 问题 | 默认值 |
|---|---|---|
| D38 | 是否接受"归一层 + 各端薄壳"由我们自己拥有(无开源件可选) | 接受,按 P2 出接口设计稿 |
| D39 | 首发必须端清单(决定要不要碰支付宝/快游戏这些差异最大的端) | 按 微信+抖音+H5 首发 |
| D40 | 快游戏联盟与微信的 API 差异没有官方对照表 → 要不要花钱买一份实测(或找用过的人) | 先只做华为,其余端 T+3 月 |
| D41 | 跨小游戏端的广告聚合 SDK 有没有成熟件(我这轮未取证,后台在跑) | 按"每端各自接、归一层里加 ads.ts"设计 |
| D42 | 支付宝/B站/快游戏的开放数据域/好友排行是否支持(未找到官方依据) | 这些端不做好友榜,改服务端排行榜 |
| D43 | QQ/快手/B站/联盟无 TS typings,且多家文档是 SPA 抓不到正文 → 要不要人工导出文档做判据库 | 要,我建 docs/platform-spec/ 存证据 |
| D44 | 版号/软著是否已具备(决定原生 App 与国区安卓渠道是否可行) | 未具备 → 原生 App 从目标里去掉,只保留小游戏 + H5 |
| D45 | iOS 用 WebView 壳的性能是否可接受(10–15 FPS 量级) | 不可接受 → 原生 App 不做,或改走 R1 真原生 |
| D46 | 是否要 H5 出海(Poki/CrazyGames/GD 三家接入约 2–3 人日 + 中断状态机) | 要,则一开始就把"可暂停状态机"写进玩法层 |
| D47 | 要不要我把 Demo 扩成 P2 的最小可用版(加 tt.ts + 抖音构建 mode + 契约测试) | 等你点头(本轮只写了文档,未动 Demo) |
| D48 | minigame-std 是 GPL-3.0、Pixifact 0★——是否允许引入这类依赖 | 不允许,只当参考实现读源码 |
附录:证据
各端官方 adapter / 工具
- 微信 Adapter(含
weapp-adapter.zip直链):https://developers.weixin.qq.com/minigame/dev/guide/runtime/adapter.html、通用引擎适配 https://developers.weixin.qq.com/minigame/dev/guide/game-engine/common-adaptation.html、wx-transformerhttps://developers.weixin.qq.com/minigame/dev/guide/game-engine/common-adaptation/Design/TransformTool.html、官方 https://github.com/wechat-miniprogram/minigame-adaptor(136★,Unity 美术迁移用) - 支付宝 小游戏 adapter:https://opendocs.alipay.com/mini-game/08tzon(经 Laya 文档引用 https://layaair.com/3.3/doc/released/miniGame/alipaygame/readme.html)
- B站 引擎适配(
weapp-adapter.js/blapp-adapter-cocos.js直链):https://miniapp.bilibili.com/small-game-doc/guide/compatibility/、https://miniapp.bilibili.com/small-game-doc/engine/common/ - 快手 开发者工具("开启自动适配微信"→
kwaiadapter.js):https://open.kuaishou.com/miniGameDocs/gameDev/start/devtool.html;Laya 快手导出指南 https://docs.qingque.cn/d/home/eZQCnNVAKcY5kmYvimRU0L7Pt - OPPO 微信小游戏一键转换:https://open.oppomobile.com/documentation/page/info?id=12543;vivo Unity 适配 http://h5.vivo.com.cn/vmix/vivo-unity-doc/lesson/Summary.html;小米 Unity 导出 https://dev.mi.com/xiaomihyperos/documentation/detail?pId=2165;华为快游戏 http://developer.huawei.com/consumer/cn/quickGame
- 抖音 Adapter 章节(SPA,直链未取到):https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/framework/runtime/adapter;QQ 分包 https://q.qq.com/wiki/develop/game/frame/ability/subpackages.html(未找到 QQ 官方 adapter)
"跨端统一层"候选(都不够成熟)
@pixifact/*(MIT,v0.18.0,0★,仅 Web/微信/抖音)https://github.com/hxg2050/pixifact;minigame-std(GPL-3.0)https://github.com/JiangJie/minigame-std;godot-minigame(9★)https://github.com/mkdevkit/godot-minigame;@chiyou/minigame-framework(版本号自相矛盾,不可采信)
TS typings / CLI
minigame-api-typings3.8.21、miniprogram-api-typings5.2.3 https://github.com/wechat-miniprogram/api-typings;@douyin-minigame/api-typings1.3.0;@mini-types/alipay3.0.14;@douyin-minigame/cli0.4.0;wasmsplit-v2-ci2.1.5;@open-dy/tt-wasmsplit-ci1.0.9
原生壳 / H5 渠道 / 性能与合规
- Capacitor 8.5.2(MIT,2026-09-11)https://github.com/ionic-team/capacitor/releases、v8 APIs https://capacitorjs.com/docs/v8/apis、iOS 配置 https://capacitorjs.com/docs/v8/ios/configuration;社区 native-audio https://github.com/capacitor-community;@capawesome edge-to-edge https://capawesome.io/docs/sdks/capacitor/android-edge-to-edge-support/
- Phaser 官方 Capacitor 教程 https://phaser.io/tutorials/bring-your-phaser-game-to-ios-and-android-with-capacitor、示例仓库 https://github.com/phaserjs/starshake-capacitor-tutorial
- Tauri 2.12.1 移动端用系统 WebView https://v2.tauri.app/start/prerequisites/;Cordova 13.0.0 https://cordova.apache.org/;Bubblewrap v1.25.0 https://github.com/GoogleChromeLabs/bubblewrap;WebKit 存储政策 https://webkit.org/blog/14403/updates-to-storage-policy/
- Poki https://developers.poki.com/guide/working-with-poki、CrazyGames https://docs.crazygames.com/sdk/intro/、GameDistribution https://github.com/GameDistribution/GD-HTML5(MIT 1.3.0)、4399 https://open.4399.cn/docs/(JS 渲染,正文不可核)
- 性能与内存:微信小游戏高性能模式(iOS WKWebView 10–15 FPS vs 原生 48–50)https://developers.weixin.qq.com/minigame/dev/guide/performance/perf-high-performance.html;Cocos iOS 内存指南 https://docs.cocos.com/creator/4.0/manual/zh/editor/publish/wechat-ios-optimize.html
- 合规:App Store Review Guidelines 4.2/2.5.2/2.5.6 https://developer.apple.com/app-store/review/guidelines/;小米游戏上架要求 https://dev.mi.com/xiaomihyperos/documentation/detail?pId=1383、休闲/广告游戏流程 https://dev.mi.com/xiaomihyperos/documentation/detail?pId=1368
- 移植工作量证据:Phaser 4 微信小游戏 MVP(自写 <300 行 adapter)https://juejin.cn/post/7672283918332706862;three.js 小游戏踩坑实录(iOS
style重定义崩溃、setTimeout未定义黑屏,数天)https://juejin.cn/post/7611432097543192603
第 5 篇 · LayaAir 3 vs Cocos Creator 深度对比审查报告
原文件:
docs/layaair-vs-cocos-对比审查报告-2026-10.md(已并入本篇)
LayaAir 3 vs Cocos Creator 深度对比审查报告
场景锁定:全新项目 | 硬约束①AI agent 完成全部编码 | 硬约束②全平台导出
2026-10-06 v3(两路深挖均已回填,评分发生反转) | 系列第五篇。决策编号 D49–D73,跨版不复用。
标注:[实测] 我亲自核对;[代理查证] 子代理取证(URL 见附录 A);[官方声明] 厂商原话(≠我验证过);[估] 我的估计;未找到 = 明确查不到,不当作已知。
v2→v3 的变化不是措辞,是结论:Cocos 侧取证推翻了"官方 CLI/MCP 路线可用"这个印象(见 §3.2/§3.3),Laya 侧的"无 GUI CLI"反而是本轮最硬的加分项。
0. 结论先行
一句话:在"AI 全自动出包到小游戏端"这条最硬的约束上,目前只有 LayaAir 的官方文档声称做得到(新 CLI 无 GUI 依赖、可进 GitHub Actions、覆盖 10 端 + Linux 原生);Cocos 的 headless cocos-cli 平台清单里根本没有小游戏端(只有 web-desktop/web-mobile/android/ios + mac/windows/鸿蒙/AGP),要出微信包只能回到 3.8 编辑器命令行——而它官方原文要求图形会话、无 Linux。 代价是:Cocos 的 agent 改场景有可用件(3.8 第三方 MCP 105 工具),Laya 这块是空白(官方 MCP 插件仓库已归档、skills 只有 2 个技能且不含搭场景、官方《AI开发路线》明写"AI 单独完整生成游戏"暂不支持)。
加权评分(AI 编码 35% / 全平台导出 30% / 工程化 15% / 能力面 10% / 生态语料 5% / 费用 5%)
| 维度 | 权重 | Cocos | Laya | 本轮依据 |
|---|---|---|---|---|
| AI 完成全部编码 | 35% | 7.0 | 6.8 | Cocos:3.8 有第三方 MCP 可改场景 + 语料厚,但构建需 GUI、官方 MCP 绑在未发布的 4.0 alpha。Laya:无 GUI CLI 可全自动出包,但场景级自动化无可用件 + 语料薄(幻觉率高) |
| 全平台导出 | 30% | 7.3 | 8.2 | 两家都缺 QQ/快手;Laya 新 CLI 覆盖 10 端(含 B站/小米/华为)+ Linux/Steam 原生;Cocos 官方端别是微信/淘宝/抖音/OPPO/vivo/华为/荣耀,且小游戏端在 headless 侧不存在 |
| 新项目工程化 | 15% | 6.0 | 8.5 | Cocos:CI 官方示例未找到、命令串 ≤125 字符、macOS 换行符坑、无 Linux;Laya:官方称可 GitHub Actions,但 CLI 运行时闭源需联网拉取、同样无官方 CI 示例 |
| 能力面(2D/3D/UI/物理) | 10% | 8.0 | 8.5 | Cocos UI 齐但无官方 List/VirtualList(靠社区/商店补位);Laya 新 UI(官方称 FairyGUI 同构)自带 List/Dialog/Tab/ViewStack,另有 Worker、WebGPU 路线、2D Box2D + 3D Bullet/PhysX 内置 |
| 生态/语料(LLM 熟悉度) | 5% | 8.5 | 4.5 | 9,846★ vs 2,204★;Laya 文档源仓库 7★、NewUI-Examples 0★、示例旧库 2021 停更、GitHub 仅 9 open issue(反馈沉在自家论坛,机器不可读) |
| 许可与费用 | 5% | 8.5 | 8.0 | 本轮纠正:cocos-engine v3.8.8 的 LICENSE.md 就是标准 MIT,无流水门槛、无 splash 要求(GitHub 显示 NOASSERTION 只是因为仓库内含多份第三方许可);Laya 引擎 MIT + 博客承诺基础永久免费无分成 [官方声明],但 IDE 商用授权条款未找到 |
| 加权总分 | 7.25 | 7.43 | 反转:Laya 反超 0.18,完全落在打分噪声内 |
推荐(v3):
- 评分已不足以裁决 → 必须实测(§9.1 对撞测试从"建议"升级为"签选型前置条件")。
- 现在就要拍的规则:
- "agent 端到端无人值守出七端包"是刚需 → Laya(唯一有官方文档声称无 GUI 可行;先做 D64 的容器实测)。
- "agent 要能改界面/场景"是刚需 → Cocos(3.8 + 第三方 MCP 105 工具;接受构建节点要图形会话)。
- 两条都要 100% → 都不选,走第四版 R3(Phaser/Pixi + 自建归一层,
Demo/已实测微信端全自动)。
- 不要押 COCOS 4 / PinK 做 2026 年的生产依赖:4.0 引擎只到 4.0.0-alpha.34(2026-09-20)、无 GA;PinK 官方明示"请勿用于生产环境"、邀请码制、许可与定价未找到;而 docs.cocos.com 已有"4.0 (LTS)"手册——文档与实现不一致本身就是风险。
1. 三条硬约束的逐条判定
| 约束 | Cocos Creator | LayaAir 3 | 依据 |
|---|---|---|---|
| ① AI 完成全部编码 | 🟡 代码全自动 + 改场景有件(第三方);但小游戏包必须经 3.8 编辑器 CLI(需图形会话) | 🟡 代码 + 无 GUI 出包;但改场景无件(MCP 插件已归档、skills 无场景技能、IDE 内置 MCP 要 GUI+Key+每会话重导) | §3.2/§3.3 |
| ② 全平台导出(7 端) | 🟡 官方 5/7 + 原生(无 Linux);headless 侧 0/7 | 🟡 官方 5/7 + 原生含 Linux/Steam;缺 QQ、快手 | §2 |
| ③ 新项目可承受 | ✅ 3.8.8(LTS,2025-12-16)[实测] | 🟡 3.4.1(2026-08-31)与 3.3.13(2026-09-17)并行发版 → 选线要定(D63) | §5 |
| 附:agent 并行改界面 | ❌ 编辑器单实例 | ❌ 同理 | 共同天花板 |
| 附:CI 无人值守 | ❌ 小游戏端无 headless 路径;3.8 CLI 要 GUI 会话;Linux 无官方支持;官方 CI 示例未找到 | 🟡 官方文档称无 GUI/可 GitHub Actions;但 CLI 运行时闭源需联网、无官方 CI 示例、Linux 原生无实证 | D64 |
| 附:厂商对"AI 全自动"的态度 | COCOS 4 发布稿:"新特性采用 MCP 或 Agent 的交付逻辑"[官方声明](但载体是 alpha) | 《AI开发路线》:"AI 单独完整生成游戏"暂不支持[官方声明](口径更诚实) | §3.2 |
2. 端覆盖矩阵(v3:把"编辑器端别"与"headless 端别"分开算)
| 端 | Cocos 3.8 编辑器/CLI | Cocos cocos-cli(headless) | Laya IDE | Laya 新 CLI(headless) | 包体(主/总) |
|---|---|---|---|---|---|
| 微信 | ✅ | ❌ 无此端 | ✅ | ✅ | 4MB / ≤30MB [实测] |
| 抖音 | ✅ | ❌ | ✅ | ✅ | 4MB / 20MB(支持开放数据域) |
| 支付宝 | ✅ | ❌ | ✅ | ✅ | 4MB / 20MB |
| 淘宝 | ✅(引擎插件) | ❌ | ✅ | ✅ | 4MB / 20MB |
| 华为快游戏 | ✅ | ❌(有 huawei-agc/harmonyos-next 原生端) | ✅ | ✅ | 代码包 10MB |
| 小米快游戏 | ❌ 无官方页 | ❌ | ✅ | ✅ | 4MB / RPK 30MB |
| OPPO / vivo | ✅ / ✅ | ❌ | ✅ / ✅ | ✅ / ✅ | 4MB / —— |
| 荣耀 | ✅ | ❌ | ❌ | —— | |
| Bilibili | ❌(社区适配帖) | ❌ | ✅(v3.4.1 新增) | ✅ | 4MB / 30MB |
| QQ 小游戏 | ❌ | ❌ | ❌ | ❌ | 4MB / 20MB(小游戏侧上限未找到官方原文) |
| 快手小游戏 | ❌ | ❌ | ❌ | 6MB / 30MB;上传只有 GUI + 扫码 [实测] | |
| H5 | ✅ web-mobile/web-desktop | ✅ web-desktop/web-mobile | ✅(单文件/CrazyGames/Poki) | ✅ | —— |
| 原生 | ✅ Android/iOS/mac/Windows/鸿蒙/HMS/GP | ✅ android/ios/mac/windows/huawei-agc/harmonyos-next/ohos/google-play | ✅ LayaNative(Android/iOS/鸿蒙 NEXT/Windows(Steam)/Linux) | ✅ Win/Android/iOS/Linux | 资质门槛见 §6 |
这张表最重要的一格:Cocos 的 headless 列全是 ❌。也就是说 Cocos 的"全平台导出"能力只存在于需要图形会话的编辑器命令行里;一旦你的目标是"agent 在容器里把七端包都打出来",Cocos 现在做不到,而 Laya 声称做得到(未实证)。
3. AI 编码通道对比(核心章,v3 全面更新)
3.1 场景/预制体真源格式
| 项 | Cocos 3.8 | LayaAir 3 |
|---|---|---|
| 文件 | .scene/.prefab = JSON 文本(__type__/_id/_children/_components,引用 uuid,uuid 在配套 .meta)[代理查证] | .ls 场景 / .lh 预制体 / .lprefab(社区解析称 JSON,字段 type/props/child) |
| 官方格式规范 | ❌ 未找到官方"场景文本格式"规范页 | ❌ 同样未找到(D65) |
| 手写 JSON 的风险 | 社区明确警告会"引用错乱" → 才出现第三方走 CLI 改 prefab 的件 | 未验证(D65) |
| 纯代码搭场景 | ✅ 运行时 Prefab.instantiate/director.loadScene + 编辑器序列化 API(editor-extends/utils/serialize) | ✅ Scene.open/Scene.load,且 layaair create -t "2D empty project" 可不开 IDE |
我在 2.4.15 存量工程量到的病(89% 内容在序列化 JSON)在两家都不会自动消失。两家官方都不给场景格式规范,这条本身就足以否决"让 agent 直改场景文件"的路线。
3.2 MCP / Agent 通道清单(v3 全部重核)
| 通道 | 归属 | 版本 | 能力 | 真实状态(v3) |
|---|---|---|---|---|
| Funplay MCP for Cocos | 第三方商店 | 3.8+ | node/prefab/component,105 工具,编辑器内 HTTP 127.0.0.1:8765,带路径穿越检查 | 可用 [代理查证];是 3.8 上唯一能用的场景级通道 |
| cc-3-8-x-mcp / cocos-mcp-server | 社区 | 3.8 | 走 CLI 改 prefab(规避手写 JSON 引用错乱) | 存在,规模小 [代理查证] |
| cocos-mcp-2x | 社区 MIT | 2.4.x | 读写场景节点/资源/日志 | 个人项目,作者 2.4.15 验证 |
cocos/cocos-cli + 内置 MCP | Cocos 官方 | 只支持 COCOS 4,不支持 3.8 | 命令:cocos create/build -p <platform>、cocos start-mcp-server --project --port、cocos simulator、全局 --no-interactive;MCP 域可从源码推断:scene/node/prefab/component/assets/builder/system/file-editor/engine/project/configuration | ⚠️ 435★/MIT(根目录无 LICENSE 文件)/需 Node 22+ + npm run init + npm link;--platform 只有 web-desktop/web-mobile/android/ios(源码另有 mac/windows/huawei-agc/harmonyos-next/ohos/google-play)→ 无任何小游戏端;MCP 工具清单无公开文档;文档称"无需 GUI"但整套绑在 4.0 alpha |
| PinK IDE | Cocos 官方(论坛有专版) | alpha | "AI 驱动游戏全流水线"、内置 Agent、支持场景编辑,与 COCOS 4/cocos-cli 集成 | ❌ 官方明示"请勿用于生产环境";0.0.1.18 Alpha(2026-05-09);火山引擎"万有"上架、0.01 元测试码、邀请码未大规模发放;许可与定价未找到 |
| LayaAir IDE 内置 MCP | Laya 官方 | IDE 3.3.6+,必须启动 IDE GUI,需 ai-console API Key | 宣称可写文件/建节点/设物理;限制"每会话重新导入项目" | 文档存在 [代理查证];性质与 Funplay 同档(人在场) |
layabox/LayaAir-mcp-plugin | Laya 官方组织 | —— | 仅 create-cube-in-scene、import-model-to-scene | ❌ 2026-08-19 已归档只读、无 LICENSE、2★ → 不可依赖 |
layabox/layaair-skills | Laya 官方组织 | —— | 只有 2 个技能:layaair-cli、layaair-ide-plugin;能力=建项目/构建/校验资源/导出 .layapkg/跑脚本/版本管理 | ⚠️ 无"搭场景、挂组件"技能(2026-09-22 仍在更新) |
layabox/layaair-cli | Laya 官方组织 | Node 20+ | 建项目/构建/校验/多端出包 | ⚠️ 仓库只有 5 个文件(install.sh/ps1 + README + LICENSE),运行时本体闭源、安装时联网从厂商服务下载 → "开源"名不副实 |
| 参照:Phaser 4 自带 skills | 引擎官方 | —— | node_modules/phaser/skills/ 25 主题(含 v3→v4 迁移) | [实测] 我写 Demo 时靠它对齐 v4 API |
净结论(v3):
- 改场景:Cocos 有件(3.8 第三方 105 工具 / 4.0 官方 MCP 但 alpha);Laya 基本没有(归档 + 无场景技能)。
- 出包:Laya 有官方文档支持的无 GUI 路径;Cocos 没有(headless 无小游戏端,3.8 CLI 要图形会话)。
- 也就是说:两家各自把一半能力留在了"未发布"或"闭源"里——Cocos 押在 4.0 alpha + PinK,Laya 押在闭源 CLI 二进制。
3.3 无头 / CI 能力
| 项 | Cocos | LayaAir 3 |
|---|---|---|
| 小游戏端 headless | ❌ 未找到(cocos-cli 无小游戏端;文档称可放 packages/platforms 插件自动扫描,但该目录在仓库里不存在) | ✅ 官方 CLI 文档列 10 端(H5/微信/抖音/OPPO/vivo/小米/华为/B站/支付宝/淘宝) |
| 3.8 编辑器 CLI | --project <path> --build "platform=X;debug=Y",命令串 ≤125 字符;configPath/logDest/stage/template-version;退出码 32=参数无效/失败、34=构建错误、36=成功;必须 GUI 会话(Jenkins 需 WindowServer/桌面 agent);已知坑:macOS 因文档换行符使 --build 失效(2025-08 已解决) | 老式 LayaAirIDE --project=… [--script=类.方法]:依赖已装 IDE,只 8 端(web/wxgame/bytedance/oppo/vivo/xm/alipay/tb) |
| Linux | ❌ 无官方支持(论坛 2025-02 无官方结论) | 🟡 文档列 Linux/x64/arm64,但未找到官方 CI yml 与 Linux 原生打包实证(D64) |
| 官方 CI 示例 | ❌ 未找到 | ❌ 未找到 |
| 上传脚本化 | 与引擎无关:微信 miniprogram-ci 2.1.31 ✅ 无需 IDE;抖音/QQ/B站/vivo/支付宝 CLI 见第四版 §5 | 同 |
3.4 LLM 语料密度(决定幻觉率)
| 指标 | Cocos | LayaAir |
|---|---|---|
| 引擎仓库 stars/forks、issue | 9,846★ [实测];cocos4 1,483★/92 issues;cocos-cli 435★/46 issues | 2,204★/545fork/仅 9 open issue |
| 文档可核性 | 高(3.0–3.8 + 4.0 全版本中文手册) | 中(多页 SPA 抓不到正文;文档源仓库 Doc-ZH 7★、Doc-EN 2★) |
| 示例 | 商店成品 + 论坛主题 ID 已排到 ~17.7 万 | NewUI-Examples 0★、旧 layaair-demo 101★ 但 2021 停更;示例在引擎仓库 src/samples |
| 对 agent 的影响 | 模型"记得 API"概率高 | 更易编出不存在的 Laya API;且 issue 少≠没问题(反馈沉在自家论坛 4670 bug 帖,机器不可读) |
| 缓解 | —— | tsc --noEmit + 契约测试 + 官方 API 站/layaair-skills 进上下文(对 Laya 是必需项) |
| 份额证据的可信度 | ⚠️ "收入最高 80% 游戏由 Cocos 开发"(2023 触控 CEO 演讲,媒体转述)、"荣誉榜满眼都是 Cocos"(官方博客)→ 都是宣传口径,不是第三方统计;招聘岗位数/商店 SKU 数未找到可核实数据 | 未找到同类宣传,也未找到数据 |
3.5 两家共同的天花板(别指望换引擎绕过)
- agent 不能并行改场景(编辑器/IDE 单实例);
- 快手、百度两端每次上传都要 GUI + 扫码
[实测]; miniprogram-automator不覆盖小游戏(0.12.1,2023-11-06 起未更新[实测])→ 自动验收只能"无头浏览器 + 喂帧"(Demo/已跑通);- 变现层必须自写:没有任何一家提供跑在小游戏运行时里的 JS 广告聚合 SDK(TopOn/Taku、TradPlus、GroMore 都是 App 原生 SDK 或"跳转"方案);支付各端只有自家 API(
wx.requestMidasPayment/tt.requestGamePayment/my.tradePay/快游戏各家联运)。iOS 小游戏内购 2026-03-15 已上线、2026-07 苹果开始封堵规避 IAP → 别再按"iOS 只能广告"设计; - 两家都没有官方 CI 示例(这条对"AI 无人值守"是同一份作业要自己交)。
4. 技术能力对比(v3 补 Cocos 侧取证)
| 能力 | Cocos Creator 3.8 | LayaAir 3.4 | 备注 |
|---|---|---|---|
| 2D 渲染 | ✅ WebGL + Canvas 双管线 | ✅ WebGL(3.5 路线 WebGPU) | 小游戏端都走 WebGL |
| UI 体系 | ✅ Widget/ScrollView/RichText/EditBox/九宫格/Layout/Mask;⚠️ 无官方 List/VirtualList(社区与商店插件补位) | ✅ 经典 UI + 新 UI(官方称 FairyGUI 同构):Button/List/Panel/Box/VBox/TextInput/TextArea/Slider/ProgressBar/ComboBox/Tab/ViewStack/Dialog | 对"47 个面板"这种量级,Laya 自带 List 是实打实省工;但新 UI 实战成熟度未验证(D66) |
| 3D | ✅ 前向 + 延迟管线、合批/UBR、光照阴影、后处理 | ✅ ClusterLighting、Forward+、PBR/Unlit、反射探针、体积 GI、后处理、计算着色器、WebGPU | 3D 需求两家都不输 |
| 动画 | ✅ Tween/Animation/Spine/DragonBones | ✅ 时间轴/骨骼/Animator2D 状态机/IK/动画烘焙/龙骨/Spine | 都不能让 agent 改 .spine/.riv 工程 |
| 物理 | ✅ 项目设置→功能裁剪:3D 可选 builtin/bullet/PhysX/cannon.js,2D box2d;⚠️ PhysX 有包体与 x86 安卓限制 | ✅ 内置模块:2D Box2D、3D Bullet/PhysX;Cannon 为附加库 | 都要避开 WASM 件(WXWebAssembly 只支持 instantiate(path) 且 .wasm 须在代码包内) |
| 分包/远程/热更 | ✅ Asset Bundle + 远程 + 分包官方页 + 原生热更;⚠️ 小游戏端代码热更的官方声明未找到;已知坑:微信远程 AssetBundle 更新需清缓存 | ✅ 分包(IDE 勾选)+ URL.basePath;Native 热更 zip 更新 / LayaDCC 2.0(有"无法本地保存"反馈) | 两边都要自己趟 |
| Worker | 未取证 | ✅ 官方列多线程 Worker | Laya 加分 |
| 空包体积 | ⚠️ 官方数字未找到;社区实测首包约 1.8MB(未核实) | 🟡 官方博客:2D 空场景 943KB、3D 1.5MB(并称友商 1.8M/2.7M)[官方声明] | 4MB 主包下这是实质差异,但两边都得自己实测(D70) |
| iOS 内存/性能官方指南 | ✅ 专页:2GB 机型约 1GB、3GB 约 1.4GB,建议 ASTC、禁动态合批、贴图分包、精简音频字体;高性能模式/引擎插件需勾选 | ❌ 未找到(只有微信平台通用指南) | Cocos 加分(这条对线上崩溃率影响大) |
| 第三方性能监测 | —— | ✅ UWA GPM 2.0(2026-08-27)覆盖 LayaAir 微信/抖音线上帧率/内存/崩溃 | 运维加分 |
5. 版本线、生态与团队成本
| 项 | Cocos | LayaAir |
|---|---|---|
| 当前可依赖版本 | 3.8.8(2025-12-16,LTS) [实测];3.8.7(2025-08-22) | 引擎 v3.4.1(2026-08-31)与 3.3.13(2026-09-17)并行发版;节奏 2–4 周一版 |
| 下一代 | COCOS 4:仓库 cocos/cocos4 只到 4.0.0-alpha.34(2026-09-20),无 GA;cocos-engine 无任何 v4 tag;但 docs.cocos.com 已有"4.0 (LTS)"手册(含命令行发布 + 微信小游戏页)→ 文档与实现不一致;3.8→4.0 迁移指引未找到 | 3.5 路线(WebGPU/多线程)有访谈级信息 [官方声明] |
| 社区口径 | 论坛主题 ID ~17.7 万;2026-06 有用户反映"Cocos4 无 IDE,需 PinK 或 CLI""前朝剑斩当朝官难行" | ask.layabox 活跃(4670 bug 帖 / 11433 2D 帖,最新 2026-10-05),但机器不可读 |
| 商店/插件 | ✅ store.cocos.com(含 AI 扩展、成品模板、TopOn/TradPlus 商业插件文档) | IDE 内置包管理(.layapkg),规模未取证 |
| 招人/外包 | 明显容易 | 难 |
| 稳定性反馈热点 | 大项目卡顿/打包内存溢出、微信远程 AssetBundle 需清缓存、2.x→3.x 历史包袱 | Spine / 2D 物理 / Camera2D(3.4.1 更新说明与近期提交集中在这些) |
6. 许可与费用(v3 纠正了一处)
| 项 | Cocos | LayaAir |
|---|---|---|
| 引擎许可 | ✅ v3.8.8 的 LICENSE.md 就是标准 MIT(Chukong 2013–2016 + 厦门雅基 2017–2023),无流水门槛、无 splash 要求;GitHub 显示 NOASSERTION 仅因仓库内含多份第三方许可文件 [代理查证] | MIT [实测] |
| 下一代许可 | cocos4 仓库 MIT、cocos-cli MIT(但根目录无 LICENSE 文件);发布稿声明"脱离原 Cocos Creator 全部商业约定" [官方声明] | 同 |
| 编辑器/IDE | 免费下载商用,2026 无收费条款(未找到反证);PinK 许可与定价未找到 | ⚠️ 未找到 IDE 商用授权书面条款;官方博客承诺"基础功能永久免费、不收引擎使用费与版权费、无流水分成" [官方声明] |
| 云服务 | service.cocos.com 计费页(页面日期 2021-01-11)只列第三方服务(声网/腾讯云 TCB/MGOBE/GME),无云构建;"Cocos Build Service"产品与定价未找到 | 未找到 |
| AI 产品费用 | —— | LayaIdea 插件版需 IDE 3.3.9+、token/积分计费、无公开价目表 |
| 平台侧(两家同) | iOS 小游戏内购 2026-03-15 上线、2026-07 苹果封堵规避 IAP;国区安卓上架要营业执照+网文证+增值电信+ISBN 版号+软著 | 同 |
给法务:Cocos 3.8 的 MIT 是文件级可核的(本轮已核);Laya 的免费是引擎 MIT + 博客承诺,IDE 侧查无书面条款——一个是白纸黑字,一个是查无此文(D67)。
7. 风险清单(按能否推翻选型排序)
Cocos 侧(v3 大幅补充)
| # | 风险 | 证据 | 缓解 |
|---|---|---|---|
| K1 | headless 侧没有小游戏端构建能力(cocos-cli 平台清单只有 web/原生;宣称的 packages/platforms 插件目录不存在) | [代理查证] | 出包必须走 3.8 编辑器 CLI + 图形会话节点;或改选 Laya/R3 |
| K2 | 押注的"AI 原生"路线在未发布产品里:4.0 只到 alpha.34、无 GA 编辑器;PinK alpha + "请勿用于生产" + 邀请码 + 许可未明 | [代理查证] | 3.8 开工;4.0 每季度复评(D71) |
| K3 | 文档与实现不一致:4.0 手册已写"命令行发布 + 微信小游戏",引擎却是 alpha | [代理查证] | 只按 3.8 手册做决策 |
| K4 | 3.8 CLI 需 GUI 会话、无 Linux、命令串 ≤125 字符、macOS 换行符坑、退出码语义不透明 | 官方文档 + 论坛 | 构建机 + 退出码门禁(36/32/34)+ 参数写文件传 |
| K5 | 官方 MCP 无工具清单文档(只能从源码目录推断);3.8 的场景自动化实际靠第三方件(Funplay 105 工具、cc-3-8-x-mcp) | [代理查证] | 第三方件先只读试;关键操作留回滚脚本 |
| K6 | 缺 小米/B站/QQ/快手 官方端 | 手册逐条数过 [实测] | 自建或社区件 |
| K7 | 无官方 List/VirtualList;小游戏端代码热更无官方声明;引擎最小体积无官方数字 | [代理查证] | 列表用商店/社区件前先测;热更方案自验(D70) |
| K8 | 大项目卡顿/打包内存溢出、微信远程 AssetBundle 更新需清缓存 | 社区帖 | 构建内存与缓存策略写进 CI |
LayaAir 侧
| # | 风险 | 证据 | 缓解 |
|---|---|---|---|
| L1 | 场景级 AI 自动化无可用件(MCP 插件 2026-08-19 归档、skills 无场景技能、IDE 内置 MCP 要 GUI+Key+每会话重导) | [代理查证] | 界面一律代码化(Scene.open/load) |
| L2 | CLI "开源"名不副实:仓库 5 个文件、运行时闭源、安装联网从厂商服务拉 | [代理查证] | 把 CLI 二进制缓存进制品库;受限网络先验(D64) |
| L3 | 官方《AI开发路线》明写**"AI 单独完整生成游戏"暂不支持** | [官方声明] | 把 agent 定位成"写代码 + 跑构建" |
| L4 | 无官方 CI 示例、无 iOS 内存指南、无场景文件格式规范 | [代理查证] | 自建 docs/platform-spec/ + 包体/内存门禁 |
| L5 | 版本线并行(3.4.1 与 3.3.13 同时在发),3.4 是否"稳定推荐线"无官方口径 | [代理查证] | 锁一条线写进 README(D63) |
| L6 | 实操坑:macOS unknown script(官方答复把脚本移进 src)、Native 工程升级引擎版本困难、LayaDCC 2.0 无法本地保存 | 社区论坛 | 原生端上线前先验一次"升级引擎" |
| L7 | 语料薄 → 幻觉 API;GitHub 仅 9 open issue(反馈在自家论坛,机器不可读) | §3.4 | tsc + 契约测试强制;关键决策一律 spike |
| L8 | IDE 商用授权条款未找到;LayaNative2.0 仓库无 LICENSE;LayaIdea 积分无价目表 | [代理查证] | 规模化前书面确认(D67) |
8. 两条最小可行工作流
8.1 选 Cocos Creator 3.8 LTS
骨架:assets/scripts/**.ts(真源)、唯一 Main.scene、界面一律代码建(禁 prefab 拖拽)、
config/tables/*.json、extensions/funplay-mcp、tools/build.sh(--build + 退出码断言)
门禁:tsc --noEmit → eslint(禁业务层直连 wx.*)→ web 构建 → 无头浏览器喂帧断言 →
各端构建(Win/mac 图形会话节点,参数写文件传,断言退出码 36)→ miniprogram-ci preview
agent 分工:代码/数值/关卡/构建脚本 = Mode A 全自动;改场景 = Mode B(MCP,人在场)
8.2 选 LayaAir 3
骨架:src/**.ts(引擎源码可读)、场景 .ls 压到最少、界面代码建、config/*.json、
tools/laya-build.sh(新 CLI,10 端 + 原生),CLI 二进制缓存进制品库
门禁:同上;锁版本线(3.3.x 或 3.4.x)写进 README
开工前必做(三条,各半天):
① 干净 Linux 容器里用新 CLI 出微信包 → 验证"无 GUI"是否真成立(D64)
② agent 纯代码搭 3 个面板 → 量 tsc 首轮通过率与人工干预次数(D72)
③ 2D 空场景出包实测体积 → 复核官方 943KB 口径(D70)
9. 最终建议
9.1 对撞测试现在是签选型的前置条件(不是可选项)。同一份"3 屏弹窗 + 1 个战斗场景 + 1 张数值表",两边各让 agent 做一遍,记 6 个数:① tsc 首次通过所需轮次;② 人工干预次数;③ 能否在纯 Linux 容器里出微信小游戏包;④ 2D 空包体积;⑤ 出包后无头喂帧断言是否全绿;⑥ 改一个界面需要几步(代码 vs MCP/IDE)。我可以照 Demo/ 的门禁风格把脚本与打分表做出来(D73)。
9.2 三条可直接引用的硬结论(来自本轮取证):
- "全平台小游戏导出"目前只有一条可依赖路径 = 引擎编辑器 + 其 CLI 包装;两家都没有 QQ/快手官方端。
- cocos-cli 的 headless 构建不支持任何小游戏端,不能作为 CI 全平台方案;Cocos 的 CI 自动化实际要绑 4.0 alpha。
- COCOS 4 / PinK 全在 alpha/邀请制,MIT 已落地但工程兼容与迁移无官方指引 → 全新项目押 4.0 = 押未发布产品。
9.3 无论选谁都要做的三件事(它们才是"AI 能不能完成全部"的决定项):界面代码化纪律、platform/ 归一层(含 ads.ts/pay.ts)、无头喂帧门禁。
10. 待确认 D49–D73
| # | 问题 | 状态 / 默认值 |
|---|---|---|
| D49 | Cocos 3.8 实际 LICENSE | ✅ 已核:v3.8.8 LICENSE.md 为标准 MIT,无门槛无 splash(NOASSERTION 是元数据现象) |
| D50 | Laya 官方 AI 件能力 | ✅ 已核:MCP 插件已归档、skills 无场景技能、IDE 内置 MCP 需 GUI+Key → 场景自动化空白 |
| D51 | cocos-cli 平台清单与 MCP 工具面 | ✅ 已核:平台只有 web/原生(无小游戏端);MCP 无公开工具清单,源码有 11 个 api 域;只支持 4.0,不支持 3.8 |
| D52 | Laya CLI 是否需图形会话 | ✅ 已核:官方称无 GUI 依赖、可 GitHub Actions(老式 LayaAirIDE --project 仍需 IDE) |
| D53 | 快游戏联盟与微信 API 差异无官方对照表 | 只做华为,其余 T+3 月 |
| D54 | 必须端清单(B站/小米/荣耀/QQ/快手?) | 按"微信+抖音+支付宝+H5"评估 |
| D55 | 语料差距未做严格计数 | 用 D72 对撞测试替代 |
| D56 | Laya UI 组件体系 | ✅ 已核:经典 UI + 新 UI(FairyGUI 同构)+ 组件清单;实战见 D66 |
| D57 | Laya 热更 | ✅ 已核:Native zip 更新 + LayaDCC 2.0(有本地保存问题反馈) |
| D58 | 引擎空包体积 | 🟡 Laya 官方 943KB/1.5MB [官方声明];Cocos 官方数字未找到(社区 1.8MB 未核实)→ 实测见 D70 |
| D59 | Laya 收费口径 | ✅ 部分已核:引擎 MIT + 博客承诺免费无分成;IDE 书面条款仍未找到(D67) |
| D60 | 多家文档 SPA 抓不到正文 | 建 docs/platform-spec/ 人工存证 |
| D63 | Laya 锁 3.3 还是 3.4 线 | 未定;默认锁 3.3.x |
| D64 | Laya 新 CLI 在干净 Linux 容器/受限网络下能否真出包 | ⚠️ 决定 Laya 路线成立与否,开工前必验 |
| D65 | Laya .ls/.lh 是否含不可读 ID、IDE 对手写场景的容忍度 | 未取证 → spike |
| D66 | Laya 新 UI 实战成熟度(性能/虚拟列表/编辑器支持) | 未取证 → spike |
| D67 | Laya IDE 书面授权条款 | 规模化前书面确认 |
| D68 | 要不要我出对撞测试脚本 + 打分表 | 建议要(升级为前置条件,见 D73) |
| D69 | Cocos 3.8→4.0 迁移指引未找到 | 押 4.0 前必须拿到官方迁移说明 |
| D70 | 两家 2D 空包实测体积(4MB 主包预算的直接变量) | 对撞测试里量 |
| D71 | COCOS 4 GA 时间表(现在只有 alpha.34) | 每季度复评;不作为 2026 生产依赖 |
| D72 | agent 在两家上首次 tsc 通过率与人工干预次数 | 对撞测试里量 |
| D73 | 对撞测试要不要我做 | 等你点头(本轮只写文档,未动 Demo/) |
附录 A:证据(v3)
Cocos(本轮子代理取证,关键项我抽核)
- 版本:https://github.com/cocos/cocos-engine/releases(3.8.8 = 2025-12-16)、3.8.7 发布帖 https://forum.cocos.org/t/topic/170142
- COCOS 4 仅 alpha:https://github.com/cocos/cocos4(1,483★/MIT/建仓 2025-12-18/最新 release 4.0.0-alpha.34,2026-09-20);开源公告 https://forum.cocos.org/t/topic/172915、https://www.prnewswire.com/apac/news-releases/cocos-4-is-here-fully-open-source-302652633.html
- cocos-cli:https://github.com/cocos/cocos-cli(435★/46 issues/需 Node 22+/
npm run init+npm link;docs/zh/commands.md;src/core/builder/platforms/仅 web/android/ios + mac/windows/huawei-agc/harmonyos-next/ohos/google-play) - 4.0 手册(与实现不一致的证据):https://docs.cocos.com/creator/4.0/manual/zh/editor/publish/publish-in-command-line.html、https://docs.cocos.com/creator/4.0/manual/zh/editor/publish/publish-wechatgame.html
- 3.8 命令行发布(退出码 32/34/36、≤125 字符、需 GUI):https://docs.cocos.com/creator/3.8/manual/zh/editor/publish/publish-in-command-line.html;Linux 无结论 https://forum.cocos.org/t/topic/165800;macOS
--build失效 https://forum.cocos.org/t/topic/170038 - 3.8 发布端别清单:https://docs.cocos.com/creator/3.8/manual/zh/editor/publish/;B站为社区适配 https://forum.cocos.org/t/topic/163571
- 能力面:物理引擎与裁剪 https://docs.cocos.com/creator/3.8/manual/zh/physics/physics-engine.html;iOS 内存与优化 https://docs.cocos.com/creator/3.8/manual/zh/editor/publish/ios/optimize.html
- PinK:https://forum.cocos.org/c/PinK/103、0.0.1.18 Alpha https://forum.cocos.org/t/topic/175697
- 许可与计费:https://github.com/cocos/cocos-engine/blob/master/LICENSE.md、https://service.cocos.com/document/zh/billing-and-charge.html
- 社区对 4.0 的态度:https://forum.cocos.org/t/topic/176132;第三方 3.8 MCP https://forum.cocos.org/t/topic/176107
LayaAir
- https://api.github.com/repos/layabox/LayaAir(2,204★/545fork/MIT/9 issues/默认分支 LayaAir_3.4)、releases(v3.4.1 = 2026-08-31;v3.3.13 = 2026-09-17)
- 新 CLI(无 GUI / CI / 10 端 / Node 20+):https://layaair.layabox.com/3.x/doc/basics/developmentenvironment/cli/;老式命令行 http://layaair.com/3.x/doc-en/released/commandLine/readme.html
- https://api.github.com/repos/layabox/layaair-cli(5 文件/运行时闭源)、https://github.com/layabox/layaair-skills(2 技能)、https://github.com/layabox/LayaAir-mcp-plugin(2026-08-19 归档)
- IDE 内置 MCP 与 LayaIdea:https://layaair.layabox.com/3.x/doc/basics/developmentenvironment/layaidea/、https://layaidea.layabox.com/
- 能力与格式:https://layaair.layabox.com/3.x/doc/basics/、https://layaair.layabox.com/3.x/doc/basics/architecture/、https://layaair.com/3.x/doc/basics/unitytolayaair/(
.ls/.lh)、https://layaair.layabox.com/3.x/doc/3d/advanced/customphysicsengine/ - 包体与免费承诺:https://blog.csdn.net/m0_38013911/article/details/145332814、https://blog.csdn.net/m0_38013911/article/details/148106279
- 已知坑:http://ask.layabox.com/d/55135、https://ask.layabox.com/d/54952、https://ask.layabox.com/d/54851
- 热更与微信端:https://layaair.com/3.2/doc/released/native/zipUpdate/readme.html、https://layaair.layabox.com/3.x/doc/released/minigame/wechat/;UWA GPM 2.0 https://blog.csdn.net/UWA4D/article/details/164113390
平台与变现(两家共用)
- 微信包体 https://developers.weixin.qq.com/minigame/dev/guide/base-ability/subPackage/useSubPackage.html、云测试 https://developers.weixin.qq.com/minigame/dev/minigame-testtool/overview.html、快手工具(无 CLI)https://ks-game-docs.kuaishou.com/minigame/start/devtool.html
- 广告聚合均为 App 侧:https://service.cocos.com/document/zh/toponad.html、https://help.takuad.com/docs/、https://docs.tradplusad.com/docs/tradplussdk_android_doc_v6/tradplus_sdk_overview/wx_appendix_game/、https://www.csjplatform.com/supportcenter/6034
- 支付与 iOS 新政:https://developers.weixin.qq.com/minigame/dev/guide/open-ability/virtual-payment/coins.html、https://partner.open-douyin.com/docs/resource/zh-CN/mini-game/develop/api/payment/tt-request-game-payment、https://www.tmtpost.com/7942848.html、https://m.jiemian.com/article/11511557.html
- 埋点 https://www.npmjs.com/package/sa-sdk-miniprogram;资质 https://dev.mi.com/xiaomihyperos/documentation/detail?pId=1383
附录 B:本轮明确"未取证"的格子
Laya 新 CLI 在干净 Linux 容器/受限网络下的真实可用性(D64)、.ls ID 规范(D65)、新 UI 实战(D66)、IDE 书面授权(D67);Cocos 的 3.8→4.0 迁移指引(D69)、4.0 GA 时间表(D71)、官方引擎最小体积(D58/D70)、官方 MCP 工具清单(D51 已核到"无文档")。其中 D64/D66/D70/D72 各半天 spike 即可关掉——这是本报告唯一想让你先做的事。