实战案例 · Ricochet Tank 3D

一段「产品说明」,说的却是一款不存在的游戏——它照着造了出来

用户贴来一段散文:单文件 67KB、Three.js、炮弹在墙上反弹、微信聊天窗里就能玩。产线全库核查发现——这款游戏根本不在仓库里。于是把散文当规格立项:双分析、设计、开发;评审揪出 P0 反弹法线 bug,独立 harness 复核修复;部署时顺手合并了分叉的注册表;无头浏览器实测 10/10。8 步全绿,全程无人插手。

唯一的人类输入:一段像「产品说明」的散文(节选)
「整个项目就一个 HTML 文件,67KB,零依赖,打开浏览器就能玩……坦克的炮弹会在障碍物和墙上反弹:每帧用当前位置和上一帧位置拉一条线段,跟所有碰撞体做相交测试,碰墙按入射方向和法线算反射,扣掉一段射程继续飞……近距离交火时往墙上打一炮,子弹拐个弯绕到对手后面。」

第一步不是写代码,是核查:这游戏不存在

tech ⇄ ux 两位分析师并行核查:全库 grep + origin/main 复查,描述的 2852 行坦克游戏无命中——判定为新游戏需求,散文即规格。架构落点全部取自仓库先例:弹道直接沿用 022-cupid-ricochet 的模板(120Hz 固定子步 + 共享 traceSegment + MAX_BOUNCES 硬上限)——上一个案例造的游戏,成了这一案的工程模板

pipeline mid-run with analyst debate

产线运行中 · 分析师正在交锋:dt clamp 取 33ms 而非 50ms——低端聊天 WebView 持续 25-30FPS,50ms 会把整局变成慢动作

「核查发现:请求描述的 2852 行坦克游戏不在库中(Three.js 仅 005,坦克仅 2D 的 084),按“新游戏需求 + 仓库惯例”撰写。」 — ux-analyst → lead · 运行实录

设计:五屏 neon-arcade,机制写进规格卡

设计工位产出交互式规格板:零白屏 boot / 菜单 / 战斗 HUD 实机演示 / 胜败双结算,外加 5 张规格卡——预判线与飞行弹道共用 traceSegment()、MAX_BOUNCES 10 硬上限、dt clamp 33ms,散文里的每一句机制都被翻译成了可执行约束;lint P0 = 0、critique 22/25 后注册画布。

Executed byClaude Code· 设计阶段 ·
design canvas

设计工位 · 先搜仓库前例(cupid-ricochet 设计稿)对齐惯例,再产出规格板,md5 双副本校验一致

neon arcade design spec

设计稿全貌 · BOOT / MENU / HUD(预判虚线 + 菱形反弹点)/ VICTORY / DESTROYED + 色板、字阶、触控热区、性能红线

评审揪出 P0:西墙北墙的反弹,全是错的

首版提交后,评审在反弹核心里揪出 P0 法线符号 bug(两处 s=-s,西/北墙反弹方向全错)。修复不是嘴上说说:独立 120Hz harness 48 项全过、四向墙壁存活对齐;更狠的是负向对照——往内存副本里把 bug 种回去,精确复现首轮故障签名,证明测试真的测得出这个 bug。

Executed byClaude Code· 开发 · 测试 · 评审 ·
final DAG 8/8

8/8 全绿终态 · 22 个产物落盘:双分析、设计稿、游戏本体、两轮测试报告、评审与复审、部署与 web-test 报告

套件 156/0 · 70 条行为测试直接从生产代码 vm 提取,零漂移
独立 120Hz harness 48/48:四向反弹对齐、零幻象反弹、零穿墙
负向对照:植入旧 bug 精确复现故障签名——证明测试灵敏度,而不是全绿自嗨

部署时的意外:注册表分叉了,它没有硬覆盖

deployer 发现部署机与仓库的游戏注册表已分叉(主机 43 条 vs 仓库 41 条)。它没有拿一边硬覆盖另一边,而是合并成 52 条、零丢失;三个文件逐一 sha256 校验;重启网关前先用标记确认「这是我该管的进程」,健康检查全过才收工。

registry 分叉 43 vs 41 → 智能合并 52 条,双方条目零丢失
scp 三个文件逐一 sha256 校验;网关重启前先做 marker 确认,不误杀别人的进程
健康检查::3000 监听 · 游戏 URL 200 · registry 含 101 条目

上线实测:预判线、反弹点、致命 AI,全都真的

web-tester 无头 Chrome 实测 PASS 10/10:零白屏、boot→菜单→战斗→大厅全程 0 console 报错、预判线与菱形反弹标记、弹道拖尾、爆炸粒子、致命的敌方 AI。下面四张是我们自己再玩一遍的实拍——第四张败局结算屏,就是被那个「致命 AI」15 秒击杀的证据。

AcceptancePASS 10/10· 无头实测 + 真玩 ·
menu
gameplay
aim with bounce marker
destroyed settlement

线上实机 · 菜单弹道动画 / 战斗 HUD 与弹药条 / 按住瞄准:预判虚线 + 菱形反弹点落在油桶上 / 败局结算——散文里的机制,一条条都能在屏幕上指出来

8/8
DAG 步骤全绿
156/0
测试套件 · 含 70 条行为测试
48/48
独立 120Hz harness
10/10
无头浏览器实测

修过老游戏、救过消失的游戏、从 0 造过新游戏——这一次,连需求里的游戏都不存在:描述即规格,散文即立项

你脑子里那个还不存在的东西,也可以这样立项

把它描述清楚就行——核查、立项、设计、开发、评审、部署、验收,产线自主完成。人管定义,AI 管执行。

咨询