近几年,全世界都见证了大模型和 AIGC 技术的爆发式增长,游戏行业也在全面拥抱 AI 。从游戏研发到游戏发行、运营的各个环节,AI 技术在游戏行业的落地应用逐步走向大众的视野,亦为游戏体验带来革命性颠覆。
近几年,全世界都见证了大模型和 AIGC 技术的爆发式增长,游戏行业也在全面拥抱 AI 。从游戏研发到游戏发行、运营的各个环节,AI 技术在游戏行业的落地应用逐步走向大众的视野,亦为游戏体验带来革命性颠覆。

模仿学习技术通过精准捕捉并解析真人玩家的游戏操作,赋予 AI 模型以高度的拟人化特性。这一过程主要依赖于对线上高水平玩家比赛录像的深入分析,从中提取关键的游戏状态和相应的动作决策。在这里,"状态"描绘了玩家所处的游戏环境和当前游戏状态的描述,而"动作"则记录了玩家在该状态下的具体操作。通过游戏的标准化接口,我们能够捕获这些数据,进而训练出能够模拟人类玩家行为的 AI,提升游戏的互动性和真实感。
01
数据集构建流程

matchid | score/rank | hero_id | KDA | game_result |
比赛唯一id | 能力分/段位 | 角色id | 比赛表现 | 比赛结果 |
3.录像解析 proto 数据
在过滤得到所需录像之后,我们通过录像解析工具,将一局比赛解析处理成多个 proto 数据,每个 proto 数据表示一帧游戏数据,proto 中包含了我们训练所需的所有数据。之后我们把 proto 数据同样存放到对象存储中,并在mysql 中记录下这场比赛对应的 proto 及录像信息。
如下图为 proto 的示例,其中包含了游戏某一帧状态和录像动作两部分主要信息,状态又分为比赛通用信息和各个玩家的状态信息两部分,通过 proto 数据,我们就可以构建状态-动作数据样本。

02
状态动作定义
状态包含:全局特征、玩家特征、Unit 特征、其他特征、全局 map 以及局部 map 共 6 类特征。

其中前 4 类特征很好理解,都是通过 proto 获取到对应的数据,进行计算处理之后,构建成对应的向量特征。

对于全局 map 对应的是小地图信息,局部 map 对应的是玩家游戏中局部视野的信息,全局/局部 map 特征由多个二维矩阵构成,在《梦三国2》中,各 map 共使用地形、全量建筑物、我方建筑物、全部英雄、我方英雄、全部小兵、我方小兵、野怪共八个二维矩阵。每个二维矩阵中数值表示该位置有没有相关信息,如全局 map 中我方英雄的二维矩阵表示小地图中我方英雄所在的位置映射信息。
Global map 将小地图转换为544x544的矩阵,然后 sum-pool 成 32*32 的矩阵(如定义映射位置存在多个,为具体单位的累加和),Local map 是在 544x544 的小地图上直接针对主英雄所在的位置截取出 36*36 的矩阵。

我们采用分层的动作结构,其中第一层为主动作,包括移动、停止、普攻、tp、技能 1~4、道具 1~9 共 17 个主动作。

移动距离和移动方向作为移动的具体参数,其中:移动方向离散为 16 维度,移动距离离散为[50, 250, 500, 750, 1000, 1250, 1500, 1750, 2000, 2500, 3000]11个距离,统计玩家的移动距离得到。
技能/道具距离和方向作为技能和道具(非指向性)具体参数,其中:方向离散为 16 维度,距离离散为[50, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000] 11 个距离,统计玩家的放技能、道具距离得到。
对于距离和方向定义使用如下扇形方式定义,其中以原点出发的射线代表方向,以原点为中心的半径不同的圆为距离,射线和圆的交点就作为具体移动、释放技能的位置:

指向目标用于普攻、技能和道具(指向性)的目标参数,不足的 padding 处理,括号里面代表的数量:自身(1)、友方英雄(4)、敌方英雄(5)、我方建筑(18)、敌方建筑(18)、我方小兵(20)、敌方小兵(20)、野怪(40)、召唤物(5)、Boss(2)、信使(6)、孔明灯(10)等。
tp 目标用于使用回城令:友方的外塔、高地塔和基地共 10 个目标,宏观和微观意图只是作为辅助任务,不作为 AI 动作的任何参数。
03
游戏场景定义
游戏场景(scene)实现了对数据集进行具体场景的归类,通过标记主英雄的重要动作节点赋予操作的目的性。具体而言,按照动作优先级排序,可以将游戏场景分为以下五大类:

我方英雄和己方小兵处于敌方防御塔一定范围内即定义为推塔;我方英雄位于我方防御塔内且该范围内同时存在敌方小兵/英雄时为守塔;我方英雄位于我方基地 3200 范围内且该范围内同时存在敌方小兵/英雄时为守基地;我方英雄和己方小兵处于敌方基地 3200 范围内即定义为推基地。



4、野区发育

如果攻击目标为我方野怪,划分为打自家野;如果攻击目标为敌方野怪,划分为反野;如果攻击目标为中立 Boss,划分为打 Boss。
以上所有事件如果均未发生,那么统一标为寻路环节。

04
意图定义


05
数据分析


如游戏场景定义所述,针对一局比赛我们实现了 21 个"干什么"的场景,如守塔、控符等,及对应的 21 个"去干什么"的场景,针对这些场景我们也同时做了不同英雄的统计,发现同样存在不同定位的英雄,场景占比也不一样。


06
模型训练

主动作、移动方向、移动距离、道具/技能方向、道具/技能距离、目标、TP 目标,这些参数会用于控制 AI 动作,具体可参考动作空间。
同时还会预测我们在第六部分中构建的四个 scene intent 的标签,并且这四个输出会与 sharelayerFC 的输出拼接,用于上述七个动作头的输入,即在预测 AI 的动作的时候会加入场景意图信息。
主英雄、我方英雄、敌方英雄、我方建筑、敌方建筑、我方小兵、敌方小兵、野怪、Boss、眼、信使、召唤物、符文、AOE、特效、全局信息、Global map、Local map 组成输入,具体定义及组成可参考状态信息,与网络结构中的多输入头对应。
如模型输出中所述在预测七个动作头时,会加入 scene intent 的信息,在训练时 scene intent 是提前知道的,所以在预测该七个动作头时,使用的真实的 scene intent 输入信息。同时模型预测的 scene intent 信息也会计算 loss 进行学习(在部署时,预测七个动作头使用的就是模型 scene intent 输出头预测的信息了)。
多任务学习,除了动作头之外,设计了多个辅助任务头,最终通过 weighted sum 整个各个损失,并将多任务的总损失用于网络优化,从而实现各子任务目标的同步优化;
根据主动作屏蔽无关动作头的 loss 回传,如主动作为移动,那么除了移动坐标的输出头之外的其他二级动作头都屏蔽 loss 回传;
样本训练前置加权,针对每个英雄主动作不平衡及场景的不平衡,对样本进行场景-主动作类型组合维度的加权,通过加权提升模型的相关效果。
样本训练后置加权,针对已训练的模型,发现该模型在某些情况下表现较差,比如不会打 Boss等,可挑选该类场景下的样本加权,进行加训迭代;
多英雄数据融合,为了提升模型的泛化性,减少部署使用时的成本,最开始是一个英雄的数据训练一个模型,后来我们把多个英雄的数据合并起来,训练一个模型。相比于只使用一个英雄的数据,合并数据的效果反而更好。
6.难度分级
1)难度分级实现
输入干扰针对模型的一些关键输入做一些扰动,比如敌方英雄的血量、蓝量扰动,位置扰动,用来模仿真人玩家对于血量位置把握不准确的情况。
输出干扰针对模型的一些关键输出参数做扰动,比如技能/道具释放的方向和位置,用来模仿真人玩家技能道具释放不准确的情况或失误等。
规则干扰,如 AI 的反应时间、AI 使用技能的概率、AI 使用道具的概率、AI 普攻的频率、AI 出装的正确程度等,这些可通过规则实现。
最终我们针对《梦三国2》设计了如下七个难度分级维度,通过这七个维度共生成六个难度,其中技能使用概率、道具使用概率、补刀攻击概率、反应时间、出装速度为规则干扰;技能使用准确率为输出干扰;技能躲避概率为输入干扰,主要干扰输入状态中技能特效及 AOE 的信息。针对各个维度配置了一套开放的参数,参数调整之后,会进行自动对战测试,保证各个难度的水平、胜率、数据符合要求。

2)动态难度调整
为了提升玩家的游戏体验并确保每场对局的挑战性和公平性,我们采用了动态难度调整机制。在《梦三国2》中,我们根据玩家的能力分和连败情况,在匹配开局时初始化敌我双方 AI 的难度级别。此外,我们还设计了局内剧本,能够根据对局的实时状态调整不同英雄 AI 的难度,以适应比赛的发展。
近期了解到,网易数智正在开发中的实时胜率预测模型将进一步提升这一机制的精准度。该模型能够根据当前比赛的状况输出两边的实时胜率,并以此作为调整 AI 难度的依据。网易数智的目标是创造一个温暖的匹配环境,让真人玩家的胜率能够逐渐提升,同时对于陪玩或掉线的情况,我们希望保持真人玩家的胜率在 40% 至 60% 的范围内。
根据实时胜率,将相应地提高或降低 AI 的难度,确保玩家在每场对局中都能体验到适当的挑战。通过这种局内动态难度调整,我们旨在让玩家在比赛中达到心流状态,从而极大地增强游戏的吸引力和留存率。小智相信,AI 智能体投放的精确控制将为玩家带来更加丰富和满足的游戏体验。
3)风格多样
训练多风格模型:
设计一些与风格相关的统计特征,针对每局比赛统计特征,区分同一英雄(位置)的多个风格的数据;根据玩家的状态-操作数据,对玩家的行为序列做 embedding,针对行为序列做聚类,尝试通过聚类找出不同风格操作的玩家数据;有个不同风格的数据之后,每种区分度高的风格训练一个模型。
规则多风格方案:
模型中一些重要的输入的改变都会影响 AI 的决策风格,比如敌人的血量、自身的血量等,可针对风格设定(激进、谨慎等)使用相关的规则实现 AI 在已有模型上的决策风格改变。
07
模型部署

异步流程,不影响游戏逻辑
分布式部署,可增减机器
AI 开局数量、历史调用量及 AI 参与对局的表现可感知
部署集群资源占用情况可感知

08
效果评估
在我们训练得到模型之后,我们会先进行离线自动测试,通过自动对战 GameCore 同时多开对局,让我们的 AI 与行为树对战,两边为镜像阵容,通过行为树来验证我们模型强度是否达标,如下图为 15 个英雄各自进行近 40 场对战后,该英雄的 KDA 及其他指标的情况。

当我们发现对战行为树指标还不错之后,我们会将 AI 模型,部署到 AI 测试服,游戏策划、测试等同学都可以在测试服上体验最新版本的 AI,跟 AI 进行实时对抗。如下图是列出的对于 AI 不能出现或者只能接受偶现的一些行为,同时,在 AI 测试服中会对下列的每一条内容进行验收,除了下列行为外,在 AI测试服实时对抗中,还可根据游戏体验提出一系列反馈问题,我们也会根据反馈问题进行 AI 行为的迭代,从来不断来提高 AI 的拟人性。

code/s?__biz=Mzk0NjQyMjMwMQ==&mid=2247485479&idx=1&sn=dd6afc4076d8552d7038a00d59c58ac5&chksm=c3071f55f470964325c78b0fd64f175499e74c02c14eff7afa2166bd455f582009808ce20386#rd