我如何在一个周日打造音乐游戏(由茶、混乱和AI驱动 🤣🎧🔥)

发布: (2025年12月9日 GMT+8 23:50)
6 min read
原文: Dev.to

Source: Dev.to

一切始于星期天上午 7:30。早餐吃了一个煎蛋三明治,喝了一杯 Cardemon Ahmed 茶,我在刷网页时脑中响起一个声音:“做点什么吧”。于是我决定用我的未发布曲目、Expo 和 React Native,做一个音乐驱动的游戏,并为移动端和网页实现倾斜控制。

🔊 音频分析:先扫描,后上传

计划很简单:

  • 在本地分析每首曲目
  • 提取频段、包络、节拍和 BPM
  • 将分析结果保存到数据库,这样游戏运行时就不需要再次分析音频
  • 在运行时即时加载几何体

Bolt.new 帮助配置了 Supabase。把项目指向我自己的 Supabase 实例后,迁移自动完成。

一个小脚本(在 AI 的帮助下编写)完成了整个流水线:

  1. 分析每首曲目并生成几何数据。
  2. 将几何数据上传到 Supabase。
  3. 分析完成后,再把原始音频文件上传到 Supabase Storage。

整个过程大约用了两小时,得到了一套可直接使用的关卡库。

🌀 绘制关卡:频率折磨测试

利用分析数据,我塑造了隧道:

  • 低音 → 大幅移动
  • 踢鼓 → 隧道挤压
  • 高音 → 微小抖动
  • 安静时段 → 宽阔空间

Bolt.new 的快速 “push‑code‑rebuild‑test” 循环(通过 Expo QR 或网页预览)让我能够快速迭代,直到视觉效果变得有趣。

🎮 游戏逻辑、页面、UI、玩法骨架

隧道形状满意后,我加入了核心玩法组件:

  • 主菜单
  • 游戏界面
  • 计分系统
  • 玩家移动与碰撞更新
  • 重启逻辑
  • 加载界面
  • 小幅 UI 调整

随后我切换到 VS Code,以获得更细致的布局控制并实现预加载器。

🧠 在 VS Code 中首次使用多代理

这是我第一次在 VS Code 内部使用多代理工作流。我为不同任务分配了不同的代理:

  • 代理 1 – 游戏逻辑
  • 代理 2 – 投射物速度与物理
  • 代理 3 – UI 间距修复
  • 代理 4 – 辅助组件生成
  • 代理 5 – 敌人模式设计

结果感觉像是一个小而混乱的开发团队住进了我的编辑器——而且没有咖啡休息时间。

🎨 获取图形:登场 Gemini Nanobanana 🍌✨

因为我不是艺术家,我使用 Gemini Nanobanana 完成以下步骤:

  1. 生成配色方案。
  2. 基于配色方案创建素材。
  3. 导出全部内容。
  4. 在 Photoshop 中清理素材(裁剪、调整大小、去除背景)。
  5. 让 VS Code 代理把占位 SVG 替换为新的 PNG。

游戏瞬间变得更加鲜艳,虽然有点霓虹感——正是我喜欢的风格。

⚡ 添加敌人、强化道具、护盾及其他有趣内容

有了图形后,我层叠加入了更多玩法要素:

  • 敌人
  • 强化道具
  • 护盾
  • 视觉特效
  • 受击反馈
  • 大量细小细节

每一次添加都像是 “再来一点”,但它们共同丰富了体验。

🏆 排行榜时间

因为关卡会无限循环,我加入了高分榜和用户资料:

  1. 使用 Bolt.new 设置 Supabase Auth。
  2. 调整策略,使用户自动创建并可以更新显示名称。
  3. 实现一个从 Supabase 读取的排行榜。

在 AI 辅助配置下,设置过程非常快。

🚀 最终构建、部署与就寝

当所有功能都正常时:

  1. 构建应用。
  2. 将代码推送到 GitHub。
  3. 在 GitHub Pages 部署网页版本。
  4. 在手机上测试并修复小 bug。

22:00 时我已经筋疲力尽但兴奋不已。躺在床上玩了几局,看到自己这奇怪的作品笑了笑,然后入睡。

最后感想

我还能花更多时间打磨吗?当然可以。
但对于仅仅一个星期天的编码来说,结果已经疯狂得让人满意——以好的方式。AI 并没有取代我,而是放大了我的工作流,消除了繁琐任务,让我保持在 “流状态”。这个星期天成了我很久以来最有趣的编码日之一。

Life = good ❤️🎧🚀

Back to Blog

相关文章

阅读更多 »