我一直在改进我的GDUnit4回归测试,一个定制的多人测试套件,用于测试我的游戏的同步稳定性,目前还在开发自动化游戏平衡工作流程,能够在几分钟内无头运行约30个全游戏,包括多个AI玩家。它非常有用,我不太清楚关于自动测试的讨论,所以我想分享我的设置。第一个截图是一个仪表板,提供了正在运行的游戏平衡测试的概览,第二和第三个截图是一个关于我的游戏市场价格平衡的报告(我还在工作中)。一段时间以来,我不确定它是否值得,但随着项目的增长和系统之间的相互联系增加,它变得有意义,开始将回归测试集成到工作流程中。我经常会在一个系统中进行更改,而不知道它会影响另一个系统中的值,或重新实现之前修复的错误。我已经在这上面工作了近一年了,我逐步添加测试,直到我建立了目前(并不断增长)的测试集合。它花了些时间,但在导出构建之前运行它会给我带来安心感,确保所有事情都按照预期工作。几个月前,我意识到我也需要一个可靠的方式来测试多人游戏,而不必将笔记本电脑拿出来,手动在笔记本电脑和台式机上运行游戏,设置一个大厅,并手动测试每个同步系统。它太枯燥了。所以,我建造了一个bash脚本套件,使用gamescope在另一个合成器中无头运行游戏,以便我可以在多个AI玩家和假在线身份中托管一个游戏。现在,我既可以测试我的同步系统,以确保没有脱离同步,也可以使用可配置的AI玩家数量来压力测试它,以获得性能的想法。我尚未找到可靠地测试Steam多人大厅的方法,但我的游戏既支持Steam多人(使用GodotSteam MultiplayerPeer),又支持Nakama(使用Nakama Godot插件),所以我可以在自己的Nakama服务器上模拟在线身份,并使用这些身份来测试连接的可靠性。一个好的副作用:它也让我能够轻松监控整个游戏中AI的性能,以便我可以根据需要调整它。最近,我试图平衡我的游戏中的市场,但我发现平衡很难。除了我的游戏试图模仿真实市场条件外,还有许多控制市场价格的值:供应、需求、价格弹性、基准价格(参考)和几种更多的值。大部分基础设施都已经准备好了——多人测试套件已经可以无头运行AI游戏,我只需要确保它正确地运行所有核心游戏系统,然后监控游戏中每种商品的价格。现在,我可以输出关于游戏中商品价格的报告,调整值,然后重新运行测试。它使迭代变得更加容易。如果有人正在考虑自动测试,我会说它取决于:对于主要由“系统”驱动的游戏而不是“内容”驱动的游戏,它是无价的。如果我游戏是如此,我认为它是无价的,但我不认为它会对许多游戏(例如故事或内容驱动的游戏)有价值。我有市场价格、股票价格、公司财务计算、AI行为、多人游戏中的数据同步,还有很多更多的系统。所有这些系统都相互影响。游戏很少有故事,更多是沙盒游戏。希望你会发现这像我一样有趣!