games-development-ai/docs/brainstorms/2026-06-11-tier1-runtime-constraints-requirements.md
zizi a8a565532c docs(t1-spike): Codex 5.5 Xhigh对抗评审整改 v1.1——P0×6/P1×5全修+三拍板落账
- P0:SDK接线细则(复制工厂+重建双原语shim)/S2七锚点host单时钟(可玩=t_input_bound)/真输入取证纪律(禁evaluate篡改)/CSP硬证据(securitypolicyviolation+CDP双源计数)/Phaser版本统一4.1(3.90=买断代迁移债,v4挂CSP硬门才降级备援)/serve形态钉死(vite build+immutable缓存头+固定端口三开协议)
- P1:outcome标注spike-local(契约补丁随W-T1b)/SIZES三列(engine-only·runner-total·helpers)/依赖锁定npm ci/并发模型改mini-desktop暂存目录+git全程主会话/R4口径回填requirements
- 评分表加helper依赖成本行;重设计spec §9 拍板落账(Q1 top-2 spike/Q2捆绑好玩基线/Q3 spike先行并行)
- 评审通道:按创始人指令首跑Codex 5.5 Xhigh成功,未回落

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 18:02:39 +00:00

8.6 KiB
Raw Blame History

date, topic
date topic
2026-06-11 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%。口径:事件源=既有遥测/生命周期事件;分母=滚动 7 天游戏加载总次数;排除鉴权类 4xx按模板与设备档分桶观测。
  • 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/首屏 <5s、playable ads 聚合规范≤5MB、Poki首下 ≤8MB/≥30fps、CrazyGames移动首页 ≤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.ts843 行自研壳)、game-studio/src/host/inject.tstoString 注入与 CSPgame-studio/src/host/contract.tsGamePackage/manifest.runtimeVersion 迁移缝)。
  • 重设计评审版:docs/agent-specs/2026-06-11-Tier1运行时重设计-review.md