测试通过,构建成功,游戏仍然看起来像烂泥一样丑陋。测试无法检测到卡片在HUD后面渲染或金币显示24而不是120。只有通过实际游戏才能发现这些问题。所以我懒得了,自己造了一件东西来帮我找问题。

它是Godot 4.6 + C#。两个小功能:

跳转到任意状态。每个屏幕都是一个scenario json文件,所以我可以直接跳到“商店120金币”或“第3关,boss前面”而不用玩完。只需输入一个命令就可以了。无需点击五波来检查一个傻瓜式的布局调整。

自动截图。一个autoload监听我的事件总线,并在每个实际上看起来不同的状态下(商店开启,波浪胜利等)dump一个png文件,按游戏顺序命名。有一件事情花了我整个下午:你必须在捕捉截图之前延迟一帧,否则截图的是帧之前的视觉更新,慢慢地你会发疯地想知道为什么按钮不在那里。

然后我就把png文件直接扔给Claude,它读取屏幕,HUD数字,捕捉重叠和空白面板,告诉我问题所在。

花了我一段时间来理解的部分:因为每个截图都是从一个真实的场景状态来的,所以AI看到了实际有效的游戏状态,而不是我随便点击的半破碎状态。它是基于一个真实的商店,真实的金币和真实的手。虽然它仍然可能会错,但它错得多少的时候它看的是一个合法的状态而不是垃圾。

onestly “从任意状态开始 + 自动截图 + 让AI看”这个组合把“重新玩整个游戏”变成了一个命令,我再也不想回去。

它是一种反向防御塔牌堆叠游戏,意味着有上百种不同的屏幕都可能会破裂,这就是我要自动化的原因。

有其他人想分享一下让AI玩游戏来抓bug的技巧吗?