大家好,

快速说明:我最初用西班牙语写这篇帖子,然后用 AI 翻译并润色成英文,但下面的所有技术细节和轶事都是 100% 真实的。

我最近在 Godot 4 中构建了 Notrunner,一款垂直的赛博朋克闲置 RPG。

游戏以桌面端“霓虹水族馆”的形式运行:你的跑者在雨中的城市街道漫游,接任务,黑客入侵环境设备,并使用经典桌面 RPG 数学(属性 + 技能 + 1d10 对抗 DV)与帮派战斗。点击是可选的,仅用于加速。游戏没有广告,无内购,无联网,且请求零个 Android 权限。

我想分享工作流程的演变过程,因为 AI 走了一些意想不到的路。

1. 2.5D 转变与 ComfyUI 的惊喜

起初,游戏是一张平面、分层的像素艺术原型。我让 AI 将视角转为 2.5D 并加入动态 2D 光照,但我没有告诉它 如何 实现。

它的第一次尝试是通过使用基本几何形状的代码生成 procedural 图形。虽然运行了,但外观非常平淡。

几天后,我想生成数字化的语音剪辑和音效,于是我给了该代理对本地媒体生成容器的访问权限。

未经我请示,代理(Claude Opus 5.5)发现了我的本地 ComfyUI 容器(通过 Docker 本地运行 SDXL)。它没有只处理音频,而是主动用 Python (tools/arte/build_ilustrado.py) 构建了完整的资产管道来替换几何占位符:

  • 提取法线贴图 (_n.png): 扩散模型只输出平面 2D 图像。为了让角色对 Godot 的点光照做出反应,脚本将精灵从平坦背景中分离,并从轮廓向内运行迭代形态 MinFilter,计算边缘到中心的高度距离,为躯干创建一个圆柱形体积。将其与绘图的光照混合并运行 Sobel 滤波,生成法线贴图,能够捕捉附近街灯和枪口闪光的轮廓光。

  • 提取发光贴图 (_e.png): 它扫描高亮度、高饱和度的像素,以隔离霓虹夹克装饰、赛博眼以及纹身,并将其保存为发光层,以便在黑暗中发光。

  • 湿润的光泽贴图 (_s.png): 为沥青生成光泽贴图,其中光滑、较暗的区域表现为反射水洼。

2. 主角行走循环:ComfyUI 到 Gemini 视频

扩散模型在多视角保持服装一致的精灵表时表现不佳。

为次要 NPC,代理编写了一个自定义顶点着色器,使腿在臀部下像剪刀一样弯曲。

对于主角,我们想要真实的行走帧。解决方案是:

  1. 在 ComfyUI 中生成基础角色。

  2. 将该静态图像输入 Gemini,生成角色在中性工作室背景(正面、背面和侧面视角)上行走的图像到视频剪辑。

  3. AI 编写了一个自动化处理脚本 (tools/arte/build_paseo.py),使用 ffmpeg 和 Pillow。它提取帧、去除背景且不留色彩光晕、找到最干净的循环步幅(左脚、右脚),稳定边框以消除抖动,并将最终精灵条以及其法线和发光贴图导出。

3. 代币现实:Opus 5.5 + Gemini Flash 3.8

我开始几乎所有工作都使用 Claude Opus 5.5。它负责了繁重工作:系统架构、解耦的战斗数学以及图像处理脚本。

然而,不到一周我就消耗了:

  • 我的整个月度计划配额,
  • 一次免费的月度刷新,
  • 加上 100 美元的额外 API 令牌。

因此,我改用混合设置,并引入 Gemini Flash 3.8(带 Argon)用于微调、快速重构、性能修复和 UI 精修。结果它成为了一种平衡:Opus 用于架构结构和复杂工具设计,Gemini Flash 用于快速迭代和预算控制。

4. 完全自动化部署(Google Play API + Chrome 分析)

为避免在仪表盘上花费数小时点击,发布流程已被脚本化:

  • Godot 构建与验证: 无头导出模板编译 APK 和 AAB,并验证清单中没有请求的权限。

  • Google Play 控制台: Python 脚本 (tools/subir_google_play.py) 使用 androidpublisher v3 API 直接上传 AAB。它支持 --internal 轨道用于测试构建,以及 --prod 轨道用于全面发布。

  • Itch.io 与 GitHub: 发布使用 Butler CLI 和 GitHub CLI (gh release) 推送。

  • Chrome 配置技巧: 对于没有 API 或需要 2FA 的 Web 仪表盘,我建立了一个本地专用的 Chrome 配置文件,里面已登录。AI 使用该配置文件检查商店列表、验证截图渲染以及检查商店文本格式,而不受机器人检测阻碍。

结果

如果你想看看光照和节奏效果,可以在这里查看游戏:

如果有人想查看法线映射脚本、着色器代码或无头 Google Play 上传设置,我在评论区。