问题
您将如何将自动化测试添加到游戏中?
我相信你可以单元测试游戏引擎的很多功能(网络,对象创建,内存管理等),但是能够自动测试游戏本身吗?
我不是在说游戏元素(比如神族会在地图X中打败虫族),但我说的是游戏和引擎之间的互动。
Introduction
在游戏开发中,引擎只是游戏的一个平台。你可以认为游戏引擎是操作系统,游戏是操作系统运行的软件。游戏可以是脚本的集合,也可以是游戏引擎中的实际子程序。
可能的答案
我的想法是:
你需要一个确定性的引擎。这意味着,给定一组输入,输出将完全相同。这将使随机产生器被注入相同的输入。
然后,创建一个光秃秃的水平,其中包含两个对象,阿凡达/用户可以互动。从小开始,然后随着更多交互的发展,将对象添加到级别中。
创建一个脚本,它遵循路径(测试、路径查找)并与不同的对象交互(存储结果或预期的行为)。这个脚本将是您的自动化测试。经过一定的时间(例如,一周),运行脚本和引擎的单元测试。
发布于 2008-08-18 05:59:19
这个职位 at 对内游戏可能是相关的/有趣的。
发布于 2016-05-02 06:07:32
防暴游戏有一个关于使用自动测试英雄联盟(LoL)的文章,这是一个多人在线RTS游戏。
据开发者介绍,游戏代码和游戏平衡每天都有很多变化。他们构建了一个Python测试框架,它基本上是一个简单的游戏客户端,它向运行LoL游戏服务器实例的连续集成服务器发送命令。然后,服务器向测试框架发送命令的效果,允许测试响应。
该框架提供了一个事件队列,用于记录来自特定时间点的事件、数据和效果。这篇文章称之为“快照”。
这篇文章描述了一个拼写单元测试的示例:
设置
执行
验证
从第一个快照开始,重新播放事件,并断言预期结果(从游戏设计人员的角度来看)是正确的。可以验证的事件有:伤害在法术伤害范围内(LoL使用随机数表示攻击的方差),与玩家角色和蠕变相比较,伤害被适当抵抗,法术在其有效范围内施放。
文章表明,当从正常的游戏客户端查看测试服务器时,可以提取测试的视频。
发布于 2008-08-18 04:24:39
在开发的游戏方面,值是如此的随机,因此测试绝对值是一种牵强的想法。
但我们可以测试确定性的值。例如,单元测试可能让Guy刷子Threepwood向门移动(路径查找),打开门(使用命令),失败,因为他的库存中没有密钥(反馈),选择门键(路径查找+库存管理),然后最后打开门。
所有这些路径都是确定性的。通过这个单元测试,我可以重构内存管理器,如果它以某种方式破坏了库存管理程序,那么单元测试就会失败。
这只是游戏中单元测试的一个想法。我想知道其他的想法,因此,这个职位的动机。
https://stackoverflow.com/questions/14087
复制相似问题