首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动测试游戏

自动测试游戏
EN

Stack Overflow用户
提问于 2008-08-18 01:44:57
回答 9查看 15K关注 0票数 31

问题

您将如何将自动化测试添加到游戏中?

我相信你可以单元测试游戏引擎的很多功能(网络,对象创建,内存管理等),但是能够自动测试游戏本身吗?

我不是在说游戏元素(比如神族会在地图X中打败虫族),但我说的是游戏和引擎之间的互动。

Introduction

在游戏开发中,引擎只是游戏的一个平台。你可以认为游戏引擎是操作系统,游戏是操作系统运行的软件。游戏可以是脚本的集合,也可以是游戏引擎中的实际子程序。

可能的答案

我的想法是:

你需要一个确定性的引擎。这意味着,给定一组输入,输出将完全相同。这将使随机产生器被注入相同的输入。

然后,创建一个光秃秃的水平,其中包含两个对象,阿凡达/用户可以互动。从小开始,然后随着更多交互的发展,将对象添加到级别中。

创建一个脚本,它遵循路径(测试、路径查找)并与不同的对象交互(存储结果或预期的行为)。这个脚本将是您的自动化测试。经过一定的时间(例如,一周),运行脚本和引擎的单元测试。

EN

回答 9

Stack Overflow用户

发布于 2008-08-18 05:59:19

这个职位 at 对内游戏可能是相关的/有趣的。

票数 8
EN

Stack Overflow用户

发布于 2016-05-02 06:07:32

防暴游戏有一个关于使用自动测试英雄联盟(LoL)的文章,这是一个多人在线RTS游戏。

据开发者介绍,游戏代码和游戏平衡每天都有很多变化。他们构建了一个Python测试框架,它基本上是一个简单的游戏客户端,它向运行LoL游戏服务器实例的连续集成服务器发送命令。然后,服务器向测试框架发送命令的效果,允许测试响应。

该框架提供了一个事件队列,用于记录来自特定时间点的事件、数据和效果。这篇文章称之为“快照”。

这篇文章描述了一个拼写单元测试的示例:

设置

  1. 赋予一个人物这个能力。
  2. 在中线(地图上的一个位置)孕育一个敌人人物。
  3. 在中巷里生了个怪胎。(在LoL的背景下,爬行是弱的、不可控制的角色,是每个团队军队的一部分。)他们基本上是佳能的饲料,是敌人的经验和黄金的来源。但如果不加以控制,他们就能击败对方) 4.将角色传送到中线。

执行

  1. 拍摄所有变量的快照(例如来自玩家、敌人和正常字符的当前生命)。
  2. 施咒。
  3. 激活该法术的效果(例如,有一些法术会在命中时触发)。
  4. 重置法术的冷却时间,这样它就可以立即重新施放。
  5. 施咒。
  6. 激活法术对爬行的影响(在LoL上下文中,大多数法术在爬行时有不同的计算)。7.再拍一张快照。

验证

从第一个快照开始,重新播放事件,并断言预期结果(从游戏设计人员的角度来看)是正确的。可以验证的事件有:伤害在法术伤害范围内(LoL使用随机数表示攻击的方差),与玩家角色和蠕变相比较,伤害被适当抵抗,法术在其有效范围内施放。

文章表明,当从正常的游戏客户端查看测试服务器时,可以提取测试的视频。

票数 4
EN

Stack Overflow用户

发布于 2008-08-18 04:24:39

在开发的游戏方面,值是如此的随机,因此测试绝对值是一种牵强的想法。

但我们可以测试确定性的值。例如,单元测试可能让Guy刷子Threepwood向门移动(路径查找),打开门(使用命令),失败,因为他的库存中没有密钥(反馈),选择门键(路径查找+库存管理),然后最后打开门。

所有这些路径都是确定性的。通过这个单元测试,我可以重构内存管理器,如果它以某种方式破坏了库存管理程序,那么单元测试就会失败。

这只是游戏中单元测试的一个想法。我想知道其他的想法,因此,这个职位的动机。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档