feat(amodel-gen): Phase1 e2e 验证 + driver-可达性设计护栏(两步成单 footgun)
本地 e2e(design→code)实证策划 agent 价值:一句话「做一个网兰梅的街角小卖部经营小游戏」 → 策划 agent 读真 sim skill(115s)→ 比手写 v2/v3 brief 更丰富的设计(进货-库存-补货环 + 6 级解锁 阶梯 + 满意度 + 数值表 + 客流节奏区间 rush≥35s + 好玩自检 4/4 + clean gatespec score↑/currency↓) → code agent **9 步**收敛(vs v3 的 39 步)check/build/smoke 全绿。**设计层补料 → 更好玩 + 更快 + 更省 兑现。** 九门验 v4 = 8/9(A/B/C/D/E distinct=82/82/F/G/I 全绿,游戏真活、输入真响应),**仅 H score 0→0**: 根因 = 设计选了**两步成单**(选顾客锁定→点货架商品),零-LLM tap-targets driver 只单击 occupied 目标、 跟不动两步 → 选客不成单 → 营收 0(截图实锤:蓝顾客被选中高亮但没卖出)。**好游戏被误判,非代码 bug。** 护栏(设计-guidance,非改 driver/九门——守"九门玩法无关"): - sim skill §9 + design prompt 可达性自检 + littlejs _forensicsView 契约 三处加「driver 可达」铁律: 核心成单/得分动作**单击 occupied 目标即完成**(casual 友好 + driver 可达);深度靠进货/库存/解锁/节奏, 不靠两步匹配;确需多步则 _forensicsView.targets 随状态把"下一步该点的"标 occupied。 待:re-gen v5(验护栏 → 单击成单 → H 过)+ U3(designNode Java shell-out)+ U6 蒸馏。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
57c30909cd
commit
75dc86ad56
@ -95,7 +95,7 @@ export function createGame({ plugins, bundle, viewport }) {
|
||||
- **输入收归 L1(别自己订阅)**:不写 `ctx.getInput()`、不自建点击队列、不在 `update` 里挑时机消费点击——只写实例方法 **`handleTap(x,y)`**(点击)/**`handleKey(key)`**(键盘),L1 的 game.js wrapper 在 pointerdown/keydown 时**直达**调用。〔HJ-AGI 实测:M3 把点击塞 `pendingClicks`、在 `update` 的 play 分支(menu early-return 之后)才消费 → 菜单点击永不处理 → 启动不了;收归 L1 结构性根除。check 会拦 `getInput` 与"零输入方法"。〕
|
||||
- **⚠️ 驱动插件 onFrame**:`update(dt)` 内**必须 `bundle.tick(dt)`**(`bundle` 是 createGame 入参)——否则 timer-scheduler/gamefeel 等的 onFrame 不推进、timer 永不到期、一局不结束。
|
||||
- **viewport**:画面口径读入参 `viewport.w/h`,别硬编码 390×844。
|
||||
- **取证面(`_forensicsView()` 必须实现,可测性红线)**:实例必须挂 `_forensicsView()`→`{ state(), measures() }`;`state()` 导出可观测态——至少 `{ phase, score }`,有可点目标则加 `targets:[{x,y,occupied}]`(九门据此验「真活+有进展」+ 驱动)。**不写则 check 拦 + 九门 E_live/H_progress 读不到状态**。另可选挂 `_handleAction(action)`(host.do() 走逻辑驱动,便于确定性 e2e)。范式见 `_template/src/game-logic.js`。
|
||||
- **取证面(`_forensicsView()` 必须实现,可测性红线)**:实例必须挂 `_forensicsView()`→`{ state(), measures() }`;`state()` 导出可观测态——至少 `{ phase, score }`,有可点目标则加 `targets:[{x,y,occupied}]`(九门据此验「真活+有进展」+ 驱动)。**targets 要反映「当前该点什么才推进」**:多步动作(如选客→选货)在选中后,把第二步目标(货架商品)也标 `occupied:true` —— 否则零-LLM driver 单击跟不动两步、H 门验不到进展(实测 wanglanmei-v4:两步成单 → driver 只选客不成单 → score 0 误判)。**最稳:核心成单做成单击即完成**。**不写则 check 拦 + 九门 E_live/H_progress 读不到状态**。另可选挂 `_handleAction(action)`(host.do() 走逻辑驱动,便于确定性 e2e)。范式见 `_template/src/game-logic.js`。
|
||||
- **关键事件记日志(`ctx.log`)**:在 init/场景切换/得分/出错处 调 `ctx.log('tag', 信息)`(`ctx`=init(boot).boot.ctx)→ 写 `window.__gameLog`,便于读日志诊断运行时问题。**插件调用已由 host 自动记**(你只补游戏语义事件)。
|
||||
|
||||
---
|
||||
|
||||
@ -132,6 +132,7 @@
|
||||
- ❌ 3D / 大量逐帧手绘动画 → 2D + 程序化动效(particles-juice/缓动)+ 少量 mmx 静态图。
|
||||
- ❌ 复杂经济(多资源链/市场波动)→ 双货币 + 简单成长曲线。
|
||||
- ❌ 超过 2 个主机制 → 便宜模型 + 单屏扛不住,聚焦 1 主 + 1 成长轴。
|
||||
- ❌ **核心成单/得分动作做成「先选 A 再选 B」两步**(如"点顾客锁定→再点货架商品"):零-LLM 自动验收 driver 只会单击 `occupied:true` 目标、跟不动两步 → 九门 H 验不到进展 = **好游戏被误判** → ✅ **核心动作单击即成单**(点等待中的顾客 = 自动按库存售卖收钱,casual 友好 + driver 可达);**深度靠进货/库存/解锁/节奏,不靠两步匹配**。若确需多步,则 `_forensicsView().state().targets` 必须**随状态把"下一步该点的"标 occupied:true**(选中顾客后,把该卖的货架商品标 occupied),让 driver 跟着两步推进。
|
||||
- ✅ 留下的:放置产出、合成升级、点击经营、阶段解锁、收集、轻决策、数值滚雪球 —— 全在 12 插件 + 单屏 + 便宜模型可生成范围内。
|
||||
|
||||
---
|
||||
|
||||
@ -158,7 +158,7 @@ export function buildDesignSystemPrompt() {
|
||||
核心循环(+30 秒脚本)· 主机制 1–2 个(标用哪些插件)· **经营品类必含「进货→库存→售卖→补货」资源环** · 解锁阶梯(3–6 级 + 阈值)· 数值骨架(初始/成长率/卡点)· **客流/出现节奏目标值**(出现间隔·同屏上限·耐心·rush 起点 —— 按 §3 给具体区间,别拍激进=别让顾客太快)· 美术风格词(一组共用)· 音效清单(收益/升级/解锁,§10 红线「必有反馈音」)· UI 布局 · 首 3 分钟脚本。
|
||||
|
||||
【两道自检(必过,写进设计稿)】
|
||||
- **可达性自检(§9)**:逐条问「12 插件 + boot.ctx 能落吗」——落不到的(联网/3D/大世界/复杂经济)剔除或简化。
|
||||
- **可达性自检(§9)**:逐条问「12 插件 + boot.ctx 能落吗」——落不到的(联网/3D/大世界/复杂经济)剔除或简化。**+ driver 可达(关键)**:核心成单/得分动作要**单击 occupied 目标即完成**(零-LLM 自动验收据此点);**别做"先选客再选货"两步**(driver 跟不动 → 九门 H 验不到进展 = 好游戏被误判);确需多步则要求 _forensicsView.targets 随状态把"下一步该点的"标 occupied。
|
||||
- **好玩自检(§10)**:过 8 条,**至少命中 4 条可机检项**并写明命中哪几条:①即时反馈(飘字+音效+粒子)②可见成长(score 上升)③下一个解锁 ⑧音反馈;经营再加「买/进货扣币」。
|
||||
|
||||
【gatespec(钉死,下游据此验收)——作为 done 的结构化参数传,别塞进设计稿正文/别用围栏块】
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user