用 GPT-6 Astra 做一款 Game Boy Advance 游戏

查看原文 HN 讨论

文章摘要

Sprite Fusion(一套像素美术工具站)的作者 Hugo Duprez 写了一篇实验记录:他用 GPT-6 Astra 从零做出了一款能在真实 Game Boy Advance 硬件上运行的 ROM 游戏,名叫 Bowch!。文章配了一张游戏跑在他那台银色 GBA SP(AGS-001)上的照片。

为什么是 GBA,为什么是这个游戏

灵感来自他小时候玩过很多的那款 Flash 游戏 Bowman——一个调整角度和力度、想办法射中对手的极简射箭游戏。而选 GBA 则是纯情怀:这台 2001 年的掌机是他童年最想要的东西,他先玩了很久的 Game Boy Micro 才拿到 GBA,第三世代宝可梦至今是他最珍视的游戏记忆之一。他想验证的问题很直接:2026 年的 LLM 能不能为 GBA 做一款游戏? 结论是能。

过程:不是一次 prompt,而是分阶段迭代

文章最有价值的部分是它完整公开了每一轮的 prompt 原文,可以清楚看到作者的注意力是如何从”能跑”转向”好玩”的。

第一轮——定义核心循环:他在初始 prompt 里规定了单人回合制弓箭对决、中世纪像素风、调整角度和力度后放箭、镜头跟随箭矢落点、箭矢受重力和风影响的抛物线飞行、双方有血量、爆头伤害高于身体、三局两胜制;敌人 AI 要有可信的瞄准失误并分难度档;D-pad 调角度和力度,A 键射击,Start 暂停;用 GBA 原生的 240×160 分辨率;美术资源通过 Sprite Fusion 的 API 生成(他把 API 文档链接和 .env 里的 key 一并给了模型);最后交付一个他能在模拟器里测试的 .gba 文件。

结果是可以玩,但缺乏他期待的特效和”手感”(juice)。

第二轮——距离感与美术方向:他要求把敌人放到远得超出初始视野之外,这样玩家必须先判断距离、试射一箭、看着弧线、再调整下一箭;加一个按住 R 键”侦察”敌人、松开返回的机制;镜头要跟随箭矢(包括飞出初始屏幕上方的高抛射);同一回合内风力保持恒定(这样上一箭才有学习价值),回合之间才重新随机距离和风;场景换用带黄昏天空、山脉和远景树木的 CC0 像素背景并加视差;敌人外形要和玩家明显不同,并要求先给他看几个设计方案再做动画。

第三轮——手感与”juice”:这是篇幅最长的一轮,细致到近乎苛刻。放箭时弓箭手要有小幅后坐、弓弦附近有粒子、脚下扬起尘土;箭矢沿飞行方向旋转,拖一条沿真实曲线路径、从亮色经金色渐变到暗暖色的短尾迹;少量碎屑从尾迹剥离、减速、消失,且箭矢命中后已有粒子还要继续运动一小会儿;瞄准辅助线只能是弓前一小段暖色圆点,指示发射方向但不暴露完整弹道;命中要通过精灵闪白、描边和接触点小爆发立刻可读,角色被击退再回弹,镜头短促衰减式抖动(爆头和致命一击更强)而界面保持不动,伤害数字上浮、血条带延迟的”残影”下降;血液效果要夸张但有简单物理——大部分沿来箭方向喷出、少量反向,先是短流再碎成液滴,大滴落地能产生一次次级溅射(明确禁止无限连锁),留下会逐渐变暗的浅色污渍并保留到下一回合;风要在世界里可见——地面草丛错开动画相位以免同步摇摆、树叶按风力方向和强度飘过战场、无风时没有飞叶。

最终 prompt 则是把前面所有决策整合成一份完整的构建说明书,甚至指定了技术实现细节:用独立的 C 和 ARM 汇编、定点数物理、有界的粒子存储、目标约 60 次/秒的游戏更新;把装饰性随机数与玩法随机数分开,确保视觉特效不会影响风力、敌人决策或射击结果;用 GBA 音频硬件做弓弦声、身体和头部的不同命中音、泥土声、菜单反馈和胜负短句。

作者的结论

他说最让他震惊的不是生成了代码,而是这台机器用纯 C 写完整个游戏、零错误地为 GBA 交叉编译、并自主使用所有工具(美术 API、模拟器测试等)来贯彻他的艺术指导。

但他给出的教训并不是”AI 万能”,而是一句相当克制的话:从 LLM 手里拿到一个粗糙原型很容易,把它做到优秀也出乎意料地容易——两者唯一的区别在于,你知不知道它应该是什么样子、什么手感。 如果你心里没数,对着 LLM 说”让它更炫一点”是救不了你的。至于这种直觉怎么培养,他的答案是让自己更多地接触艺术和创作(不限于游戏领域),以此强化”识别出自己为什么喜欢某个东西”的能力。

文章页面内嵌了用 EmulatorJS + mGBA 做的浏览器版可以直接试玩,也提供 ROM 下载。使用的工具链是:GPT-6 Astra 负责开发、Sprite Fusion 负责像素美术生成、场景背景来自 Ansimuz 的 CC0 素材。

HN 评论精华

这条 Show HN 拿到 17 分,但只有 2 条评论,完全没有形成讨论。以下是全部内容:

blacksoil:「这挺酷的!」

Wolfmans55:「今天才知道『Game Boy Micro』是个真实存在的东西。」——这条指向文章开头那句作者童年回忆(他在拿到 GBA 之前玩了很久 Game Boy Micro)。有意思的是,全帖唯一一条带信息量的评论,聊的是一台 2005 年的掌机硬件,而不是 AI。

需要如实说明的是:这个帖子几乎没有引发任何讨论。既没有人追问 GPT-6 Astra 在为 GBA 做交叉编译时的实际失败率和迭代次数,也没有人质疑”零编译错误”的说法,更没有出现同期其他 AI 编程帖子里那种关于 vibe coding 的价值争论(对比本期第 61 条 Fly By,同样是 AI 辅助做游戏,那边爆发了长达数十楼的激烈交锋)。本文摘要的绝大部分内容来自原文本身,评论区基本是空的。