跳到正文
一辆 T-80U Husarz 与一辆 PL-01 坚守村庄十字路口

通过可验证循环构建的浏览器游戏

Claude of Tanks 由一个直接基于 Three.js 的原型,经历了多轮短周期迭代——隔离一个问题、只改动最小归属方、在浏览器中验证、记录结果、合入主分支——最终演化为一款类型化、可测试的游戏。

3 分钟

从硬性约束起步

本项目是浏览器原生、直接构建在 Three.js 之上,而非使用通用游戏引擎。仿真以 60 Hz 固定步长运行,可玩坦克全部采用第一方程序化运行时几何体,公开展示页面与重型游戏启动图保持隔离。

这些约束塑造了整体架构:确定性规则可在 Node 中运行、渲染器可独立自适应、每一条对外声明都能指向具体代码、测试、截图或测量凭证。

规则与表现分离

运动、弹道、装甲、伤害、点亮、比赛状态和机器人决策均位于无渲染器的契约之后。Three.js 仅把最新状态转换为相机、车辆模型、灯光、特效、音频和 UI,不会成为命中结果的权威。

这一边界使得本地战斗与浏览器内开房共用同一套战斗规则,也让低端画质在不改变玩法的前提下降低成本。

当前用于搭建可复现游戏状态的场景工作室与浏览器工具
当前用于搭建可复现游戏状态的场景工作室与浏览器工具

Claude Code 与 Codex 工作流

Claude Code 与 Codex 被作为有边界任务的开发工具。重大或高风险的工作被隔离到独立 Git worktree 中;每条分支声明自己负责的文件、保留无关变更,并在合入前交换精确的提交哈希和证据。

工作准则很简单:主分支保持最新、未完成的实验保持隔离、分支不是证据——只有已合入的代码才算数。人类设定目标与验收标准;代理按此实现、测量、审查并记录。

构建、证伪、测量

一轮典型工作从可复现的基线开始,再做归因。最小的合理解法会经过聚焦自测、浏览器交互、控制台检查、截图与性能探针验证。一个结果必须能经得起二次运行或故意构造的反例才会被接受。

视觉工作以当前像素为准,不只看数字检查。性能工作记录冷热条件、设备约束、长任务、帧间空隙、GPU 资源与过渡耗时,而不是只报一个平均 FPS。

一张拼版图上的十帧(共五十帧),用于视觉对比与评审
一张拼版图上的十帧(共五十帧),用于视觉对比与评审

让工作流可复用

仓库级的 AGENTS.md、索引化的子系统 SKILL.md 与一份持续维护的架构决策记录,共同保存归属、不变量、必需命令与常见失败模式,而不会用完成迁移的笔记把贡献者淹没。

凡是重复的手工流程都会被脚本化或变为关卡。这正是模型截图、战斗解剖、车辆图标、路线探针、公开元数据与发布检查都可由仓库复现的原因。原始执行记录保留在 Git 历史或被忽略的 QA 制品中。

只合入已集成的证据

完成一项改动后会作为一个内聚单元提交,在最新的 origin/main 上 rebase,并在集成后重新检查。最后一次推送会校验其父提交仍是远端最新,从而避免并发工作悄悄覆盖更新的合入。

公开构建随后验证路由隔离并剥离不可分发的对比素材。这让可玩站点、源码树、文档与主分支始终描述同一款游戏。