《黑魂》开发商FromSoftware:面对困难,游戏AI研发如何做?
GameLook报道/游戏开发者大会CEDEC 2020的第三天(9月4日),FromSoftware发表了题为“想研究游戏AI!不具备条件的研究开发部门在已经发售的作品中搭建实验场”的演讲。
本演讲由FromSoftware 研发部的ヘン・ジャンフィリップ先生带来,演讲中披露了游戏开发的研发部门(后文简称R&D)在研究游戏AI时应该克服的困难,为了克服这些困难所采用的方法,以及开发用AI研究的示例与展望。
ヘン・ジャンフィリップ先生
研究开发部门在研究游戏AI时所遇到的困难
R&D一般不直接参与游戏开发,他们的主要工作是开发程序库以及工具,调查可以使用的技术以及对调查之后的技术进行研究。而FromSoftware的R&D,特别重视如何将这些技术导入游戏内。
这些研究中自然也包含游戏AI的研究。游戏中AI的职责包括,控制NPC的操作以及Debug,游戏整体的控制、自动调节、环境分析等等。AI中包括Script、Behavior Tree、State Machine等等古典的模型以及近年来备受瞩目的强化学习以及机械学习等等模型。
R&D如果想要进行AI研究,那么“AI实验场”不可或缺。其原因是,研究AI时要经过不断的反复实验,因此一个可以实验很多方法的环境必不可少。
如果R&D想要以研究为目的搭建一个实验环境,最简单的方法是搭建出一个“方便进行实验的环境”或者“像是迷你游戏一样的环境”。这种环境方便操作,有时候看起来一切正常了,但将游戏AI实际导入游戏中时还是会出现问题。
也就是说,因为仅仅在方便研究的环境对AI进行了检验,在转到像游戏这样情况复杂,存在制约的环境中时,就会发生意想不到的问题。这样的话,为了导入游戏AI就要付出很大的代价。而这一点游戏开发现场也很清楚,因此无法随意进行尝试。
而就算强行推进AI的导入,也会遇到很多问题,而问题如果没能完全解决的话,也会伴随着很大的风险。
为了避免这样的失败,显然就需要一个既能考虑到游戏开发时会遇到的问题和限制,又适合开发使用的,与游戏相近的环境作为实践型AI的实验场。
但要求R&D去搭建一个实践型AI实验场非常困难。正如文章开头所说,R&D并不直接参与游戏开发,因此没有搭建与游戏相近的环境的技巧。想要强行推进环境的搭建的话,就会需要庞大的工作量,要想将之与R&D原本的业务共同推进根本不现实。
而其他搭建实践型AI实验场的方案还有两个,“利用已有的环境”和“直接参与游戏开发”。
已有的AI环境有“ALE(Arcade Learning Environment)”,“ML-Agents”或者提供了AI用的API的《星际争霸2》。虽然如果能够利用这些环境的话,R&D就不用独自开发了,但它们并没有公开;就算公开了,由于权利问题也无法使用;就算能够使用也会存在全是迷你游戏和怀旧游戏的问题。而且近年来出现的AI环境基本上都是用来研究强化学习这种模型的,想要验证其他模型的话就会相对困难。
另一个方案则是直接参加游戏开发,因为可以在包含有AI相关机制的开发中的游戏里直接进行AI的实验和验证,这样R&D就既不用独自搭建AI环境也能够获得足够进行实践的环境。
但如果一旦参与到游戏开发中就要以开发工作为重心,挤不出推进研究的时间了。而且游戏中可能会存在BUG,开发的想法改变也会导致游戏环境变化,这样就无法满足研究所需要的稳定性。最后只能得出在开发中的游戏里进行AI研究并不现实这一结论。
怎样才能克服困难?
最后R&D想出的方法是,将已经发售的本社游戏作为AI研究的实验场。已经发售的游戏就不需要R&D独自进行搭建,也能获得能够进行实践的安定环境,而且还能优先进行R&D想做的研究。
接下来就是选出合适的游戏作为AI实验场了。挑选的标准是“能够简单地研究出能够完成尽可能多任务的AI”,在这基础上希望它能够完成提供更多的不同情况。沿着这一标准,最后选出来的是2016年发售的《黑暗之魂3》以及2013年发售的《装甲核心:判决日(ARMORED CORE VERDICT DAY)》(后文简称《ACVD》)这两作。
比较讨论之后,R&D选择了在包括“移动范围”、“战斗距离”在内的一系列项目中都有着更多选择,自由度更高的《ACVD》作为AI实验场。因为《ACVD》没有PC版,所以仅仅将对于AI实验有用的部分移植到了PC上。
加上《ACVD》中没有Behavior Tree和强化学习等等AI模型,因此有对其进行扩张的必要。
但《ACVD》的AI设计将游戏环境和AI紧密结合在了一起,这样的话就给扩张造成了很多困难。而且游戏的代码非常复杂,随便调整反而会导致意外的BUG或问题。
因此只能将游戏中把AI分离出来,这样做有着“进行研究时可以无视《ACVD》”,“能够简单地将AI移植到其他游戏中”,“能够适用新的AI模型”的优点。
具体的做法是将《ACVD》中原本存在的AI关联替换到中间层。这个中间层还保留着原来实装的功能,也是通过这里来与外部的AI进行连接。这样在游戏环境看来还是和以往的AI一样进行操作,但实际上可以进行泛用的接口和操作。
而且中间层不仅连接着AI,还连接着游戏机的控制器。这本是让调试进入视野的方法,但现在能够让那些原本由AI操纵的角色可以由人类直接操作。
在这样做的过程中,(R&D)明白了游戏环境和AI不是可以随便处理的数据。比如角色的位置等坐标,在游戏环境中作为表示角色在游戏世界中何处的“世界坐标”比较好处理,而AI则是相对自身在何处的“本地坐标”更好处理。
这样只要中间层拥有能够具备将这种差异进行相互转换的能力,就不用对游戏环境和AI进行转换了。
中间层还有log功能(使运行结果可视化,集中分析用的数据)和replay功能
用于研究的示例
ヘン・ジャンフィリップ从AI实验场正在进行的验证中挑出了两个操作NPC的事例进行了介绍。首先是古典AI模型(Script、Behavior Tree、State Machine)的示例,取自R&D内部举办的比赛。
这是全体R&D成员使用编程语言“Lua”做成各自的AI,并使用它们相互对战的比赛。这是为了收集对战相关信息而举办的比赛,因此将比赛结果以及各场比赛中HP减少情况进行了可视化。
在介绍强化学习的事例之间,需要首先说明一下强化学习中需要考虑的两个特征。第一个特征是强化学习“很难全靠自己应对最尖端的算法”。具体来说是它很容易搞错大规模的实装内的数学,如果不专门进行优化,就要花大量的时间在学习上,也很难进行调试。
第二个特征则是“实时需要大量数据”。这一点其他的机械学习也一样,但强化学习在学习的过程中还需要收集数据,作为验证者,希望它的收集时间能够控制在适当的范围内。
这些特征要怎么处理呢?首先是关于独自应对最尖端的算法,使用了编程语言“Python”中已经实装的学习算法。这是因为主流的学习算法大部分在Python上已经开源了,而且机械学习的程序库几乎全部和Python进行了对应。
但是《ACVD》是用C++制作的游戏,在如何与Python的学习算法进行连接上也存在问题。为此在游戏和学习算法之间引入了Python的强化学习工具箱“Gym”和网络通信程序库“gRPC”,解决了这个问题。
实时需要大量数据这一特征则通过扩大强化学习的并列实行以及将学习过程中不需要的内容进行无效化减少了计算的消耗。经过这些工作,配置一般的PC也能够在合适的时间进行强化学习了。
虽然已经解决了这些主要问题,但Gym还无法应对学习中的环境参数变更,也无法进行学习中的地图变更。而且就算让学习AI和学习AI进行对战,也无法应对对战型学习。为此自费设立了Instance管理服务器,解决了这些问题。
最后,一台搭载Corei7-8700和GeForce GTX 1060的PC,在并列实行的instance数为128的环境中,只需要大概12小时就能完成强化学习的动作确认。
强化学习初期还是随机做出动作,12个小时之后已经能够向敌人存在的方向进行攻击了
Python的机械学习程序库中有将验证中使用的参数、学习的推进情况、成果等等数据库化的实验管理系统
参加学习AI比赛时,只能胜过特定的AI了
ヘン・ジャンフィリップ先生还在考虑在《ACVD》以外的游戏中也进行这样的AI研究。而且也想研究调试AI等等具有各种功能的AI。
他总结道,如果今后研究走向正轨,能够做出实用的AI了的话,也会考虑将之加入FromSoftware的游戏中。
本文来自4Gamer.net,本文观点不代表GameLook立场,转载请联系原作者。