自动进行游戏测试为游戏模拟创建虚拟玩家

通过创建虚拟玩家(玩游戏的代理),然后使用游戏模拟来大规模运行自动测试,可以轻松实现游戏测试自动化。请继续阅读三个案例研究,了解 iLLOGIKA、Furyion 和 Ritz Deli 如何创建虚拟玩家--将近 40,000 小时(约 4.5 年)的自动游戏测试卸载给游戏模拟。
游戏之所以具有测试的挑战性,与游戏之所以有趣的原因是一样的--玩家可以自由塑造自己的体验。因此,游戏中出现 bug 和设计缺陷的表面积很大。开发人员必须经常进行测试,测试覆盖面要广,才能解决问题,可靠地按期完成任务。
过去,开发人员会在高频率的低覆盖率测试(CI 管道中的单元测试)和低频率的高覆盖率测试(主要版本发布前的测试)之间做出选择。
我们构建了Unity 游戏模拟,帮助开发人员以游戏测试的覆盖率和单元测试的频率进行测试。Unity Game Simulation 使开发人员能够在云中运行自动游戏测试。要使用 Unity 游戏模拟:
创建虚拟玩家(玩游戏的代理)。
使用游戏仿真软件包对游戏进行仿真。
实施可远程配置的参数,模拟游戏的不同变化。 实施衡量标准,记录回答设计问题所需的数据。
使用 "游戏模拟 "软件包创建游戏并将其 Build 上传到我们的服务器。
在游戏模拟用户界面(UI)上运行数千次游戏。
本博文主要介绍步骤 1--创建用于自动测试的虚拟播放器。第 2-4 步简单明了,在《游戏模拟》文档中已有介绍。您现在可以免费试用 Game Simulation。
虚拟玩家模拟真实玩家的输入,以测试游戏的某些方面。对于简单的测试,例如验证游戏是否能运行 60 分钟而不会触发异常,虚拟播放器可以是一个简单的 C# 脚本,只需几行代码就能启动一个场景并执行随机操作。
对于更复杂的测试,例如验证所有武器的强度是否大致相同或每个关卡是否都能完成,可以使用创建非玩家角色(NPC)的常用方法创建虚拟玩家。它们有:
- 启发式脚本规则或算法非常简单的脚本
- 行为树: - 由条件和任务组成的计划可视化表示法
- 有限状态机虚拟播放器交替使用一些状态的脚本,例如,寻找和攻击
- Unity 人工智能规划器:具有直观 Unity 编辑器 UI 的可视化规划框架
- 使用Unity ML-Agents 工具包进行强化学习和模仿学习:看看我们是如何使用 ML-Agents 为 Jam City 的Snoopy Pop 创建虚拟播放器的。
下面我们将重点介绍三家工作室如何创建虚拟玩家,将近 40,000 小时的游戏测试集体卸载到 Unity Game Simulation。尤其值得注意的是,这三家工作室都能通过游戏模拟获得巨大的价值,而创建虚拟播放器的方法却相对简单。
独立工作室 Ritz Deli 开发了《橡皮擦大爆炸》,这是一款连线式益智游戏,有 50 多个角色,每个角色都有独特的游戏特点。Ritz Deli 使用 Unity 游戏模拟器运行了数百次模拟,以确保每个角色随着 XP 等级的提高而产生不断增加的分数和硬币数。
Ritz Deli 的首席技术官兼技术主管 Eric Jordan 需要创建一个能够解决链接器式谜题的虚拟播放器。他基于简单的启发式贪婪算法,用 C# 脚本实现了虚拟播放器。对于"橡皮擦爆炸",算法会匹配同类型气泡的最长可能链:
创建所有可能的单一气泡选择集合。
未知块类型"__block",请在 "serializers.type "道具中为其指定一个序列化器 未知块类型"__block",请在 "serializers.type "道具中为其指定一个序列化器
从有效气泡中选择匹配数最多的气泡。
重复步骤 1 和 2,直到没有可用气泡有效匹配为止。
更新总分和奖励金币的指标。
iLLOGIKA 是玩家对玩家(PvP)跑酷游戏Rogue Racers 的幕后工作室。iLLOGIKA 利用游戏模拟来测试每种卡牌组合,以确保任何卡牌或卡组都不会过于强大。
iLLOGIKA 公司的开发人员使用 C# 脚本创建了一个虚拟播放器:
让虚拟玩家通过射线侦测发现即将出现的障碍,然后通过切换车道、躲避或跳跃来避开它们,从而成功到达比赛终点。
添加一系列规则,根据游戏状态,包括玩家当前的健康状况、其他玩家的相对位置、他们的卡牌能力等,说明何时使用卡牌。
未知块类型"__block",请在 "serializers.type "道具中为其指定一个序列化器
对于步骤 1 和 2 中描述的每个行动,选择一个不正确但可能的行动,以考虑真实玩家的不可预测性。
Furyion 是《死亡嘉年华》(Death Carnival)的开发商,该游戏是一款自上而下的射击游戏,拥有独特的武器插槽系统,玩家可以从十万多种可能的武器、弹药和武器模块组合中进行选择,每种组合都能带来独特的游戏体验。
福瑞恩公司创始人兼总监 Herbert Yung 使用一种名为 Behavior Designer 的行为树创建工具创建了一个虚拟播放器,以估算每种武器、弹药和武器模块组合完成关卡的平均时间。随后,赫伯特用 Unity 游戏模拟器进行了数千次模拟,测试每种武器的插座组合,节省了 600 多个小时的游戏时间。
Herbert 利用直观的行为设计器用户界面和行为设计器中的许多现成任务创建了虚拟播放器:
如果敌人在攻击范围内,则攻击该敌人。
如果射程内没有敌人,则向出口移动,直到射程内出现敌人。
重复步骤 1 和 2,直到没有敌人为止。
导航到关卡结束处的大门,一旦关卡正式结束,就调用 Application.quit()。
有关如何使用 Behavior Designer 创建机器人的更多信息,请参阅Behavior Designer 的资产商店页面上的文档。
Unity 游戏模拟团队致力于帮助您创建用于自动测试的虚拟玩家,首先是用于 QA 测试的虚拟玩家。如果您想率先试用我们的新工具和功能,为 QA 测试创建虚拟播放器,请联系我们。
了解有关Unity 游戏模拟入门的更多信息--您甚至可以免费试用。如有任何问题,请联系游戏模拟团队。
