利用AI技术自动测试游戏

1、引子

近年来,游戏AI已从一种“伪智能”迭代成了真正的人工智能。3年前AlphaGo的成功只是证明了AI技术在游戏领域取得了巨大的发展,但另一方面AI技术对整个游戏行业的帮助仍然不足,还有很大的挖掘空间,一个重要的方向——帮助玩家提高游戏体验,例如:AI玩家与人类玩家新的游戏模式、更仿真的NPC等等;另一个重要的方向——帮助游戏制作提高效率,例如:减少规则和行为树的编码难度、游戏测试、关卡生成等。

在这篇文章中我们重点介绍AI是如何提高游戏测试的效果和效率。

2、游戏测试中的挑战

传统的游戏开发技术已经足够成熟,但仍然无法应对今天游戏行业的高速迭代带来的挑战。

当需要测试的场景包含较多策略内容时,传统的测试方式就显得有些力不从心。常规自动化测试手段几乎只能用来保证游戏能够正常运行,而无法对游戏的可玩性进行可靠、高效的测试。

有些团队最初会使用一些基于规则的测试用例或机器人辅助测试工作,然而简单的规则通常无法充分测试游戏场景,甚至无法通关;复杂的规则又会带来巨大的维护成本。随着开发期间游戏内容的不断调整,最终不得不依赖效率相对较低的人工方式完成测试工作。

不仅如此,规则较为复杂的游戏,例如卡牌类,战棋类游戏,将会产生巨量的策略组合,凭人力极难有效覆盖所有场景。

游戏上线前的Beta测试是游戏正式上线前的重要环节之一,这项工作完全依赖参与的玩家完成。受限于参与测试玩家的水准和种种主观因素,不仅反馈周期长,测试基准和结果基本上只能通过经验筛选判断。

3、如何在测试中应用AI技术

近年来迅猛发展的AI技术,为解决测试工作中的困境带来了新的可能性。使用深度神经网络、强化学习等技术创造出的AI智能体能够像高水准的玩家一样应对复杂游戏策略,协助QA充分的完成复杂场景的测试。

通过用户数据,AI也能够模拟出不同水平玩家的真实行为,很大程度上能够替代人类玩家进行大规模测试,充分覆盖测试场景,缩短反馈调整周期。

不仅如此,由于神经网络的泛化性,AI只需要很少的调整就能应对游戏升级带来的改变,极大减少维护成本。并且AI具备可复制,可加速,测试结果稳定等特性,这些都是传统测试方法不可能做到的。

4、成功案例

自动化测试的优点在于速度快、规模大,引入AI技术的自动测试也不例外。在下面的案例中,测试工作都可以在分布式环境并行执行。游戏本身都是运行在容器中,AI智能体通过程序接口控制游戏的操作,从而模拟用户的行为。

在分布式环境测试游戏时,游戏运行在容器池中

在这里插入图片描述
AI技术在经历了学术派的游戏模拟器之后,新的行业应用往往是直接与游戏通讯,从而测试游戏的设计问题、数值问题、发现bug等等。

案例1:Cygames的卡牌组合测试

Shadowverse是一款由日本Cygames发行的卡牌游戏,从2016年发行至今一直热度不减,一个重要的原因是这个游戏每三个月就会加入一个新的卡牌包,让玩家一直有新鲜的游戏体验。

需要经常新增卡牌来保持游戏热度
在这里插入图片描述
如何测试新卡牌是一个难题。对于卡牌游戏来说,一张新卡牌被设计出来之后,它被采纳的前提是能融入旧卡牌构成的系统,即和其他卡牌配合时没有bug、不会破坏数值系统的平衡。而卡牌游戏有极其复杂的玩法,例如2个玩家,一局游戏需要5轮操作,一共10步,每步可选10张卡牌,那么就一共有100亿种玩法可能。更何况真实的游戏远一步就有多种操作,组合更加复杂。因此,传统的QA测试方法耗时耗力,严重影响游戏开发。

研究部门Cygames Research提出用神经网络技术解决测试卡牌组合的问题。他们收集了大量的游戏日志,这些日志记录了玩家们是怎么玩这个游戏的。然后把这些日志转化为可以用于训练神经网络的数据,训练出一个可以玩这个游戏的AI。AI的水平和训练数据相似,再经过复制得到很多AI。

神经网络可以复制,达到加速测试的目的
在这里插入图片描述
接下来,这些AI们就可以自动化地在加入了新卡牌的新游戏中无限地每时每刻地进行游戏对局,去发现bug和强大到不平衡的某种玩法,开发者再根据这些反馈修改或重新设计。这种方法极大地提高了效率,节省了大量的开发成本。

案例2:蒙特卡洛科技的游戏难度测试、数值微调测试

蒙特卡洛科技的自动测试框架是针对国内某著名游戏公司的一款三消游戏。三消游戏是一类广受欢迎的休闲游戏,除了精美的画面,关卡的难度变化极大地影响了游戏是否成功:过低的难度会被认为毫无挑战,过高则很容易挫伤玩家的积极性。然而,不幸的是难度这一指标线的较为主观,通常对难度的评价只能依赖经验丰富的策划人员,或是玩家的反馈。

针对测试游戏难度的问题,蒙特卡洛科技提出的解决方案是用AI技术测试过关步数。通过统计过关所需要的操作次数会获得一个步数的分布图,游戏限制的步数越少,难度就越难,过关的人数就越少。

三消游戏自动测试框架中,使用过关步数评估游戏难度
在这里插入图片描述
AI技术做自动测试的意义在于缩短测试周期。由于游戏本身的随机性很强,策划和QA的人工测试为了遇到各种运气场景,就需要更大量的测试。据计算,人工在100个关卡上的充分测试需要超过5人月,因此在传统的开发周期中测试往往被弱化。而AI技术可以在集群中计算,将这一过程缩短至数小时。

这个项目另一个有趣的拓展是辅助数值体系设计。由于三消游戏不断加入新的游戏元素,是数值体系设计的一部分。自动测试平台加速了对关卡的难度评估,也就缩短了数值体系设计的周期。

游戏策划提交正在修改的游戏之后,系统把先前在线上版本中训练好的AI智能体复制到集群中。由于新的游戏版本有差异,智能体在测试过程中需要用强化学习技术适应一段时间,AI技术的这种适应新版本的能力称为泛化能力。

适应后的AI智能体的游戏水平与线上玩家的水平仍是相似的,因此在新版本上获得的测试报告可以近似认为是线上玩家的测试反馈。数值策划根据报告修改数值,形成一个完整的测试闭环。

数值优化加入自动测试环节
在这里插入图片描述
对于游戏制作而言,数值策划微调数值体系是个很普遍的工作,除了经验和模型之外主要依赖测试。除了玩家反馈的感受之外,存在一些客观指标可以使用自动测试辅助设计,例如PVP胜率、通关时间、与氪金的比例等都是可能的自动测试指标。

除了三消游戏之外,如何加快数值调整的过程,蒙特卡洛公司称目前正在积极探索之中。今时今日,机器学习领域层出不穷的成果勾勒出的线条似乎让我们看到了未来游戏和游戏开发行业的的雏形。长久以来几乎没有太大变化的游戏AI体系,在人工智能大潮的冲击下有了无限的可能性。蒙特卡洛更期待期待能够在与游戏行业的持续合作中继续探索,寻找人工智能时代游戏领域的入口。

5、总结和展望

游戏行业有许多产品正在走向精品化,用户也越来越挑剔;游戏的制作过程、测试过程也正在走向细致化的道路。而在测试过程中引入的AI技术,正是一种把传统QA测试中的不可能变为可能,并且极大提高生产效率的手段。

除此之外,新的AI技术也在渗透到传统基于行为树的游戏AI中,使NPC、队友、对手更加智能。长久以来几乎没有太大变化的游戏AI体系,在人工智能大潮的冲击下有了无限的可能性。AI在游戏中的使命不再仅限于保证游戏体验,在模拟人类、增强游戏可玩性、提高游戏设计效率方向上有了更多的要求。相信除了IP因素之外,游戏内容的智能化也将是人工智能时代游戏领域的新热点。

作者简介

朱天驰,曾任百度基础架构部和云架构部高级工程师,现任蒙特卡洛科技(北京)有限公司首席极客,游戏AI从业者。关注机器学习和人工智能技术,并致力于数据和AI驱动的游戏行业的应用。