我刚刚发布了一个完整的、实时多人在线卡牌游戏,几乎完全是通过指挥 AI 来构建的——我设计了它,并做出了决定,但 AI 写了大多数代码。实时在线多人游戏,机器人,战役,日常任务,排行榜,装饰——不是玩具演示。它已经上线并且免费,如果你想看到结果,请访问:https://www.crazygames.com/game/spinout-esh 但是,真正有用的部分不是游戏本身,而是它所使用的技术让这种规模的 vibe-coding 变得可能,而不是让它崩溃成 spaghetti。以下是有效的部分:
- 保持一个纯粹、确定性的核心,让 AI 可以测试自己。整个游戏引擎都是纯函数(不可变的减少器),由一个具有权威的服务器驱动的,带有一个种子 RNG。因为它是确定性的,所以 AI 可以写出大约 120 个单元测试——并且这些测试在以后捕捉到了它自己的回归。如果你的核心是可测试的,AI 就可以自行检查。如果它是纠缠的,每个变化都是赌博。
2)在每个单个变化之后强制执行“绿色门户”。不可谈判的规则:测试 + 类型检查 + 构建 + 语法检查必须全部通过,才能认为“完成”。这个习惯比任何提示都更有价值。它将“看起来正确”转换为“可证明没有破坏”。
3)并行化使用严格的文件边界。对于大规模推送,我同时运行了多个代理(引擎,服务器,UI,部署)——但每个代理都被告知它可以和不能够触摸的文件。这是并行运行代理而不让它们互相干扰的整个窍门。重叠的文件所有权 = 合并地狱;分离的所有权 = 免费速度。
4)验证,不要相信。AI 会自信地说“完成,所有绿色”。相信测试,而不是感觉。屏幕截图了大约 9 个不同分辨率(手机到超宽)的每个屏幕,因为“响应”纸上 ≠ 实际上适合于真正的手机。
5)你的真正工作是品味,架构和微小的 bug。 AI 在实现方面很快;你通过让 AI 看不到的 5% 来赚取你的薪水。从本次构建中有两个例子:
-“反转”卡片看起来是破损的——实际上它是完美的;一个机器人只是在之前的反转之后再次玩了一个反转。没有代码 bug,一个清晰度 bug。
-音频在大约 1 秒后一直会自动解除静音—— AI 的静音功能是有效的,但一个焦点事件悄悄地重新启用了它。你必须实际上玩它才能捕捉到这些 bug。
6)尽早且便宜地部署。 我将它部署在一个免费的 VM(自动生成 TLS,Docker)上。真实环境会暴露真实的问题(iframe/CORS/websocket 等)从未在本地显示出来。
7)小范围任务战胜一个巨大的提示。无情地分解。“构建游戏”失败。“添加 botDifficulty 选项并让机器人在困难模式下先舍弃高牌”成功。如果你有任何关于多人游戏架构,并行代理设置或部署的问题,我很乐意回答。并且,如果你玩了它,我也很希望获得关于游戏感觉——尤其是旋转混乱的反馈。
评论 (0)