我正在开发一个风格类似《吸血者生存者》的游戏(Facemelter在Steam上)(https://store.steampowered.com/app/2995740/FACEMELTER/),我手写了该游戏的大部分代码。

免责声明:

我偶尔使用了Copilot的代码自动完成功能。 我说偶尔是非常明确的,因为我通常够快,自动完成通常在我将大部分代码写完之前就无法提供建议,剩余的时间是它试图建议下一行... 通常,大多数时间它都是错误的,除非我是在顶部声明类成员时遵循模式,它偶尔可以猜测出来。

免责声明的原因是当然,我知道有一群非常强烈反对AI的观众,基于我即将要讨论的主题,我怀疑我会遭到大量批评 - 有些是合理的,有些是有争议的,如果人们认为这是一种"a·的首要项目"- 它不是

因此,我们来看看我做了什么。

问题:

我的敌人生成解决方案看起来挺有弹性的,但有一个错误:有时敌人会在场景边界外生成。 我难以理解为什么(复杂性 + 随机圆形生成半径 + 用于确定是否放置于墙壁或建筑等等的射线)。

所以,感到沮丧的时我试图修复这个问题时,我想出了另一种生成方法:从场景地图获取"地面"层,然后从它中减去"建筑物"层的位置。 其中剩余的就是有效生成点。 然后选择X个在怪物应该生成的区域内的坐标点。

听起来很棒,因为没有物理计算,就在场景开始时迭代过地图,然后每次生成时进行数学计算(向量距离计算)。 会不会比射线检测更轻量级?

但就像你都一样,保住我的项目很难,我擅长工作,妻子,儿童,我主要是在周末在这一边进行项目。

当我测试这个而不是让我的项目侧入一个星期或两个星期里 ?

解决方案:

然后我想 - 我能用AI解决这个了吗?

如果我想要做得 "正确"而不需要一个全职专业的QA团队,但我是如何做的呢?

所以一般来说,我会实现A/B测试..

1:保持当前的生成解决方案(A)

2:创建一个代码路径/切换到替代解决方案

3:创建一个类来跟踪我关心的指标(生成X个怪物需要多少毫秒,有多少帧时间等)。 它将在每次运行后将其保存到磁盘的累积保存文件中。

4:在我的CheatCodes类中创建一个将代码路径切换的键(N键)

5:在我的 CheatCode类中创建一个运行测试的键(B键)

5:在(B)代码路径中实施替代生成系统

6:测试每个场景

7 : 比较

所以我把上述计划放在Claude Code上,让它完成了所有这些 - 除了测试阶段是手动进行的(启动游戏,按B键测试,关闭,启动游戏,按N键切换代码路径,按B键测试,关闭)。

并且结果是?

我的这个大胆的想法是23%的不良表现。

所以,我删除了该代码分支并继续使用我的原版手写解决方案。

后续思考:

显然,对于单人开发者来说,一个大大的好处是,在1.5个小时的时间内完成了测试,耗费的时间要比不使用AI助手的情况下长得多。 这样做验证了我的当前方法的有效性,从而让我有更多的时间直接为游戏做事。

但下方的缺点/伦理问题是: “如果新解决方案更快?”

是否要仅仅使用AI产生的代码就继续前进? 通过AI爱好者的眼光这很容易回答,但是对于反对AI的群众来说,显然我应该避免使用AI进行测试。

但我又不是这两者,我认为AI是一种工具。 它产生了一大堆的文本-有些是明显的废话,更多是有意思且需要复eview的。

因此,对于我来说,这是一个更难的问题 - 我已经以手动编码方式开发15年了,完全编码并不难,而且我喜欢知道我的代码非常熟悉。 我通常知道哪个文件打开以及哪些更改用来实现每个功能或错误。

然而,通过A/B测试过程,我将拥有比我最初编写的更好的代码,这是很难抛弃的。

所以,我的直觉是如果我的原始代码和替代解决方案性能之间有差异,可能我会尝试编写此代码以使其符合我的编写方式,从而取胜。

但今天,我运气特别好,我原来的代码更快,所以我唯一感到自责的是使用了一些AI tokens来写测试程序和手动测试了30分钟。

但设想即使没有AI,它可能需要我10个小时来做; 我使用AI tokens的一个小时和30分钟的测试耗费的能量与我的电脑使用10个小时的总能量相比会吗? 我不知道会不会。