docs(tier1): 约束框架定稿——15KB红线废除→三层框架,四路引擎尽调收口(HJ-T1-REDESIGN-001·创始人专门会话)

- 新增 brainstorm requirements(单一事实源):SLO地板@千元机+4G P75/预算入场券B1 gz≤350KB·raw≤1.5MB/工程增强层E1-E6;裁决语义=预算入场券·S2实测主考
- 重设计评审版 v1.1:四路尽调回填(LittleJS 8.0/Phaser 8.0/KAPLAY 6.5淘汰/自研+微库淘汰),D2引擎URL化交付铁律(HTTP+编译双缓存)
- 裁定回填:tech-decisions §1.1(自研壳退役→成品轻引擎+Runner v2,终裁待spike)+glossary/product-and-architecture词条+技术决策版横幅第4条
- 1.x手册挂横幅(add-game-template/runtime-and-multichannel/game-studio/.agent),双轨冻结期仍有效;历史spec不动
- 护城河话术三处措辞修:自研边界改'宿主控制层自研+渲染引擎用开源可替换',强化B0定调

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
zizi 2026-06-11 17:49:53 +00:00
parent 09d590cad1
commit 75d01f0e92
10 changed files with 351 additions and 9 deletions

View File

@ -46,7 +46,7 @@
| **Golden Config 回归** | 用模板标准配置样例做比对回归,确保模型/模板迭代后生成质量不退化。 |
| **trace_id** | Gateway 入口注入、全链路透传(含 Dify/OpenGame 调用与运行时 SDK的追踪 ID是调试与可观测的主线。 |
| **DAU** | 日活跃用户MVP 目标 1,000 DAU正式目标 100,000 DAU。 |
| **分层运行时Tier1/2/3** | 游戏产物三层Tier1 极轻量H5/2D=自研 Canvas<15KB+OpenGameMVP 唯一交付层Tier2 复杂2D+3D / Tier3 独立App=Cocos Creator 3.8.8+MCP详见 tech-decisions §1.1 |
| **分层运行时Tier1/2/3** | 游戏产物三层Tier1 极轻量H5/2DMVP 唯一交付层2026-06-11 重设计中:自研 Canvas 壳→成品轻引擎+Runner v215KB 红线废除、改三层约束框架,见 `docs/brainstorms/2026-06-11-tier1-runtime-constraints-requirements.md`Tier2 复杂2D+3D / Tier3 独立App=Cocos Creator 3.8.8+MCP。详见 tech-decisions §1.1。 |
| **Cocos-MCP** | 用 MCP 协议(158 工具)让 AI 驱动 Cocos Creator 3.8.8 编辑器做复杂2D/3D/原生游戏;属有状态 agentic 编排、归 studio区别于 OpenGame 单次文生代码归 aigc。 |
| **Prompt RegistryPrompt 即契约)** | git `contracts/prompts/` 为全生命周期 prompt 的单一事实源(第 8 类契约):版本化 + 输入输出 Schema 绑定 + 约束块 + Golden 集 + owner运行时按 `id@version` 加载注入、不内嵌引擎内核。 |
| **Prompt 轻量门禁** | prompt 改动 PR 触发的效果验证Schema 通过率 + 生成成功率≥80% + Golden 回归 + 成本/延迟不劣化 + 人工抽检;可玩性靠行为指标反哺、不做结构化自动评分。 |

View File

@ -49,7 +49,7 @@
业务服务层 13 个 game-modulestudio/project/aigc/runtime/feed/telemetry/pay/trade/community/ip/compliance/biz/ad
基础设施层 Yudao 原生system用户/权限/OAuth2 / infra文件/任务/日志) / bpm工作流 Flowable
AI 引擎层 DifyDAG 编排/多模型) + OpenGamePython 代码生成) + ComfyUI图片素材 + Stability Audio / Fish Audio·CosyVoice音频/音色)
运行时栈 分层Tier1 自研轻量 Canvas Runtime<15KB2D 游戏流OpenGame 生成/ Tier2-3 复杂2D·3D·原生 Cocos Creator 3.8.8+MCP导出以微信小游戏格式包为枢纽详见 tech-decisions.md §1.1
运行时栈 分层Tier1 轻量 2D 游戏流运行时2026-06-11 重设计中:自研壳→成品轻引擎+Runner v215KB 红线废除、改三层约束框架,见 tech-decisions.md §1.1 回填)/ Tier2-3 复杂2D·3D·原生 用 Cocos Creator 3.8.8+MCP导出以微信小游戏格式包为枢纽
中间件层 Nacos / MySQL 8.0 / Redis 7 / RocketMQ 5 / MinIO本地·阿里云 OSS生产
可观测性 Prometheus / Grafana / Sentry / Jaeger链路追踪
```

View File

@ -11,6 +11,7 @@
## 1. 关键决策表ADR
> **⚠️ 回填2026-06-10HJ-AUDIT-001**下表「AI 生成引擎」行已被 **C2 裁定2026-06-09部分取代——MVP 现行生成主线 = 模板驱动**LLM 直出 GameConfig 参数 + 固定模板 runtime经 new-api 网关直连 LLMDify/OpenGame 均未部署降级为远期增强。§1.1 Tier1 行的「OpenGame 文生代码」同此。证据:`docs/agent-specs/2026-06-09-generation-spike/spike-summary.md`52/52 结构层 100%)。
> **⚠️ 回填2026-06-11Tier1 重设计·创始人专门会话)**:下表「游戏运行时」行的 **Tier1「自研 Canvas<15KB」被二次质疑裁定取代**——自研壳实为机制演示(资产载而不绘/零 juice/只胜不败),手搓引擎=critical risk**15KB 红线废除**(系 srcdoc 内联架构的衍生约束前提已失效改为三层约束框架SLO 地板@千元机+4G P75 / 预算入场券 B1 gz≤350KB·raw≤1.5MB / 工程增强层 E1-E6引擎=契约下可换的实现,**终裁待 LittleJS vs Phaser eval-spike**。单一事实源:`docs/brainstorms/2026-06-11-tier1-runtime-constraints-requirements.md` + `docs/agent-specs/2026-06-11-Tier1运行时重设计-review.md`
| 决策点 | 选择 | 理由 | 放弃的备选why-not | 风险 |
|---|---|---|---|---|
@ -19,7 +20,7 @@
| **前端** | Vue3 + Element Plusgame-admin/ Vue3 + Vantgame-studio移动优先适配 360-430px | Element Plus 版是 Yudao 官方主推、社区最活跃、文档最全、二开友好度最高Vant 适配游戏流滑动体验 | **React + Next.js**:与 Yudao 前端生态不一致二开成本高v1 用的就是 Next.jsv2 切 Vue3 | 两端两套组件库C 端游戏流须独立 H5admin 风格不适用 |
| **数据库** | MySQL 8.0 | Yudao 默认,社区方案最多,迁移成本最低;需 JSONB/全文检索时再加 PostgreSQL/ES | **PostgreSQL**JSONB/全文检索更强但 Yudao 适配成本高 | 复杂检索能力弱,靠后续叠加 ES/PG 补 |
| **消息队列** | RocketMQ 5 | Yudao 默认集成;延迟消息/事务消息/死信队列完整,适合生成任务调度、审核通知、事件摄取、结算触发 | **Kafka**偏大数据流、运维重MVP 过度;**Redis Stream**:可靠性不足,无死信/事务消息 | 运维复杂度高于 Redis Stream但生产更可靠 |
| **游戏运行时**(分层,见 §1.1 | Tier1 自研轻量 Canvas Runtime(<15KB)**Tier2/3 复杂2D·3D·原生 Cocos Creator 3.8.8 + MCP** | Tier1 首屏极快P75<3s)、AI 生成纯 JS 直接可运行平台完全控制沙箱Tier2/3 Cocos MCP(158工具) AI 驱动出功能快一栈覆盖复杂2D+3D+原生/小游戏导出 | **Three.js** web3D Cocos 重复不选**Phaser 3 全栈** 2D导出弱否决**LayaAir** MCP 生态清单无快手否决**Unity**AI 适配差启动重否决 | Cocos web 包体较重(MB级)→Tier2/3 不进游戏流走渠道/App 分发Tier1 仍自研薄壳保首屏 |
| **游戏运行时**(分层,见 §1.1 | Tier1 自研轻量 Canvas Runtime(<15KB)**Tier2/3 复杂2D·3D·原生 Cocos Creator 3.8.8 + MCP** | Tier1 首屏极快P75<3s)、AI 生成纯 JS 直接可运行平台完全控制沙箱Tier2/3 Cocos MCP(158工具) AI 驱动出功能快一栈覆盖复杂2D+3D+原生/小游戏导出 | **Three.js** web3D Cocos 重复不选**Phaser 3 全栈** 2D导出弱否决**LayaAir** MCP 生态清单无快手否决**Unity**AI 适配差启动重否决 | Cocos web 包体较重(MB级)→Tier2/3 不进游戏流走渠道/App 分发~~Tier1 仍自研薄壳保首屏~~2026-06-11 回填Tier1 改成品轻引擎+Runner v2 §1.1 |
| **多渠道导出** | **以"微信小游戏格式包"为统一中转**Tier2/3 用 Cocos 官方一键导出Tier1 自研 Canvas 自做 adapter | 快手无专用导出接口,标准路径=导出微信包→快手开发者工具"微信格式兼容转换";抖音有自有导出接口;导出可异步离线、不影响实时预览 | LayaAir 官方平台清单无快手,不走 LayaAir CLI 路线 | DevTool import 仍需真机验证;三平台各自真机 |
| **AI 素材工具链** | 图片/角色/场景/封面→ComfyUI自部署音乐/音效→Stability Audio API语音/音色→Fish Audio / 阿里 CosyVoice | ComfyUI 节点化、可训 IP 风格 LoRA 出系列一致素材、可被 Dify 编排、自部署无审查/无限频、长期成本低于商用 APIStability Audio 版权清晰全授权训练数据Fish/CosyVoice 中文效果最佳、支持 few-shot 音色克隆 | 直接调 **Midjourney/DALL-E API**:无法训风格 LoRA、游戏场景武器/战斗)易被拒、按次付费贵 | ComfyUI 需 GPU无 GPU 走 CPU 慢 10x 或 mock/外部 API |
| **内容安全** | 图片→safe-content-ai自部署快检+ 阿里云内容安全(高风险兜底确认);文本/音频→阿里云审核 APIAI 输出→Dify Guardrails 节点 | 自部署做首道快检(免费/低延迟高风险样本二次送阿里云确认阿里云违禁词库持续更新、语义强于规则Dify 节点内做 Prompt 注入检测 + 输出 schema 校验 | 单一商用 API成本高且首道检测延迟大 | 双层链路一致性需治理阈值block 0.7 / review 0.4)须在 Nacos 调优 |
@ -34,11 +35,11 @@
| 层 | 定位 | 选型 | 生成路径 | 状态 |
|---|---|---|---|---|
| **Tier1 极轻量H5/2D** | 游戏流即点即玩,首屏 P75<3s | **自研轻量 Canvas Runtime(<15KB)** + iframe 沙箱 + SDK 注入 | ~~OpenGame 文生代码~~ **模板驱动C2 裁定 2026-06-10 回填**LLM 填参 + 固定模板 runtime | 锁定自研壳=护城河,**MVP 唯一交付层**OpenGame 代码生成降级远期增强 |
| **Tier1 极轻量H5/2D** | 游戏流即点即玩,首屏 P75<3s + 点卡可玩 S2常态2s | ~~自研轻量 Canvas Runtime(<15KB)~~ **成品轻引擎 + Runner v22026-06-11 二次质疑裁定回填)**引擎 URL 化交付享 HTTP+编译双缓存B1 入场券 gz350KB/raw1.5MB**终裁待 LittleJS vs Phaser spike**iframe 沙箱 + SDK 注入不变 | **模板驱动C2 裁定**LLM 填参 + 固定模板模板改为 Runner 内置模块 | 🔄 重设计中**MVP 唯一交付层**。真护城河=沙箱/SDK/契约/三容器(全保留),渲染壳非护城河;存量 1.x 双轨冻结 |
| **Tier2 复杂2D+3D** | 中重度含 3D渠道分发 | **Cocos Creator 3.8.8 + MCP**(备选 PlayCanvas | **Cocos-MCP** agentic 工具编排studio 编排) | ✅ 锁定。MCP 158 工具可 AI 驱动MVP 至多 1 个探针 demo |
| **Tier3 独立App** | 打包为原生应用 | **Cocos 原生导出**(同 Tier2 引擎) | 同 Tier2 + 打包 | ✅ 锁定引擎。否决 UnityAI 适配差、启动重MVP 后投入 |
**自研工期评估(为什么 Tier2/3 复用 Cocos 而非自研)**Tier1 薄壳约 0.51.5 人月(可行,且必须自研以控沙箱/SDK/三容器预加载);自研 3D 引擎数十人月~数年、自研原生框架数十人月——3 周窗口下绝不可行,必须复用成熟引擎。选 Cocos 因其一栈覆盖复杂2D+3D+原生/小游戏导出,且 MCP(158工具)使 AI 驱动可行(与"开源组合替代烧钱自研"总原则一致)。
**自研工期评估(为什么 Tier2/3 复用 Cocos 而非自研)**Tier1 薄壳约 0.51.5 人月(可行,且必须自研以控沙箱/SDK/三容器预加载);自研 3D 引擎数十人月~数年、自研原生框架数十人月——3 周窗口下绝不可行,必须复用成熟引擎。选 Cocos 因其一栈覆盖复杂2D+3D+原生/小游戏导出,且 MCP(158工具)使 AI 驱动可行(与"开源组合替代烧钱自研"总原则一致)。**2026-06-11 回填:「必须自研以控沙箱/SDK」已被推翻——控制点在沙箱/SDK/契约层与渲染引擎解耦Tier1 渲染层亦改复用成品轻引擎,自研壳退役,见 §1.1 表)**
**导出枢纽 = 微信小游戏格式包**:微信=引擎导出官方格式;抖音=自有导出接口;**快手=无专用接口,走"微信格式兼容转换"**(快手开发者工具)。**LayaAir 官方平台清单无快手**,不走 LayaAir CLI 路线。Tier2/3 用 Cocos 官方一键导出微信包Tier1 自研 Canvas 自做 adapter。
@ -73,7 +74,7 @@
| 口径点 | 权威结论 |
|---|---|
| **运行时技术栈** | Tier1=自研<15KB Canvas+OpenGameTier2/3=Cocos Creator 3.8.8+MCP §1.1)。Three.js/Phaser3/LayaAir/Unity 均否决 |
| **运行时技术栈** | Tier1=成品轻引擎+Runner v22026-06-11 回填:原自研<15KB 壳退役存量 1.x 冻结终裁待 LittleJS vs Phaser spikeTier2/3=Cocos Creator 3.8.8+MCP §1.1)。Three.js/LayaAir/Unity 仍否决**Phaser 的旧否决仅针对全栈通吃语境不约束 Tier1 单层竞标** |
| **生成成功率指标** | MVP 验收按 **≥80%** 判定;**≥85%** 为远期蓝图目标,勿用 85% 卡 MVP |
| **时间线** | 双路线并存:投资人版 5 人/11 周、执行 spec 10 人/3 周;执行排期以 mvp-execution-spec 为准(含逐日计划与里程碑) |
| **MVP 范围/口径** | MVP 验收以 Doc A 的 **55 项 P0 产品功能**为准;技术实现范围经 Doc C 反查 Doc B工作量 ≈137 技术项)。详见 [`mvp-scope-and-milestones.md`](./mvp-scope-and-milestones.md) §3 |

View File

@ -2,6 +2,7 @@
> 蒸馏来源:`docs/agent-specs/2026-06-10-Mc模板波-execution.md`HJ-MC-TPL-EXEC-001 §3§9 全链)+ M-c 批① merge 模板实战收口2026-06-10五级验收门全过构建/体积/契约门+真玩五AND双模板+Golden v1.1.2 PASS+校准批 accept 10/10+金丝雀10条入feed途中逮修三真缺陷见各节红框
> 适用:给「模板驱动生成 + agent 闭环 QA」生产链**新增一个可玩玩法模板**merge/idle/tycoon 类纯 Canvas Tier1 玩法覆盖契约→prompt→runtime→后端→编排器→五级验收门全链。**批② idle/tycoon 直接套用本配方,压批② 成本。**
> **⚠️ 状态2026-06-11**:本配方描述 **1.x 现行链路**runtime 单工厂 switch + toString 注入 + 15KB 体积门。Tier1 重设计已立项15KB 红线废除、约束改三层框架(见 `docs/brainstorms/2026-06-11-tier1-runtime-constraints-requirements.md`Runner v2 收口波将改写步骤三/体积门1.x 双轨冻结期内本配方对存量模板仍有效。
> 配套:新增后端业务模块(非玩法模板)见 [`./add-business-module.md`](./add-business-module.md);生成链路现实态见 [`./ai-generation-pipeline.md`](./ai-generation-pipeline.md) ⓪ 节;契约先行见 [`./contract-first-development.md`](./contract-first-development.md);运行时/SDK 见 [`./runtime-and-multichannel.md`](./runtime-and-multichannel.md)Prompt 治理见 [`./prompt-governance.md`](./prompt-governance.md);可靠性红线见 [`../rules/security-and-reliability.md`](../rules/security-and-reliability.md)。
---

View File

@ -3,6 +3,7 @@
> 蒸馏来源:`docs/architecture/系统概要设计-技术决策版.md`§3.4 Game SDK / §4.2 运行时三容器 / §6.6 运行时与导出选型)、`docs/architecture/技术架构与模块.md`runtime 模块 T-RT-* 技术功能)、`docs/architecture/系统概要设计-开发团队版.md`§2 模块地图 / §10.4 LayaAir CLI
> 适用:开发/调试 runtime 模块、WanxiangGameSDK、多渠道微信/抖音/快手)小游戏导出。
> 配套SDK 降级铁律与沙箱安全红线见 [`../rules/security-and-reliability.md`](../rules/security-and-reliability.md);工程规范见 [`../rules/engineering-conventions.md`](../rules/engineering-conventions.md);架构全景见 [`../knowledge/product-and-architecture.md`](../knowledge/product-and-architecture.md);上游生成见 [`./ai-generation-pipeline.md`](./ai-generation-pipeline.md);契约见 [`./contract-first-development.md`](./contract-first-development.md)。
> **⚠️ 状态2026-06-11**:本手册「自研 Canvas Runtime(<15KB)」相关段落为 **1.x 现行口径**Tier1 重设计已立项15KB 红线废除改三层约束框架 `docs/brainstorms/2026-06-11-tier1-runtime-constraints-requirements.md`渲染层将换成品轻引擎+Runner v2终裁待 spike沙箱/SDK/三容器章节不受影响Runner v2 收口波改写本手册
---

View File

@ -0,0 +1,222 @@
# Tier1 运行时重设计 · 评审版HJ-T1-REDESIGN-001
> **状态v1.1(四路尽调回填 + 约束框架定稿落账)→ 待创始人 §9 三项拍板。**
> **约束框架单一事实源**`docs/brainstorms/2026-06-11-tier1-runtime-constraints-requirements.md`2026-06-11 创始人拍板15KB 红线废除 → SLO 地板@千元机+4G P75 / 预算入场券 / 工程增强层三层框架)。
> 本文件产自「Tier1 栈由创始人亲自设计的专门会话」2026-06-11 拍板,见记忆 `tiered-engine-cocos-decision`)。主会话已完成诊断+给候选;本会话职责 = 设计 + 创始人裁决。
> 日期2026-06-11 分支:`dev/2.0.0` 上游:`.agents/knowledge/tech-decisions.md` §1.1(裁决后须回填)
---
## 0. 一页结论(给拍板人)
1. **为什么重设计**:「好玩」要求暴露自研 Canvas 壳实为「机制演示」。五条代码铁证见 §1。根因是结构性的——`toString()` 注入模型**禁止一切依赖**,导致 juice 能力(粒子/音效/缓动/失败态)只能逐模板手搓,「好玩工时」随模板数线性爆炸。创始人已判「手搓引擎 = critical risk」。
2. **重设计 = 三件事的捆绑**,缺一不可:
- **D1 引擎置换**:自研壳 → 成品轻量引擎(候选 LittleJS / KAPLAY / Phaser§4.1
- **D2 加载面换代**`srcdoc + toString()` 内联 → **构建版 Runner 页**iframe src URL + HTTP 强缓存)。这是任何成品引擎「进得来」的前提——现行 CSP `script-src 'unsafe-inline'` 外部脚本根本进不来§4.2
- **D4 好玩基线**:失败态 + juice 清单 + 难度曲线进模板验收门。只换引擎不改玩法 = 白换§4.4)。
3. **不变的承重墙**(创始人已拍板,本设计严格遵守):`GamePackage` / SDK / `iframe` 沙箱 / 生命周期(`game_loaded/start/end`)契约不动;**生成模型不变**(深模板人工/agent 建 + LLM 填主题/数值/文案参Cocos 仍只 Tier2/3引擎是契约下可换的实现细节。
4. **迁移零风险路径**:契约里现成的 `manifest.runtimeVersion`semver就是迁移缝——存量 50 款 1.x 包走冻结的 legacy 路径,新包走 2.0 Runner回滚 = 生成默认切回 1.x§4.6)。
5. **推荐引擎裁决**(四路尽调已收口,证据见 §4.1**KAPLAY 纸面淘汰、「自研+微库」路线淘汰、候选集查漏确认无遗珠LittleJS 为默认领跑(硬约束全过:无 eval/程序化音效零网络/55KB gz/Canvas2D 自动降级Phaser 为对照juice 工具链与训练语料碾压,但 1.35MB+unsafe-eval+destroy 泄漏三座山)**。建议 top-2 eval-spike 实测定终裁§5。约束框架定稿后的语义更新**B1 入场券gz≤350KB/raw≤1.5MB双引擎皆过门——Phaser 免预裁剪获入场资格tree-shake 降为优化手段;生死改判于参考机 S2 实测(关键题=编译缓存真实表现)**。
6. **待拍板 3 项**见 §9。
---
## 1. 背景与诊断:自研壳为什么到头了
### 1.1 五条代码铁证(`game-studio/src/host/runtime/index.ts`843 行,亲读核实)
| # | 事实 | 证据位置 |
|---|---|---|
| 1 | 四模板clicker/merge/idle/tycoon全部内联在单个 `startRuntime` 函数体内 | `index.ts:53-843` |
| 2 | 渲染 = 纯 `fillText` + `fillRect` + hsl 色块;**全文无一处 `drawImage`**——assets 预加载后从不绘制 | `loadAssets` 只计数(`:127-156`),无消费者 |
| 3 | 零 juice无粒子、无缓动、无音效、无屏震、无精灵动画 | 全文 |
| 4 | 只胜不败:四模板全部「数到 N 即 `finish(completed:true)`」,无失败态、无难度曲线 | `:252,:414,:530,:711` |
| 5 | `toString()` 注入禁依赖 → 工具函数(`clampInt`/`localXY`/`inRect`)被迫**逐模板复制粘贴**(注释明令「严禁提升到共享作用域」) | `:443-457,:650-664` |
### 1.2 结构性根因(不是写得差,是模型到头了)
`inject.ts``Function.prototype.toString()` 把 SDK 工厂 + Runtime 工厂序列化成文本拼进 iframe `srcdoc` 内联脚本。这个骨架期的聪明 hack 换来「零打包配置」,但代价如今全部到期:
- **禁止任何 npm 依赖**进 runtime → 粒子/缓动/音效全部只能手搓;
- 函数体必须自包含 → 跨模板复用靠复制粘贴×N 漂移靠纪律硬顶;
- CSP `script-src 'unsafe-inline'``connect-src 'none'` → 外部引擎脚本进不来、音频资源载不进;
- 「好玩工时」逐模板线性增长,且每一分都花在重造 40 年前就成熟的轮子上。
> 反向佐证:蓝图(技术决策版 §4.2)的 CSP 本来就是 `script-src 'self'`——同源加载构建版引擎 bundle 恰好是蓝图设计,现行 `unsafe-inline` 才是骨架期的临时偏离。
### 1.3 与既有裁决的关系
- 一次/二次裁决「Tier1 自研壳=护城河」的真实护城河成分是**沙箱 + SDK + 三容器 + 契约**,不是渲染循环本身——这些全部保留。
- 旧 ADR 曾否决「Phaser 3 全栈」,否决语境是「全 Tier 通吃 + 导出弱」;本次 Phaser 仅竞标 Tier1 单层,不受旧否决约束(导出枢纽仍按既有裁决走微信格式包 adapter
---
## 2. 目标 / 非目标
**目标**
1. 新模板「好玩工时」数量级下降juice粒子/缓动/音效/屏震/精灵)成为引擎自带能力,模板代码只写玩法;
2. 建立「好玩基线」并进五级验收门失败态、难度曲线、juice 清单§4.4;
3. 全契约零破坏GamePackage / SDK / 生命周期 / postMessage 信封 / storage 通道原样;
4. 首屏不退步P75 < 3s 红线不动新增点卡可玩S2 常态2s/全新设备首次3.5s约束框架 R2
5. 存量 50 款内容池零影响(双轨迁移)。
**非目标**
- 不动生成模型(不做 LLM 直出代码;深模板仍由人/agent 编写、LLM 填参);
- 不动 Tier2/3Cocos 定位不变)、不做 3D
- 不动发布链 / feed / 鉴权 / 遥测后端(`game_end` 仅 additive 加字段,见 §4.4
- 不在本波做多渠道导出 adapter 真实化(仍按既有 backlog 排);
- 不动 SDK Core<8KB 约束与实现不变SDK 与引擎解耦正是契约的意义
---
## 3. 设计总图
```mermaid
flowchart LR
subgraph 生成侧["生成侧(不变)"]
LLM["LLM 填参<br/>(designer prompt)"] --> GC["GameConfig<br/>(模板 schema 约束)"]
GC --> GP["GamePackage v2<br/>manifest.runtimeVersion=2.x"]
end
subgraph 宿主["game-studio 宿主GamePlayer.vue 不换)"]
BR["postMessage 桥<br/>origin+schema 双校验(不变)"]
end
subgraph Runner["Runner v2构建版 iframe 页HTTP 强缓存)"]
ENG["成品引擎<br/>D1 裁决)"]
TPL["深模板模块 ×N<br/>(与引擎同 bundle 同版本)"]
SDKi["WanxiangGameSDK<br/>(契约 #3,不变)"]
end
GP -- "init 下发postMessage" --> Runner
宿主 <-- "生命周期/遥测/storage/ad/pay信封不变" --> Runner
GP -.-> LEG["Legacy 路径(冻结)<br/>runtimeVersion=1.x<br/>srcdoc+toString 原样"]
```
**一句话**:宿主与契约一行不动;变的是 iframe 里面那张纸——从「每局现拼的内联脚本」换成「一张构建好、强缓存、带引擎和全部深模板的 Runner 页」GamePackage 改由 postMessage `init` 下发contract.ts 里 `init` 通道现成)。
---
## 4. 关键决策
### 4.1 D1 · 引擎选型四路尽调已收口2026-06-11全部一手证据官方 repo 源码/npm registry/issue/HN
**硬约束对比表**(我们场景的一票项在前):
| 维度(硬约束在前) | LittleJS v1.18.19 | Phaser 4.1.0 / 3.90 | KAPLAY v3001 |
|---|---|---|---|
| CSP 无 eval沙箱红线 | ✅ 源码实证无 eval/`new Function` | ⚠️ v3 确证需 `unsafe-eval`(单点 polyfill 可 patchv4 未验证) | ❓ 未验证 |
| 音效在 `connect-src 'none'` 下可用 | ✅✅ ZzFX/ZzFXM 程序化合成,零网络零资产 | ⚠️ WebAudio 播 sample 需载资源CSP 要开口) | ❌ 仅 sample 播放,无程序化 |
| 体积(引擎=强缓存宿主资产) | min 175.7KB raw / **≈55-60KB gz** | 全量 1.35MB raw / ≈345KB gztree-shake 到 gz<150KB **未实证** | 未取到数字npm/bundlephobia 被拦 |
| 低端 WebView 兜底 | ✅ WebGL2 不支持自动降级 Canvas2D源码实证 | ⚠️ 有 Canvas 渲染器,但 1.35MB 低端机解析 ~1-1.3s + 多 tween 卡顿 issue | ❓ 移动端实测空白 + 2 个已知 Safari bug加载失败/文字裁切,直击微信内核) |
| CJK 中文 | ✅ `fillText` 系统字体路径(源码实证),缺真机案例需走查 | ✅ Text=canvas fillText→纹理高频变更有重传成本数字用 BitmapText | ❓ 零官方背书,内部管线未明 |
| juice 工具链 | 粒子(含编辑器)/ZzFX/屏震/后处理 shader/街机物理全内置;**缺 Tween 管理器**(有缓动数学,需自封薄层,一次性成本) | ★ 全维度最成熟(粒子/Tween Chains/摄像机特效/双物理) | 齐全但成色未经移动端验证 |
| 可生成性agent 写深模板) | 中上:文档好+单文件百行级示例对 agent 友好;语料少于 Phaser | ✅✅ 语料碾压39.8k★/700+教程),**Phaser 官方亲出 Claude Code 教程2026-02**;注意语料是 v3、v4 刚出 2 个月 | ⚠️ 语料多为 Kaboom 旧 API好在 API 近零破坏可沿用);**官方"LLM friendly/llms.txt"经核验不成立404——纠偏候选预设** |
| 生命周期feed 滑走销毁) | 无 destroy——被我们「一游戏一 iframe、滑走即卸载」契约天然规避但**严禁同 iframe 内重启** | destroy() 不自净是多年已知泄漏(#2138/#5456)——同样靠 iframe 卸载兜底 | ❓ 未验证 |
| 维护健康度 | 单人 bus factorFrank Force但近一月 8 连发极活跃;单文件 MITfork 自持成本极低 | ✅ Phaser Studio 公司化($2M39.8k★issue 仅 101 | ❌ 3 人团队 + $5/月捐赠档v4000 滑期 ≥5 季度 |
| 尽调评分 | **8.0 / 10** | **8.0 / 10** | 6.5 / 10 |
**裁决建议**
1. **KAPLAY 纸面淘汰**:三重盲区(移动+中文+微信零先例)+ 2 个 Safari bug + 可持续性最弱 + 程序化音效缺失,且"LLM friendly"预设被证伪——没有任何维度赢过另两家。
2. **「自研+微库」路线淘汰**查漏报告关键论断ZzFX/tween.js/手写屏震各自成熟,但这条路的形态终点**就是亲手再造一个 LittleJS**——除 CJK本来就不输外零独占收益,还把粒子/缓动/生命周期的维护永久揽上身。创始人「手搓引擎=critical risk」的判断被外部证据反向确认。
3. **查漏确认候选集无遗珠**Pixi(渲染器非引擎,CJK 丢最快路径)/melonJS/Excalibur/Kontra/Litecanvas(alpha+零语料)/Defold(MB 级)逐一排除;「为 LLM 设计的开源 2D 引擎」生态位当前为空。
4. **终裁在 LittleJS默认与 Phaser对照之间**,本质是一道权衡题:**平台硬约束契合LittleJS无 eval/零网络音效/55KB/自动降级) vs 工具链成熟+语料优势Phaser**。LittleJS 仅剩的两处实证空白CJK 真机、agent 写模板的实际摩擦)与 Phaser 的三座山unsafe-eval patch 可行性、tree-shake 实测、低端机解析)恰好都是 spike 一次测清的事。
### 4.2 D2 · 加载面换代srcdoc+toString → 构建版 Runner 页(推荐,随 D1 必做)
- **Runner = Vite 构建的独立入口**(如 `/runner/2.0.0/index.html`),内含:引擎 + 全部深模板模块 + SDK + 引导。iframe `src` 指向它(带版本号路径 → 强缓存/immutable**引擎只在首次冷加载付一次代价,之后全游戏共享缓存**——这正是创始人「缓存抹平体积」拍板的工程形态。
- **引擎 URL 化交付是铁律**(约束框架 KD4URL 脚本同时享 HTTP 缓存与 Chromium 编译缓存v8.dev 文档化行为srcdoc 内联两者皆无——旧架构不光挡引擎进场还白白放弃两层免费缓存。feed 浏览期预热 Runner下载+编译双热)。工程增强层 E1/E2/E4/E6预热管线/首帧保障/模板共享资产入 Runner/brotli+WebP落在 Runner 设计内,详见约束框架 R11-R16。
- GamePackage 不再内联进 srcdoc改走现成的 `init` postMessage 通道下发(契约 #3 已定义,零新协议)。
- 沙箱姿态不变:`sandbox="allow-scripts allow-same-origin"` + origin/schema 双校验照旧CSP 收敛到蓝图形态 `script-src 'self'; connect-src 'none'`(比现行 `unsafe-inline` 更紧,安全是**加强**不是放松)。
- **音效走程序化合成**ZzFX 类,零网络),`connect-src 'none'` 不必放开;采样音频留待后续单独评(需动 media-src标记为契约邻接变更本波不做
- 三容器预加载护栏N±1 容器只预取 manifest+assets**不起活引擎实例**WebGL context 与内存 ×3 是低端机雷区),当前容器独占活实例。
### 4.3 D3 · 模板架构:深模板 = Runner 内置代码模块
- 模板实现与引擎同 bundle、同版本、同验收彻底告别「函数体内自包含+复制粘贴」范式);
- `GameConfig` 仍是纯数据schema 约束 + 后端校验 + runtime 钳制三层不变LLM 职责零变化;
- `add-game-template` 七步配方保留骨架步骤三从「switch 加分支+体积门」改写为「新增模板模块+Runner 构建门」(配方升版随执行波蒸馏)。
### 4.4 D4 · 好玩基线(重设计的目的,建议与 D1 捆绑交付)
1. **juice 底线清单**(新模板验收新增门):交互必有即时反馈(缓动/粒子任一)+ 关键节点音效(程序化)+ 通关/失败演出 ≥1 处 + 屏震或等价强反馈 ≥1 处;
2. **失败态**:模板必须有「会输」的路径(超时/失误/资源破产任一),难度参数进 GameConfig 由 LLM 填;
3. **契约影响additivesemver 安全)**`game_end` 的 data 增加 `outcome: 'win'|'lose'``completed` 语义微调为「到达终局态」(赢或输都算 completed弃玩才是 false——**quality_score 完玩率口径因此保持有效**无需动后端公式。此项动数据口径列为待拍板§9-Q2
4. 存量四模板在新栈重做时同步补好玩基线(每模板一次五级验收门重走)。
### 4.5 D5 · QA 探针承重接口:隐性公式 parity → 显式只读布局契约
现状merge/tycoon 的布局/按钮坐标公式要求 runtime 与 `player_cdp.py` **逐字符对齐**(隐性承重接口,收口靠人肉比对)。新栈下改为:**Runner 按模板暴露只读「取证几何清单」**(确定性布局数据,挂只读全局或 postMessage 查询player 按清单驱动**真实输入事件**。取证纪律不变(真实事件、禁篡改内部状态),但承重接口从「散文公式 parity」升级为「显式契约」。
### 4.6 D6 · 迁移与回滚runtimeVersion 双轨
```mermaid
flowchart TD
A[GamePlayer 取包] --> B{manifest.runtimeVersion}
B -- "1.x存量 50 款)" --> C["Legacy 路径srcdoc+toString 原样冻结<br/>只修 P0不再演进"]
B -- "2.x新生成" --> D["Runner v2引擎+深模板"]
```
- 阶段①Runner v2 + 首个模板(建议 spike 的「落物 action」直接转正§9-Q4五级验收门全过 → 金丝雀入 feed
- 阶段②:四存量模板在新栈重做+好玩基线,逐模板过门;
- 阶段③:生成默认切 2.x1.x 冻结只读;存量包**不迁移**(零风险,自然汰换);
- **回滚**:任一阶段生成默认切回 1.x 即回滚legacy 路径全程在位feed/发布链对 runtimeVersion 无感。
---
## 5. eval-spike 设计top-2LittleJS vs Phaser建议方案
- **题目**:同一款「落物 action」接住坠落物得分、漏接扣命、速度随时间爬升——天然带失败态与难度曲线正好检验好玩基线
- **双引擎各搭一遍**,统一跑在 **Runner v2 雏形**里iframe 沙箱+SDK 真接不做编排器接入——spike 同时就是 Runner 底座 bring-up不是丢弃式工程。
- **评分卡**(满分 100好玩工时 30达到 juice 底线清单的 agent 轮次/耗时LittleJS 需自封 tween 薄层的成本计入)、可生成性 25agent 首轮代码正确率+API 踩坑数;两边都喂官方示例,对齐 Phaser 官方 Claude 教程的「给 working example」方法论、**S2 实测 20**(参考机画像 CDP 节流下首开/二开/稳态三档「点卡→可玩」耗时——B1 入场券双双过门后,**S2 是主考**,约束框架 KD3Phaser tree-shake 从入场前提降为优化手段)、沙箱适配 15**Phaser v4 unsafe-eval 现状 grep 实证** + 严格 CSP 下双引擎实跑 + 中文文案真机/微信 WebView 走查 + 三容器护栏)、维护健康度 10已有研究数据直接计分
- **定向钉子**研究报告点名必须实测的空白spike 内逐项打掉):① Phaser v4 dist 是否仍含 `new Function`grep 即可);② Phaser 裁剪后 gz 实数;③ LittleJS 中文文案在低端 Android/微信 WebView 的真机渲染;④ 双引擎在 `script-src 'self'; connect-src 'none'` 严格 CSP 下零违规跑通;⑤ **编译缓存真实表现**XWeb/低端 WebView 上 Runner 脚本首开/二开/三开的 parse 耗时曲线code cache 是否生效——大引擎稳态成本的生死题,约束框架 A2
- **产出**:实测计分表 + 裁决建议 → 创始人终裁;**获胜实现直接转正为模板五**spike 钱花两次用)。
- **预算**:每引擎 1 个执行 agentopus 档)+ 主会话验证门mini-desktop 构建/走查,预计 1~2 天等效(双引擎并行)。
---
## 6. 爆炸半径与兼容
| 面 | 影响 | 处置 |
|---|---|---|
| `contracts/`8 契约) | **零破坏**`game_end` data 加 `outcome`additiveGamePackage/SDK/信封/storage 原样 | 契约先行流程走一遍,通知面小 |
| game-studio 宿主 | GamePlayer.vue 加 runtimeVersion 分流 + Runner 入口构建bridge/双校验不动 | 中等,单仓内 |
| 后端 game-cloud | **零改**(模板白名单/schema 校验/quality 公式不动;`runtime 真实编译打包` backlog 顺势按 v2 产物形态实现,反而少走弯路) | 排期受益 |
| 编排器 player_cdp | 每模板取证策略随新栈重写D5 显式几何契约后更稳) | 逐模板随执行波 |
| `.agents` 配方 | add-game-template 步骤三/体积门改写runtime-and-multichannel、tech-decisions §1.1 回填 | 收口铁律内 |
| 存量内容池 50 款 | 零影响1.x 冻结路径) | 双轨保障 |
| 体积门 | 「runtime<15KB红线**废除**按约束框架三层重建B1 引擎入场券 gz350KB raw1.5MB2026-06-11 创始人拍板放宽档+ S2 实测主考常态2s/首次3.5s+ R7/R8 游戏包门首批 1MB/ 10MB/config 32KB | 已定稿brainstorm requirements |
## 7. 风险(按严重度)
1. **引擎选错的纠错成本**(中高):深模板代码与引擎强耦合,换引擎=重写全部模板 → 用 spike 实测+双轨缓释;契约层保证宿主/后端/生成侧零返工。
2. **低端 WebView 实测不达**WebGL 兼容/内存——spike 评分卡含真机维度;引擎若 WebGL-only 需确认 Canvas2D 回退。
3. **好玩基线推高生成失败率**(中):难度参数进 GameConfig 后 LLM 填参违例面变大 → schema 钳制+runtime 兜底纵深照旧,校准批先行。
4. **completed 语义微调的数据连锁**低中outcome 字段 additive但 BI/报表若有硬编码读法需 grep 一遍 → 执行波清单项。
5. **双轨期维护两套 runtime**1.x 冻结只修 P0演进全在 2.x冻结纪律入 rules。
## 8. 验收标准(重设计整体收口线)
1. Runner v2 + 获选引擎:构建门绿 + 首载预算达标 + 三容器护栏实测;
2. 模板五(落物 action五级验收门全过 + **好玩基线门全过** + 金丝雀入 feed 真人实玩;
3. 存量四模板新栈重做:逐模板五门+好玩门clicker 回归与 1.x 行为对照留档;
4. 生成默认切 2.x连续一个校准批 accept ≥80% 量级不回退;
5. 契约 grep生命周期/信封/storage 零破坏证据 + `outcome` 字段三端runtime/宿主/遥测)一致;
6. 蒸馏回填tech-decisions §1.1 / add-game-template / runtime-and-multichannel / 总账+作战清单(按 wave-close-checklist 七步)。
## 9. 待拍板项
| # | 问题 | 选项 | 我的倾向 |
|---|---|---|---|
| Q1 | 引擎裁决方式 | (a) 直接拍 LittleJS研究已足够一边倒/ (b) **top-2 spikeLittleJS vs Phaser实测终裁** / (c) 三款全 spike | **(b)**——KAPLAY/自研+微库纸面淘汰已稳LittleJS 两处实证空白CJK 真机/agent 摩擦)与 Phaser 两座山unsafe-eval/编译缓存下的 S2 稳态只有实测能定tree-shake 已随 B1 放宽档降为优化手段),且 spike 顺产 Runner 底座+模板五,不是纯评测成本 |
| Q2 | 好玩基线是否本波捆绑(含失败态+`outcome` 字段+completed 语义微调) | 捆绑 / 只换引擎先行 | **捆绑**——不捆绑则重设计只剩搬家,「好玩」无验收抓手 |
| Q3 | 队列位置 | 插队成当前主线 / 与链路③⑤走查、W4 埋点并行 / M4 变现先行 | 创始人定(作战清单本轮完成线本就待重锁);注意 Tier1 重设计预计 2~4 个执行波,是大动脉手术 |
(原 Q4「spike 产物转正」并入 §5 设计默认:转正为模板五,不另问。)
## 10. 演进路径(拍板后的波次切分预估)
1. **W-T1a**若拍eval-spike → 引擎终裁 + 本 spec 定稿 + execution spec双 spec 铁律);
2. **W-T1b**Runner v2 底座 + 模板五转正 + D5 取证契约 + 五门收口;
3. **W-T1c**:存量四模板新栈重做 ×4可两批并行复用 add-game-template 升版配方);
4. **W-T1d**:生成默认切 2.x + 1.x 冻结 + 全链收口蒸馏。

View File

@ -67,7 +67,7 @@
|---|---|
| IP 专属定向微调垂类模型 | "通用 LLM 做底座,为每个 IP 训练**画风 LoRA**ComfyUI/Flux/SDXL保证系列一致。**没有自训垂类大模型。**" |
| 四层画风锁风校验算法 | "风格指纹嵌入比对 + 阈值门 + 三档人审(标准/严格/人工)。**不是高深算法**,是让非独家 IP 能安全规模化使用的工程 + 合规流程。" |
| 轻量化 H5 游戏引擎 | "自研 <15KB Canvas 薄壳 + iframe 沙箱 + SDK 注入 P75<3s 首屏与平台控制点复杂 2D/3D Cocos**自研引擎**" |
| 轻量化 H5 游戏引擎 | "轻量 H5 运行时——自研的是**宿主控制层**Runner + iframe 沙箱 + SDK 注入),渲染引擎层用成熟开源轻引擎(可替换),保 P75<3s 首屏与平台控制点复杂 2D/3D Cocos**自研引擎**" |
| 全域一键分发调度系统 | "以微信小游戏格式包为枢纽的多渠道转换 + 渠道适配规则库 + 发布状态机。**快手经格式转换 + 真机验证,不是全自动。**" |
| AI + 人工双层风控 | "机审(自部署快检 + 阿里云内容安全 + Dify Guardrails+ 人审队列BPM。行业合规标配我们做扎实了。" |
| 流量双轨推荐算法 | "MVP 是**规则线性加权打分** + 授权IP/UGC 双区分区运营;千人千面 ML 是数据积累后的增长期演进。" |
@ -82,7 +82,7 @@
| "双轨推荐算法" | "规则推荐 + 授权IP/UGC 双区运营ML 为后续演进" |
### B3. 自研边界(清楚地讲"自研什么、不自研什么"
- **自研(必须自掌——控制点 + 数据入口)**runtime 薄壳 + iframe 沙箱 + SDK 注入、feed 推荐、telemetry 数据底座、变现链路(钱包/分账/广告位)。
- **自研(必须自掌——控制点 + 数据入口)**运行时宿主层Runner + iframe 沙箱 + SDK 注入;渲染引擎为可替换的开源轻引擎,不自研)、feed 推荐、telemetry 数据底座、变现链路(钱包/分账/广告位)。
- **不自研(省 6-12 月 + 千万级,且可替换无锁定)**:大模型、生成 AgentOpenGame、编排Dify、后台Yudao、素材生成ComfyUI、内容安全阿里云、复杂引擎Cocos远期
### B4. CTO 会戳的三个点 + 怎么答
@ -91,7 +91,7 @@
|---|---|
| "这六项不就是 Dify+ComfyUI+Yudao+阿里云拼的吗?" | "对,而且是刻意的。自研这些要 6-12 月烧千万,我们 4-6 周集成,省下的全投在竞品没有的 feed/变现/SDK 上。自研边界很清楚(见 B3。" |
| "锁风是什么高深算法?" | "不是。嵌入比对 + 阈值 + 人审。我们不声称算法领先——它解决的是工程和合规问题:让非独家 IP 安全规模化。价值在流程,不在算法。" |
| "<15KB runtime 有什么了不起" | "不了不起但它是平台控制点广告/支付在宿主侧注入游戏沙箱零网络权限决定了变现能否被平台掌控合规边界划在哪是工程选择不是炫技" |
| "轻量 runtime 有什么了不起?" | "运行时本身不了不起——渲染引擎我们直接用成熟开源轻引擎。了不起的是控制点:广告/支付在宿主侧注入、游戏沙箱零网络权限——决定了变现能否被平台掌控、合规边界划在哪。是工程选择,不是炫技。" |
### B5. 真实工程亮点CTO 尊重好工程,即使不是护城河)
- **13 模块高内聚低耦合 + 契约先行**Feign `-api` 包声明)+ 单 JAR 起步可平滑拆微服务。

View File

@ -13,6 +13,7 @@
> 1. **生成主线已转向「模板驱动」**C2 裁定 2026-06-09spike 52/52 结构层 100%LLM 直出 GameConfig 参数 + 固定模板 runtime经 new-api 网关直连 LLM**Dify / OpenGame 均未部署**OpenGame 代码生成降级为远期增强。本档 §2.3 模式A 时序图、§4.1、§6.2 的 Dify+OpenGame 描述保留为蓝图原案。
> 2. **执行排期以 `mvp-execution-spec` + `docs/mvp/MVP作战清单.md` 为准**§9 甘特仅作蓝图参考2026-06-08 业务决策已将 MVP 验收改为「staging/内网种子灰度走通真闭环」,公网上线=MVP 后并行长周期任务(受日历闸门约束)。
> 3. **LLM 接入现状**D1 拍板主 DeepSeek / 备 Qwen2026-06-08当前实际 = MiniMax-M2.7 经 new-api 网关DeepSeek key 未激活)。网关多通道兜底曾真实失效(二厂系全废),见 §8 风险 #12
> 4. **Tier1 运行时已立项重设计**2026-06-11 创始人专门会话):本档「自研 Canvas Runtime <15KB相关描述(§4.26.6 被裁定取代——**15KB 红线废除**srcdoc 内联架构的衍生约束前提失效改三层约束框架SLO@千元机+4G P75 / 预算入场券 gz350KB·raw1.5MB / 工程增强层渲染层换成品轻引擎+Runner v2终裁待 LittleJS vs Phaser spike沙箱/SDK/三容器控制点不变单一事实源`docs/brainstorms/2026-06-11-tier1-runtime-constraints-requirements.md` + `.agents/knowledge/tech-decisions.md` §1.1
---

View File

@ -0,0 +1,115 @@
---
date: 2026-06-11
topic: tier1-runtime-constraints
---
# Tier1 运行时约束框架(替代 15KB 单一红线)· Requirements
## Summary
用三层约束框架取代「runtime<15KB单一红线**SLO 地板**用户可感体验承诺锚定参考环境+ **分层预算入场券** SLO 反推的工程门禁+ **工程增强层**把体感从达标拉到短视频级)。框架管辖 Runner v2 设计引擎终裁S2 实测为主考与五级验收门改造
## Problem Frame
15KB 是 `srcdoc + toString()` 内联架构的衍生约束runtime 字节随每局游戏重复支付、无任何 HTTP 缓存,抠 KB 在当时是理性的。Tier1 重设计将引擎改为「带版本号 URL + immutable 强缓存」的平台资产(每设备每版本只付一次),前提失效,约束必须从产品体验重新推导。业界即玩生态的地板全部是 MB 级playable ads 单文件 ≤5MB 为最严基准;微信小游戏主包 4MB/总包 30MB15KB 仅为最严基准的 0.3%。低端机的真实瓶颈不是传输而是 **JS parse**(千元机 ≈1MB/s且编译缓存只对 URL 脚本生效)——这是约束框架必须显式管理的成本。
---
## Key Decisions创始人拍板2026-06-11
- **KD1 参考环境 = 主流下沿**:千元机 Android6GB RAM 档,弱尾 4GB 归 P95+ 微信内置 WebView + 4G有效 ~5MbpsP75 承诺、P95 优雅降级。无上线数据,此为产品假设,上线后用真实遥测校准。
- **KD2 引擎预算取放宽档**B1 硬门 gz≤350KB 且 raw≤1.5MB——预算不预判引擎赢家,全量 Phaser 亦获入场资格。
- **KD3 裁决语义 = 预算是入场券S2 实测是主考**:过 B1 不豁免 S2主考最关键一题是编译缓存在 XWeb/低端 WebView 的真实表现(决定大引擎稳态 parse 成本)。
- **KD4 引擎 URL 化交付铁律**URL 脚本同时享 HTTP 缓存与 Chromium 编译缓存,内联两者皆无;实例级引擎复用(常驻 runner 跨游戏复用实例)受制于候选引擎 destroy 卫生,不进本波。
- **KD5 工程增强层只收六条便宜高杠杆**E1-E6帧预算调速器、模板代码 code-split、实例级复用留 backlog——增强不等于镀金。
- **KD6 文档回填 A/B/C 分治**:活文档立即改 / 1.x 手册挂横幅随 Runner v2 收口波改写 / 历史快照不动15KB 按「前提失效→裁定取代」记档,不按「改错」记。
---
## Requirements
**SLO 层(产品地板,锚 KD1 参考环境P75 口径)**
- R1. (S1) feed 首屏 < 3s既有红线保留 Facebook Instant Games <5s 更严属合理自我加码
- R2. (S2) 点卡→可玩常态引擎已缓存≤2s全新设备首次 ≤3.5s。
- R3. (S3) 参考机 juice 全开稳定 ≥30fpsP95 设备走自动降级档,不承诺帧率。
- R4. (S4) `game_load_failed`<2%运行时 `game_error` OOM <0.5%。
- R5. SLO 用现有生命周期事件时间戳测量(`game_loaded`/`game_start`),与 W4 单位经济埋点波合流;上线后以真实设备分布校准 KD1。
**预算层(工程入场券,进 CI/验收门强制)**
- R6. (B1) 引擎 bundle硬门 gz≤350KB 且 raw≤1.5MBKD2/KD3过门≠过考
- R7. (B2) 每游戏首批可玩 payload ≤1MBwire游戏总资产 ≤10MB蓝图 §4.2 口径保留)。
- R8. (B3) GameConfig JSON ≤32KB。
- R9. (B4) 活跃游戏实例内存 ≤150MB同屏仅 1 个活引擎实例,三容器的 N±1 只预取字节、不实例化。
- R10. (B5) Runner 以带版本号 URL + immutable 缓存交付KD4feed 浏览期预热 Runner下载+编译双热);资产按 `manifest.preloadPolicy` 做 eager/lazy 切分(首批可玩 eager其余流式
**工程增强层体验上拉Runner v2 设计承诺,不入门禁)**
- R11. (E1) 预热管线:点卡→可玩体感目标 ~0.5-1s对齐短视频起播节奏。
- R12. (E2) 首帧保障:<300ms 绘出主题底色/标题GameConfig feed 清单先行可得加载等待感消失
- R13. (E3) 自适应质量分档首次会话探测设备能力定档存储P95 设备自动降粒子/关后处理/限 dpr——「P95 优雅降级」的机制化。
- R14. (E4) 模板级共享资产打进 Runner 享全局缓存GamePackage 只装主题专属资产(为 R7 瘦身)。
- R15. (E5) 音效优先程序化合成(参数仅数十字节,沙箱 `connect-src 'none'` 零开口);采样音频需 CSP 开口,默认不做。
- R16. (E6) 传输压榨brotli 优先于 gzip、图像 WebPmanifest 随 feed 下发省一次 RTT。
**治理层**
- R17. 验收门改造15KB 体积门废除Runner 构建门按 R6、游戏包门按 R7/R8、真机门按 R2/R3CDP 按参考机画像节流走查)。
- R18. 文档回填按 KD6 三类执行;对外话术中「<15KB措辞改为引擎无关表述平台控制点叙事不变
- R19. 平台规则记档为硬约束并在渠道导出时复核:微信主包 4MB/总包 30MB虚拟支付、抖音 4→30MB、快手主包 6MB、playable ads 单文件 ≤5MB——全候选引擎合规。
---
## Acceptance Examples
- AE1. **Covers R2, R10.** Given 用户已浏览 feed ≥3sRunner 预热完成When 点卡Then P75 ≤2s 可玩(体感目标 ~1s
- AE2. **Covers R2, R12.** Given 全新设备首次点卡零缓存When 打开游戏Then P75 ≤3.5s 可玩,且 <300ms 已有主题首帧画面
- AE3. **Covers R3, R13.** Given P95 低端设备4GB/弱 SoCWhen 试玩任一模板Then 降级档自动生效、无 OOM/白屏,帧率不承诺。
- AE4. **Covers R6, KD3.** Given 某引擎 gz=340KB 过 R6 入场When spike 在参考机实测 S2 常态 >2sThen 该引擎落选——预算过门不豁免 SLO 主考。
---
## Scope Boundaries
**Deferred for later**
- 实例级引擎复用(常驻 runner 跨游戏复用实例,省 init/WebGL 上下文)——候选引擎 destroy 卫生不达标S2 实测逼出来再上2.x
- 帧预算调速器(运行中按帧时动态降效果档)。
- 模板代码 code-split模板库到几十个时再做
- 采样音频的 CSP 开口media-src/blob
- 微信/抖音/快手小游戏导出适配(引擎进主包的打包方案)。
**Outside this scope**
- 引擎终裁与 eval-spike 本身——归 `docs/agent-specs/2026-06-11-Tier1运行时重设计-review.md` §5。
- 好玩基线内容(失败态/juice 清单/`outcome` 字段)——归重设计 spec §4.4,待拍板。
- SDK Core <8KB独立约束本框架不动
---
## Dependencies / Assumptions
- A1. 参考环境KD1是产品假设无上线用户设备分布数据按 2026 千元机现状Redmi Note 15 级,6GB RAM,¥999锚定上线后遥测校准。
- A2. Chromium 编译缓存按 v8.dev 文档化行为采信URL 脚本二载生成、三载复用);**XWeb/X5/低端 WebView 的真实表现未验证**——已列为 spike 定向钉子。
- A3. 微信「游戏引擎插件」机制(引擎托管在平台、不占主包、跨游戏共享)为高置信知识,渠道导出规划时核官方文档。
- 上游依赖Runner v2 加载面(重设计 spec D2是 R10/R14 的载体。
---
## Outstanding Questions
**Deferred to planning**
- S2 数值校准窗口:首批参考机真机数据落地后是否调整 2s/3.5s。
- E3 分档探测的具体信号集WebGL 能力/`deviceMemory`/首帧耗时采样的组合)。
---
## Sources
- 平台限额核实2026-06-11一手官方文档微信/抖音/快手开放平台分包文档、Meta Instant Games bundle 指引(首下 ~1MB/首屏 <5splayable ads 聚合规范5MBPoki首下 8MB/30fpsCrazyGames移动首页 20MB
- 引擎四路尽调2026-06-11LittleJSnpm registryv1.18.19min 175.7KB raw≈55KB gz源码证无 eval、WebGL2 自动降级 Canvas2D、Phaserunpkg 一手字节4.0.0 全量 1.35MB raw≈345KB gzv3 确证需 unsafe-evaldestroy 泄漏 issue #2138/#5456、KAPLAY"LLM friendly/llms.txt"证伪404、查漏横评候选集无遗珠「自研+微库」终点=再造 LittleJS
- v8.devJavaScript code caching编译缓存行为
- 现行实现:`game-studio/src/host/runtime/index.ts`843 行自研壳)、`game-studio/src/host/inject.ts`toString 注入与 CSP`game-studio/src/host/contract.ts`GamePackage/manifest.runtimeVersion 迁移缝)。
- 重设计评审版:`docs/agent-specs/2026-06-11-Tier1运行时重设计-review.md`

View File

@ -1,6 +1,7 @@
# game-studio产品端前端 · 创作者 + 玩家)
> **状态:双区建成并接 staging 真后端2026-06-11 对账)。** 创作链路①与发布段 UI 走查全绿、真人试玩链路③ e2e 闭环HJ-FE-WALK-001mock 仅作离线兜底。**进度一律以 `docs/mvp/MVP进度总账.md` 为准,本文件只随结构变化更新。**
> **⚠️ Tier1 重设计立项2026-06-11**`src/host/runtime/` 自研壳(<15KB将由「成品轻引擎 + Runner v2」取代15KB 红线废除、改三层约束框架(`docs/brainstorms/2026-06-11-tier1-runtime-constraints-requirements.md`);引擎终裁待 LittleJS vs Phaser spike存量 1.x 路径双轨冻结。
> 上游契约:仓根 `contracts/`5 API YAML + sdk-interface.d.ts#3 + game-package.schema.json#4单一事实源
> 建设过程与验收详见 `docs/agent-specs/2026-06-08-前端game-studio建设-{review,execution}.md`。