一万只敌人从地图边缘涌出来。
它们没有挤成一团冲锋,移动轨迹像水一样顺着地形流动,绕开高原、穿过峡谷、避开悬崖,朝着你工厂正中央那条黄色传送带组成的生产线推进。
传送带上正在源源不断吐出弹药,炮塔自动锁敌、自动射击、自动被优化升级。敌人大片大片被熔化,化成经验值,被吸引塔吸到你脚下。
屏幕右上角有个跳动的数字,叫 ZPM(Zombies Per Minute),也就是每分钟击杀数。这是这个游戏唯一的 KPI。
这是 Nicolas Zullo(@NicolasZu)的游戏 Zombies Per Minute。
3D 画面,跑在浏览器里,玩法是三个游戏类型的缝合。
一是 Factorio,一款经典的工厂自动化游戏,核心玩法是搭传送带、造机器、优化生产线。
二是 They Are Billions,一款"你的基地 vs 上万只僵尸"的即时战略塔防游戏。
三是 Roguelite,一种游戏机制,每局随机地图、死了重来,但失败会解锁新内容让下一局更强。
Steam 页面已经上线,wishlist 500+,demo 可以直接在网页上免费玩。
最关键的一点在于,这游戏是一个人做的,用 AI 写代码,2 个月 1500+ commits,9 亿 tokens,全部是业余时间。
Nicolas 本职是法国医疗平台 Doctolib 的软件开发,游戏是下班后的事。整个项目他一个人扛,美术、程序、音效全部没有外包,连游戏引擎都没用现成的,而是基于 Three.js 裸搓了一套。
这篇文章拆的就是他的具体打法。他怎么选模型、怎么和 AI 分工、怎么处理长周期项目里 AI 会丢上下文的老毛病、撞上性能瓶颈怎么破、碰到自己不懂的技术概念怎么办、新功能怎么和已有系统自动打通。
这些答案全部是他两个月里在推特上一条一条晒出来的实战经验。
起点:工具栈非常克制,只用两个 AI
先说工具。Nicolas 主力只用两个 AI 编码工具,订阅成本加起来大概 $20/月。
一个是 Claude Code(Opus 4.7/4.6),负责游戏的前端和 UI 部分。他的原话是 Opus 在前端 UI 的品味上比 Codex 更强。
另一个是 Codex CLI 或 Codex App(GPT-5.4 High / GPT-5.3-Codex),这是 ZPM 的主力工具,负责游戏逻辑、模拟、渲染、性能优化。
他公开说过 Cursor、ChatGPT 网页版、Copilot 这些工具他都不用。上面那两个 AI 已经够他打完一整款游戏。
技术栈是他和 AI 聊出来的。
Vite 做构建、React 做 UI、TypeScript 做语言、Three.js 做 3D 渲染。他用 React 是因为 ZPM 的 UI 层很重,用 Three.js 是因为他想要一个完全自定义的 JavaScript 引擎,不想被现成引擎绑架。
音效和语音交给 ElevenLabs,3D 资产从 Quaternius 和 Mixamo 这类免费素材站拿,图片和 3D 资产的 AI 生成用 GPT Image 和 TripoAI,版本控制用 Git 每步手动 commit。
工具栈看起来很简单,背后藏着一个核心判断:不同任务用不同模型,不要死磕一个。
Nicolas 做游戏菜单的时候切到 Opus 4.6,因为 Opus 在前端品味上更强。做排行榜功能他回到 GPT-5.3-Codex-High,因为 Codex 产出的代码更稳。后来做本地化系统时他用了刚发布的 GPT-5.4 Extra High,因为这个任务量级需要更强的上下文处理能力。
这套"看任务切模型"的套路他从头用到尾。
第一原则:人规划,AI 执行
Nicolas 整个 Vibe Coding 方法论只有一句核心原则:
人类主导规划,AI 纯执行。绝不让 AI 自主规划,否则代码会一团糟。
这句话是他反复警告的。所有游戏功能的创意、设计、优先级、判断都来自他自己。AI 的工作只有一个:把他想清楚的东西写出来。
具体怎么做到"规划在人脑、执行在 AI"?答案是一个叫做 memory-bank 的文件夹。
项目根目录下有一个 memory-bank/ 目录,里面放着五份文档。第一份是 game-design-document.md,整个游戏的愿景、机制、玩法设计。第二份是 tech-stack.md,技术栈文档,用什么库、什么架构。第三份是 implementation-plan.md,实现计划,每一步都拆到"极小、具体、可测试"。第四份是 progress.md,进度追踪,做到哪一步了。第五份是 architecture.md,架构文档,每完成一个大里程碑就更新一次。
AI 的规则里写死了一条:每次写代码之前,先把 memory-bank 里的所有文档读一遍。
这意味着 Codex 每一次被调用,都会先把项目的全局信息塞进自己的上下文。AI 不会忘记之前说过什么,也不会按自己的理解擅自改动架构。
他和 AI 协作的循环是这样的。
第一步,问 AI:"读完 memory-bank 里所有文档,implementation-plan.md 讲清楚了吗?你有什么问题?"AI 反问,他回答,计划被完善。
第二步,他发指令:"读完 memory-bank,执行 Step X。我来跑测试。在我确认之前不要碰 Step X+1。"AI 输出代码。
第三步,他亲自跑测试,跑通之后 commit 代码、更新 progress.md 和 architecture.md,清空上下文,进入下一步。
这套流程听起来很麻烦,但它解决的问题是致命的。
AI 编码最大的失败模式不在于写错代码,真正会把项目带偏的是长周期项目里上下文丢失。memory-bank 相当于给 AI 装了一个永不丢失的工作记忆。
游戏怎么一步步堆起来的
流程讲清楚了,看他具体怎么应用。
两个月里 Nicolas 在推特上分享的开发节点按顺序大概是这样。
第一步是菜单。菜单看似不起眼,但它定调了整个游戏的视觉风格。他换用 Opus 4.6 做这一步,这是他第一次切模型,也是后来反复使用的套路。游戏名 Zombies Per Minute 也是在这一步定下来的。
第二步是排行榜。他切回 GPT-5.3-Codex-High,对产出的评价是"异常简洁干净"。
第三步,把 Web 游戏一键打包成桌面 App。这一步让他自己都有点意外。他让 Codex 处理 Web 到桌面应用的打包,15 分钟搞定。更反直觉的是,打包后的 App 性能比 Web 版还好。对独立开发者来说,这件事过去意味着几天的 Electron 配置、平台适配、性能调试,Codex 把它压成了一次对话的时间。
第四步是最关键的一跳,Roguelite 升级系统。他 2 月 15 日在推特上想了一个问题:要不要把自动化玩法和 Roguelite 机制混在一起,每一波有随机性、有选择、有元进度?两天后 GPT-5.3-Codex 一口气给他做了一套 Vampire Survivors 风格的 XP 升级系统。(Vampire Survivors 是近年爆款肉鸽游戏,核心机制是打怪爆经验值、升级时从随机池子里挑天赋。)他立刻意识到这个组合能成立,因为试错成本几乎为零。

以前设计一条新的天赋树,他要自己写代码、调平衡、测数值。现在他直接让 Codex 加机制,不好玩就回滚,爽就留下。一周之内他堆进了整整一批新内容,包括自动吸取经验值的吸引塔、加速搭建的 Copy/Paste 生活质量功能、后期帧率 7 倍的性能优化、5 个新的 CPU 升级、最多 6 个强化同时叠加的机制、Reroll/Skip/Ban 这些肉鸽标配的选项、智能炮塔的连携 combo,以及最终防守模式 Final Stand。
第五步引入美术资产。Quaternius 免费丧尸模型配上 Mixamo 角色动画,Nicolas 让 Codex 在这个基础上做极限性能优化,目标是后期承载十万级实体。最终结果:网页游戏,恒定 120 FPS,MacBook M1 Pro 上 90+ FPS。
两个月时间他写了一条总结帖:900+ commits、150 小时、一份全职工作、一款 3D 工厂 Roguelite、一万级实体在浏览器里跑。
硬骨头:一万只丧尸的寻路
接下来是整个过程里技术含量最高的一段。
Nicolas 想给游戏加程序化地形,也就是高原、悬崖、瓶颈点这些地形元素,增加可玩性。但他立刻撞上一个问题:一万只丧尸同时在地图上移动,如果每一只都跑传统的 A* 寻路算法,CPU 会瞬间崩。(A* 是游戏 AI 寻路的经典算法,每一个单位单独计算自己从起点到终点的最优路径。)
Codex 给的解决方案分两层。
第一层是程序化地形生成。Codex 用带 seed 的 Perlin 噪声加一堆参数生成地形,再配一套自动化测试,保证每次随机生成的地图都是"可玩"的,不会出现无法通关的地形。(Perlin 噪声是图形学里用来生成看起来自然的随机纹理的经典算法,山脉、云、地形起伏都常用它。)这里真正有意思的点在 AI 把自动化测试一起写了,Perlin 噪声本身是老教材。这些测试覆盖了每一种参数组合下的可通关性,相当于给随机生成加了一道护栏。
第二层是 Flow-Field 流场寻路。Nicolas 自己当时的描述是"丧尸应该像水一样绕着地形流动"。Codex 接住了这句话,引入了流场这个他之前都没听过的概念。

流场的核心思路和传统 A* 相反。传统做法是每只丧尸各自寻路,流场做法是给整张地图预先计算好一个"方向场"。每隔几个 tick,整张网格刷新一次,每个格子存一个方向向量,告诉路过这里的丧尸下一步该往哪走。丧尸寻路时只需要查表,查自己所在格子的方向就行。几百只丧尸的寻路被合并成了一次批量计算。
这里还有一个细节值得单独说。Nicolas 让 Codex 同时做了一个可视化调试模式。视频里可以看到方向箭头在整张地图上每几 tick 刷新一次。他自己的解释是"我看不懂流场怎么跑的,所以让它画出来"。
这是 AI 协作里一个被严重低估的能力。当你在学一个不熟悉的领域,不要让 AI 只给你代码,要让它同时给你可视化。可视化是你验证 AI 没骗你的最可靠方式,也是你把新知识内化的最快方式。他自己后来写了一句:"I learnt a lot."
让 AI 造工具,不要让 AI 造资产
Nicolas 在一条推特里讲了一个他认为对所有独立开发者都适用的技巧。
如果你不会做树、石头、场景道具这类美术资产,不要硬啃。让 Codex 给你造一套"树生成工具"或"石头生成工具"。第一步,和 AI 一起定义风格参数,树的高度、冠幅、叶片密度、摇曳幅度这些。第二步,直接在游戏里实时看效果。第三步,挑到满意的保存下来。后续要加新季节、新树种、新地貌变体,都是这个工具的扩展。

这个思路的内核是:一次性让 AI 生成一棵树,这棵树做完就完了。让 AI 造一个树工具,你以后所有的树都能用。
同样的逻辑他也应用在建筑设计上。
他让 Codex 做了一个建筑设计工具,可以在游戏运行时直接调整建筑参数。配合他最近发现的另一个能力,Codex App 可以直接在它自己的浏览器里运行网页游戏,他的工作流变成了这样。游戏直接在 Codex 里跑起来,因为 ZPM 是纯 Web 技术栈。他用自己让 Codex 做的工具调整建筑参数。让 Codex 改代码,游戏不用刷新就能看到变化。他可以直接点 UI 元素让 AI 知道他在说哪里。随时截图、随时迭代。
对 Web 游戏开发来说,这基本把"写代码、编译、打开浏览器、找到那个场景、回来改代码"整条链路压到了趋近于零。他形容这是 a truly insane NEW way to design。
语言在地化:3 小时做完 9 种语言
最新这条是 GPT-5.4 Extra High 发布之后发的。
游戏全程英文写的,没考虑在地化。大家告诉 Nicolas 加本地化能显著扩大受众。他决定做。
整个过程大概是这样。
第一步,他和 Codex 长聊一次,写清楚在地化系统的技术规格,强调要"保持简单"。
第二步,Codex 扫描整个代码库,找出所有硬编码的英文文本,自动替换成 key 引用,耗时 1 小时 35 分钟。
第三步,Codex 翻译 9 种语言,每种约 580 个 key,耗时 1 小时 15 分钟。
第四步,每一条翻译都被第二遍审视、优化。彩蛋是用 ElevenLabs 的 text-to-speech skill,自动把所有音频也翻译了一遍。
总计 3 小时,整套在地化系统搭好、9 种语言翻译完成、所有音频重新配音。
他说现在继续正常开发游戏,如果他加新文本,会自动生成 key、自动翻译成所有语言,靠的是 Agents.md 里几条基础指令加一个 pre-commit hook 做兜底。
翻译成打法就是:新功能不要单独适配在地化,要让在地化系统自己去适配新功能。Agents.md 是告诉 AI 生成新文本时要同步建 key、同步翻译成所有语言的那份指令文档。pre-commit hook 是在代码提交前自动运行的检查脚本,漏掉的地方会被它拦截。有这两层机制兜底,Nicolas 写新代码时几乎意识不到本地化的存在。
他说接下来想找社区做人工校对。但底层系统已经不需要他再操心了。
最近的动态:还在疯狂更新
截止到今天,Nicolas 还在高频更新。
他分享了一条最新工作流:"Codex 可以直接启动游戏。因为是 Web 游戏,所以在 Codex 自己的浏览器里就能跑。"
还发了一条性能优化感悟:我学到了很多,接下来该继续并行化了。这是他刚做完一轮针对上万实体的优化之后的复盘。
节奏依然很高。内容已经从"展示开发过程"过渡到 demo 可玩、持续优化、推 Steam 上架这个阶段。
从 Nicolas 的打法里能提取什么
Nicolas 这套方法背后有几条可迁移的原则。
第一条,规划权必须在人手里,执行权交给 AI。这是整个 Vibe Coding 的第一公理。memory-bank 这套文档系统、每步拆解到可测试的 implementation-plan、每一步都要人类确认才推进。这些机制从不同角度兜住了同一件事,让 AI 不在长周期项目里脱缰。
第二条,不同任务用不同模型。Nicolas 用 Opus 4.7 做 UI,用 Codex 做后端。这不是玄学,是两个模型在不同领域训练数据和优化目标不同的客观差异。
第三条,造工具,不造一次性资产。让 AI 做一棵树,价值有限;让 AI 做一个树生成器,价值会随时间复利。
第四条,可视化是学习的杠杆。当你在用 AI 做你不熟悉的领域,让它把原理画出来。流场寻路那段是这个原则最漂亮的应用。
第五条,新功能要自动适配已有系统,不是已有系统去追新功能。本地化那套 pre-commit hook 加 Agents.md 的机制,就是让系统自己维护自己。
第六条,如果你做的是 Web 产品,Codex 内游戏内迭代是一个独占礼物。这条工作流会把你和"编译型开发"拉开一个身位。
除了这六条打法,Nicolas 自己还反复强调两条更基础的建议:把 AI 玩好,把品味练好。怎么练品味?他的答案是一句话:build build build。
追完这条推特串的整个演进过程,最大的感触其实不是"AI 能写代码了"。真正让我震动的是 AI 重新定义了一个人可以撬动的产能规模。
Nicolas 是法国 Doctolib 的正职程序员。他有本职工作、有日常生活,但他一个人、两个月、1500+ commits,做出了过去需要一个小型工作室才能做出来的 3D 游戏。
这就是"一人公司"叙事最性感的那一面。一个人按一个工作室的产能在出活,而不是一个人在孤军奋战。AI 把"能不能做出来"这道题几乎解完了。剩下的题是你有没有品味、有没有判断、愿不愿意一直做下去。

