Olá pessoal,

我们两个——一个产品经理和一个3D/2D艺术家——刚刚发布了我们的第一个游戏作为CariocaRealm,我们的独立工作室。这篇文章是关于使用AI辅助开发流程的开发流程,使得一个没有完整工程背景的人可以发布一个Android游戏。

这个游戏是Super Heart Attack——一个Android上的超级心脏病游戏。

但是这篇文章真正是关于开发流程。


🧠 基本上改变了的想法:规范化的合同

在开始时,我尝试了最明显的方法:在聊天中描述一个功能,获得代码,粘贴,修复错误并重复。对于小功能来说是有效的。对于涉及多个文件、Phaser场景事件或共享状态的任何事情来说,都完全崩溃了。

解决问题的关键改变:我停止要求Claude直接编写代码,开始要求他编写一个规范。

一个规范文件(保存在.planning/phases/中)包含:

  • ASCII布局组件
  • 行为描述(按元素)
  • 常量块(精确的变量名称、Phaser事件名称、资源路径)
  • 明确的限制(“在这一阶段不要修改Food.js”)
  • 基于Grep的接受标准(“检查HUD.js是否包含scene.events.on('combo-update')”)

然后我将该文件作为约束文件传递给Claude Code(CLI的代理)作为锚定合同。

结果:代理停止混淆变量名称,停止访问不应该访问的文件,并产生了确实符合现有架构的代码。

🛠️ 堆栈

  • Phaser.js — 游戏引擎(场景事件架构)
  • Capacitor — Android打包(web→native,without React Native)
  • Firebase — 身份验证、Firestore(全球排名)、分析、远程配置
  • AdMob — 通过@capacitor-community的u/capacitor-community进行的盈利
  • Vite — 构建工具

🤖 我们是如何分担AI工作的?

我的合作伙伴(3D/2D艺术家)负责所有原始艺术和动画(精灵、效果、视觉身份。没有使用AI生成的艺术,所有工作都是原创)。

在开发和产品方面:

Claude(主要是Sonnet,但我也使用它来编写Gemini Flash的IDE Antigravity):

  • 架构决策和平衡
  • 编写规范——将模糊的资源想法转换为结构化的Markdown,使一个代理可以执行

  • Geração de código via Claude Code(CLI)基于规范

  • 文件上下文相关的调试会话

Gemini:

  • 视觉概念和布局草图作为参考给我的合作伙伴
  • 迭代指导活动(快速生成,用于灵感)(板条箱)

知道哪个工具使用避免了大量上下文的浪费。

Claude更擅长于架构和代码合同。

Gemini更快于视觉迭代。

⚠️ 那些破坏了(以及为什么)

  1. 图片作为唯一的规范

粘贴一个截图并说“让它像这样”生成了一个看起来正确的代码,但实际上有错误的事件名称、资源路径和静默地打破了其他场景。图片告诉Claude 是什么,但不是 如何融入现有的代码基础。

修复:图片作为 布局参考,规范文件作为 约束

  1. 长期会话中上下文的偏离

对于复杂的功能,最初的指令在15条消息后被忽略。

修复:重新启动会话并从规范文件中注入新的上下文,而不是继续一条被破坏的线程。

  1. AdMob和AdSense的混淆

我问Claude关于盈利配置而不具体指出——收到了相互矛盾的答案,因为我混淆了两个产品。

修复:在所有关于盈利的询问中始终提及确切的SDK(@capacitor-community/admob)。

🎮 游戏

Super Heart Attack — 避开坏的食物,收集健康的食物,生存,升级全球排名。免费的Android游戏。CariocaRealm的首次发布。

👉 https://play.google.com/store/apps/details?id=com.superheartattack.app

第一周:超过10个下载,0个评分。战斗真实😅

我很乐意深入任何方面的内容——规范流程、Phaser + Capacitor的集成、Firebase的排名或Play Store的发布。


你是如何使用AI的?