你只说"想要什么",其余的事都由 agent 完成。Claude Code 把你的一句话展开成计划——读仓库约定、写代码、调 Floniks 生成素材、跑测试、自己修 bug、提交。这就是我们这个 agent 游戏开发系列背后的方法,全部来自真实的 git 历史,一步步复盘:从一句话加一个解谜游戏,到用文生图、图生图、去背景、TTS、文生音乐做出一部悬疑微恐视觉小说,再到系统性 debug 与浏览器发布。
本文是这个系列的总览。两篇深度教程均已上线:上篇《从一张截图,做出一款解谜游戏》,下篇《从一句话,交付一部视觉小说》。这一篇把它们串成一套端到端可复现的方法。
先说清楚这里的 vibe coding 是什么意思:你只说"想要什么"——不写提示词、不搬文件。Claude Code 把你的一句话变成计划,你的角色从"操作工具的人"变成"定方向、验成果的人"。
三个部分咬合成一个闭环:
| 角色 | 是什么 | 负责 |
|---|---|---|
| 编排 | Claude Code | 读约定、写代码、跑测试、自主迭代 |
| 引擎 | Rust + Bevy + Lua | Rust 管渲染与跨平台,Lua 管玩法,命令队列解耦两者 |
| 素材 | Floniks(经 MCP) | 文生图 / 图生图 / 去背景 / TTS / 文生音乐,变成 agent 的工具 |
这不是愿景稿。下面每一步都有真实的踩坑与真实的修复。成果是一套 12 个小游戏、浏览器直接可玩的合集:maweis.com/rust_bevy_lua_game。
第 1 步:从一个为 agent 设计的仓库开始
关键不在工具多强,在于把上下文写进仓库。项目根的 CLAUDE.md 不是给人看的 README,而是给 agent 的架构契约:Lua 怎么跟引擎通信、加一个游戏分几步、什么归 Rust 什么归 Lua。在文档里说一次,胜过每次对话重复一百次——这就是"agent 会自行完善提示词"的真正含义。
然后把 Floniks 接进来。一行命令,素材工厂就出现在 agent 的工具箱里——这就是 Floniks MCP 服务:
claude mcp add --transport http floniks \
https://api.floniks.com/api/v1/mcp \
--header "Authorization: Bearer mk_YOUR_KEY"
从此 agent 能调用 list_models、single_task、execute_workflow 等工具——生成图像、跑工作流、查积分、取结果,全程无需人在中间搬运文件。
第 2 步:一句话,加一个游戏
最小的循环是这样的:
你说:做一个 Queens / 数独变体的逻辑解谜游戏,8×8,每行每列每种颜色各放一匹小马,小马不能相邻。
agent 做:新建一个 Lua 文件、写生成器(保证唯一解)+ 交互,自注册进菜单,补上一套断言规则不变量的无头测试,跑绿,提交。
这就是《小马拼图》的由来。玩法逻辑全在一个 Lua 文件里;改一行、保存,桌面端热重载秒级生效——agent 的"写 → 验"循环因此是秒级的。而它写的生成器真的会数解的个数,只保留恰好一个解的棋盘。

这款游戏的完整开发日志——从一张截图到上线、全程零提示词——见上篇:《从一张截图,做出一款解谜游戏》。
第 3 步:素材:让 Floniks 现场生成
程序员做游戏,卡住的从来不是代码,是美术。这里 agent 自己解决:它读一份可执行的风格圣经(锁死色板、描边、构图的 prompt DNA),只填每个素材的主体词,经 Floniks 文生图生成,再去背景、缩放到精确像素,按"同名同尺寸"的契约落进 assets/textures/——游戏零代码改动就换了皮肤。
你说:小马要栗色的身体、奶油色鼻梁、飘逸鬃毛,侧视,透明底。
agent 做:拼 prompt → Floniks 生成 → 抠底 → 48×48 落位 → 更新素材清单。同一条管线也产出了十个 HUD 图标和圆角 UI 贴图。
连生成的 15 秒玩法广告也出自这条管线:真实素材逐帧渲染成关键帧,配乐是 Floniks 文生音乐(Lyria 2)。

第 4 步:让它更精美:反馈驱动迭代
第一版往往能跑但糙。你把不满意的地方截图发回去,agent 就改。真实发生过的一轮——反馈是"格子是生硬色块、字体不够圆润、要加相机特效"——变成四项并行修复:
- 贴图:新写一个 8× 超采样生成器,产出可染色的圆角瓦片、粗体 ✕、胶囊与卡片。
- 引擎:新增
game.zoom()API——放对轻推、放错重推、过关猛推近再回弹。 - 字体:换成 Noto Sans SC Bold 子集,逐字校验无缺字。
- 生成器:盲重摇在 8×8 找不到唯一解棋盘,改用爬山精炼——首关从 237 个解收敛到恰好 1 个。
注意最后一条:这是个真 bug,被测试当场抓住并逼着修好。测试就是 agent 的眼睛——它看不到屏幕好不好看,但能看到"唯一解"这条不变量有没有被破坏。
第 5 步:更重的题材:一部完整的视觉小说
同一套方法扛得住重得多的东西。《深夜画廊》是一部悬疑微恐的审讯视觉小说:名画《凝视者》在画廊失窃;你逐一询问三位证人,选问法、看她们表情变化、最后指认真凶。这一步把 Floniks 的多模态能力全用上了。

四种能力,一条链路:
- 立绘——文生图 + 图生图:每个角色一张文生图底图,再用图生图派生平静 / 紧张 / 惊惧三种表情——同一张脸,不同情绪。再过去背景,得到透明立绘。
- 语音——TTS,一人一音色:三个真实不同的女声,一人固定一个,声学验证过基频各异(291 / 202 / 158 Hz)。
- 氛围——文生音乐:Lyria 2 生成的暗黑氛围循环乐,铺在对话之下。
- 剧情——分支对话树:打字机字幕 + 选项分支;问中关键线索会让立绘切到惊惧表情,问软了则被搪塞。


完整的构建过程——包括"三个声音其实是同一个"这个 bug 如何被仪器读数而非听感揭穿——见下篇:《从一句话,交付一部视觉小说》。
第 6 步:系统性打磨:真实的 debug 循环
Vibe coding 不等于不出 bug,而是你报现象、agent 找根因。这个项目里真实发生的三个,每个都被系统性解决:
| 你报现象 | 它找根因并修复 |
|---|---|
| 网页版没声音 | 浏览器把 AudioContext 初始为 suspended,需首次交互解锁——在页面首次点击时 resume 全部音频上下文 |
| 立绘的背景挡住了别的角色 | 立绘带烘焙底 → 9 张全过 Floniks 去背景抠成透明;浏览器缓存又拦下新图 → 改文件名绕过缓存 |
| 音轨乱,多条声音叠着放 | 缺声道模型 → 引擎重构成三声道:SFX 可叠但每帧去重、Music 同名不重启、Voice 单条对话声道(播新的先掐旧的) |
每一次修复都带一条回归测试或验证。这套无头测试套件如今已有 13 万+ 项断言——这就是 agent 敢独自迭代的底气。
第 7 步:发布:浏览器里直接可玩
同一份 Rust crate 编成三份:桌面、iOS 和 WebAssembly。合并到主分支即自动部署到 GitHub Pages——一条链接,任何手机浏览器直接玩,无需下载。
git push # 合并到 main
# → CI 编译 wasm → 发布 GitHub Pages → 上线
为什么这套方法成立
- 上下文写进仓库。
CLAUDE.md、风格圣经、素材清单就是 agent 的资深架构师。约定写一次,永久生效。 - 测试当 agent 的眼睛。 它看不到画面,但能看到不变量。有机器可验证的"对",自主迭代才安全。
- Floniks 当素材工厂。 经 MCP,生成能力变成普通工具。模型升级 = 换个 id 重放,架构不动。
- 你只出意图和验收。 不写提示词、不搬文件。你定方向、验成果;计划、代码、素材、测试都归 agent。
一个人加一个 agent:晚上留一句话,早上收一串带着绿色测试的提交。这就是我们认为的、属于 AI 时代的游戏开发方式。
问答
这套方法里的"vibe coding"是什么意思?
你用自然语言给出意图和验收标准,其余交给 agent:Claude Code 把你的一句话展开成计划、代码、Floniks 生成调用、测试与提交。你的角色从操作工具变成定方向、验成果。
Floniks 在这条流水线里到底提供什么?
经 MCP 接入后,Floniks 成为 agent 工具箱里的素材工厂:文生图、图生图、去背景、TTS、文生音乐,产物直接落进游戏素材目录——无需人搬运文件。
需要写提示词吗?
不需要。人类提供的是一行话的意图和截图反馈;Floniks 的生成提示词与引擎侧的任务分解都由 agent 自己组织。
这套流程能复现吗?
能。引擎开源在 GitHub 的 rust_bevy_lua_game 仓库,成品合集经 WebAssembly 在任何浏览器可玩,把 Floniks 接进 Claude Code 只需一条 claude mcp add 命令加上你的 API Key。
想把素材工厂接进你自己的构建循环?从 Floniks MCP 服务开始,再跟着两篇教程走:上篇做出解谜游戏,下篇交付视觉小说。

