2.2 强化学习在竞速类游戏中的应用
竞速类游戏玩家通常以第一人称或第三人称视角使用各种竞速工具(如车辆、赛艇、飞机等)参与不同环境的多人竞赛,并使用真实世界中的竞速竞赛的规则进行排名。竞速类游戏一般具有玩家水平不一、能力分布广等特点。面对不同等级段位的玩家智能体(AI)竞技挑战需求,如何制作和玩家水平匹配的AI,以及根据玩家实际发挥动态调整AI的能力是AI挑战赛需要面对的主要问题。在线上应用时,通过使用难度评估分级的方法可以选择出不同等级段位的AI,从而根据玩家的段位匹配对应能力的AI,但是受到玩家能力、AI能力预估不准和线上随机性因素的影响,AI在挑战赛上不能进行灵活配置,有一定的局限性。因此对于竞速类游戏AI的核心需求可以总结为AI能力需要达到特定玩家水平(能力要求),行为模式和线上玩家尽可能接近(拟人性),能够尽可能覆盖不同段位的玩家(能力分级),能够根据局势个性化调整AI的能力(动态调整)。
2.2.1 问题建模
玩家在进行竞速类游戏的时候,会重点关注周围环境信息、载具自身状态、其他载具状态,从而做出相应的决策。例如,在《QQ飞车手游》中(见图2.4),周围环境信息包含前方赛道的曲率、宽度、地形等;载具自身状态包括车辆速度、车辆和赛道边界的距离、车辆的方向等。根据这些信息,玩家会操作控制的载具进行方向控制、加速、减速等操作,从而尽可能快地完成比赛取得竞赛名次。强化学习过程的常见模型是标准的马尔可夫决策过程,在竞速类游戏中,马尔可夫决策过程的核心内容包括状态空间、动作空间和奖励函数设计。本节以《QQ飞车手游》的AI设计为例具体阐述竞速类游戏的马尔可夫决策过程设计方案。
图2.4 《QQ飞车手游》图片
2.2.1.1 状态空间设计
游戏AI客户端在运行时,会捕捉当前时间赛车状态(如车速、VD角、是否具有氮气)、赛道状态(如赛道宽度、下一个拐弯的距离、赛道曲率、坡度等),发送给AI预测服务。AI预测服务预测出AI下一步的动作发送给AI客户端,AI会在客户端执行对应动作,并最终完成比赛。
考虑到使用图像作为输入信号会使模型复杂度增加,不利于模型的实时预测并提高预测成本,本方案通过使用游戏客户端直接获取当前AI在游戏中的状态,并以数值表示,这些状态包括赛车状态和赛道状态,其中赛车状态包括:
● 赛车速度。
● VD角。
● 车辆道路夹角。
● 赛车离轨迹线的横向距离。
● 液氮数量,即屏幕下方道具槽位的“液氮”道具数量,赛车会通过漂移等动作收集氮气,集满后可以获得一个大喷氮气道具。
● 离左边墙和右边墙的距离。
● 赛车高度。
● 距离下一个导航点的距离、方向。
● 车辆转向方向,向左大于0,向右小于0。
● 方向盘方向。
● 漂移方向。
● 是否有大喷氮气,存在一个大喷氮气道具或同时存在两个大喷氮气道具。
● 是否有小喷。
● 是否处于正常平跑/漂移/损毁/飞跃状态。
● 大喷/小喷/空喷/起步喷/落地喷/超级大喷/加速带/减速带/加速道具/减速道具是否正在作用。
● 是否发生碰撞/撞墙/往回跑/没有移动/没有走近道/进入复位动作。
● WC喷/CW喷/WCW喷/CWW喷/甩尾漂移/侧身漂移等高阶技巧是否在起作用。
赛道状态包括:
● 未来20个导航点的曲率。
● 未来20个导航点离左墙的距离。
● 未来20个导航点与当前TP点的归一化欧式距离。
整体状态空间拼接成一个127维的向量,向量每一维度都要进行尺度处理,避免数值过大或过小。
2.2.1.2 动作空间设计
当每帧画面更新时,AI发送给客户端的动作空间包括左转、右转、大喷(一种长时间加速方式)、小喷(一种短时间加速方式)、刹车、复位、漂移、侧身漂移等基础动作。玩家在实际游戏过程中,左右手会同时按键,以释放组合动作,如左转+漂移、右转+漂移等。这些组合动作可以视为动作空间中的单独的动作序列。本方案将动作空间划分为2类,每一类都是上述基础动作的常见组合,分别为连续操作型动作空间和单次触发型动作空间。其中,动作类别1为连续操作型动作空间,共6维,包括:
● 空(AI不做动作)。
● 漂移。
● 右转。
● 右转+漂移。
● 左转。
● 左转+漂移。
动作类别2为单次触发型动作空间,共3维,包括:
● 空。
● 小喷。
● 大喷。
每次网络分别预测出动作类别1和动作类别2的动作概率,并选择对应的基础动作空间,最后将两个动作空间合并。例如,动作类别1选择右转+漂移,对应基础动作空间为“右转、漂移”;动作类别2选择小喷,对应基础动作空间为“小喷”。那么AI最终进行的动作为“右转、漂移、小喷”。
2.2.1.3 奖励函数设计
奖励函数起到指引AI完成目标并引导其正确行为的作用。竞速类AI的目标主要是使用尽可能少的时间完成比赛,因此奖励函数和最终的完成时间密切相关。为了减少AI在比赛中的失误,更快引导其做出正确的决策,当AI做出一些负面行为时,会给予其负面的奖励,那么该任务的奖励函数为:
式中,S表示当前分段的赛道长度;T表示完成当前分段的时间;α为正常数。在实际应用中,可以按照赛道的导航点或长度对赛道进行分段,使得最终的奖励函数变得稠密,稠密的奖励函数意味着更多引导信号,可以加速网络的训练。
2.2.2 难度分级和动态调整
模型难度评估和分级的主要目的是选出不同水平段的模型,与各个水平段的玩家进行匹配,从而方便玩家在对局中灵活选择和变换模型,如图2.5所示,主要步骤如下。
图2.5 模型难度评估和分级
步骤(1):模型训练每隔一定周期产生模型,依次送入模型难度评估系统。在深度强化学习中,模型通过神经网络来拟合输入到输出之间的映射,从而预测出下一帧需要执行的动作。模型的参数使用当前游戏环境产生的训练数据,在定义并计算出网络的损失函数后,使用梯度下降方法进行更新,并按一定时间间隔送入模型难度评估系统。
步骤(2):模型难度评估系统根据评估参数对模型进行评估,评估服务器读取训练产生的中间模型,在规定的评估环境下进行重复评估,并且记录评估结果。如图2.6所示,模型版本号就是训练到不同步长的中间模型步数,通过评估系统接入正式游戏环境,对模型在一定游戏环境下(如赛道、车辆)进行重复评估,最终得到评估的平均结果,如单局完成时间,并且将结果上报至对应数据库中。在评估过程中,模型分级模块获取评估结果,计算模型在对应参数下的难度评分。难度评分基于模型评估结果,按照游戏评分规则或人工制定的规则,对模型进行打分。例如,对于竞速类游戏,一场对局的评估结果包括和目标完成时间的时间差绝对值、动作A的使用频率、动作B的使用频率、技巧C的使用次数、技巧D的使用次数、出现失误E的次数、出现失误F的次数,每一个指标都有具体的评分和权重,最终将所有的评分加权,得到模型的最终评分。难度分级系统将玩家水平按照一定间隔分成不同的难度,将评分后的模型和所需玩家水平匹配,从而覆盖玩家各阶段的水平,使模型能够在不同水平的模型中切换,动态地与玩家水平进行匹配。
当难度分级完成之后,需要进行动态能力估算。动态能力估算首先根据AI和对应人类玩家当前所处的赛道距离,估算出AI的历史平均水平和人类玩家的平均水平,然后根据剩余距离自适应调整AI的能力,在终点前和人类玩家保持在一定距离范围内。当检测到AI速度落后于人类玩家速度时,AI会提升自身的能力(见图2.6);反之,减少自身能力(见图2.7)以提高AI挑战赛的刺激程度。主要步骤如下(见图2.8)。
图2.6 当AI落后人类玩家时,主动提速
图2.7 当AI领先人类玩家时,主动降速
图2.8 竞速类AI线上动态能力调整
步骤(1):在游戏开始阶段,根据人类玩家历史水平给出与之相匹配的AI模型,作为AI的初始能力,其能力记为X0。
步骤(2):给定从游戏客户端环境中获取的人类玩家当前位置SH、AI当前位置SAI、游戏对局的赛道总长度L及AI与人类玩家之间的目标距离(游戏结束时)ΔL。动态能力估算函数按照固定时间T进行激活,并且将上一时刻的模型Xm-1加入历史模型池。历史模型池是一个列表,记录了模型在每个时刻的模型能力X0,X1,…,Xm-1,用于表示AI的历史能力,给定历史模型池可以计算历史模型池的模型平均能力。
步骤(3):计算人类玩家离终点的剩余距离L-SH,假设人类玩家在赛道中能力不变,记其平均速度为,计算得到人类玩家完成剩余赛道的时间。
步骤(4):假设需要指定AI在人类玩家完成比赛时距离玩家ΔL,那么AI在人类玩家完成比赛时,需要完成的距离为L-ΔL-SAI,计算得到AI在剩余赛道的平均速度。
步骤(5):根据已完成的赛道距离,计算AI和人类玩家的平均速度比值,由步骤(4)可得AI调整前后的速度比值为。假设模型能力和速度成正比关系,则得到下一时刻的模型能力。
步骤(6):使用得到的模型能力,在模型池中选择对应模型,替换原有模型。若对局未结束,则返回步骤(2);若对局结束,则终止。
2.2.3 拟人化竞速类AI
线上AI的一个核心需求是AI拟人化。顾名思义,AI拟人化就是要使得AI表现得像一个真人玩家,给人类玩家带来更加真实的游戏体验。由于强化学习训练AI的数据是AI自我探索生成的,缺少人类行为模式的先验知识,因此训练出来的模型行为和人类玩家会有较明显的差异。与此同时,AI更容易利用游戏漏洞来达到期望回报最大化。因此,需要通过人工设计的奖励和规则来规范AI的行为。总体而言,人类玩家的行为主要有以下几个特点。
● 动作连贯。
● 无效动作少。
● 有一定反应时间和操作频率。
而竞速类AI由于没有被限制操作帧间隔数,往往具有以下特点。
● 动作不连贯,频繁切换动作。
● 无效动作较多。
● 反应无延迟。
为了达到AI和人类玩家在线上公平竞争的目的,需要对AI行为做出一定限制,使其尽可能做出更接近人类的动作。对于竞速类AI而言,主要可以从以下2个出发点进行考虑。
● 对于动作连贯性和无效动作,可以对不必要的切换动作行为和无效动作进行惩罚。
● 对于反应时间,AI的反应时间(从接收状态到执行预测动作的时间间隔)可以控制在人类反应时间区间内,如100~200ms。
为了比较AI和人类玩家的数据差异,定义拟人化度量指标,主要包括动作连贯性和动作分布2个指标。动作连贯性是指每秒动作切换次数和单个持续型动作平均长度。动作分布是指漂移动作的占比。
表2.1展示了不同拟人化设置对AI整体拟人表现的提升。可以看到,设置预测间隔和动作切换的惩罚,有效降低了AI的操作频率,同时增加了动作的连贯性,AI在线上游戏中的表现和人类玩家的表现更为接近。
表2.1 拟人化对比实验
2.2.4 小结
本节将赛车竞速建模为强化学习问题,不但使用强化学习方法求解得到了能够自动生成的高水平AI,而且使用难度评估分级的方法,快速便捷地生产了和玩家水平匹配的AI,以满足不同等级段位的玩家AI挑战赛的需求。本节还对动态能力调整和拟人性优化进行了许多探索,从而让玩家能在对局中灵活选择和变换模型,提升玩家竞技体验,即使在AI挑战模式,也能让玩家感受到似乎在与真人高手较量,极大地提升了玩家在进行AI挑战时的游戏体验。