竞技游戏的团队AI如何实现?

很多人问游戏AI应该做什么?随着游戏类型的多样化,非MMO或卡牌游戏越来越多,对AI的需求也越来越强烈。然而,市面上关于AI的书籍和网上找到的文章都只是几句理解,理论套路和一些简单的DEMO,与真实项目相去甚远,无法连成一线,更不用说真正落地的是编码。

国内真正做过游戏AI的人很少,漫谈的人很多,真正做过项目的人很少,因为国内以MMO为主,RTS较少,体育游戏更少。从AI的难度来说,应该是:MMO

方法/步骤

1

什么是分层状态机?

每个角色都有三个层次的状态机:基础层次状态机、行为层次状态机和角色层次状态机。状态机的每一层都解决了一定程度的复杂性,并提供了与上层的接口。上层状态机通过设置下层状态机的目标来实现更复杂的逻辑。基本状态机:直接控制角色的动画和绘制,提供基本的动作实现,为上层提供支持。行为状态机:实现分解动作,如避跑、直线移动、原地站立、要球、传球、射门、追球、撞人、跳跃等。角色状态机:实现更复杂的逻辑,比如防投篮,抢篮板,都是由n个直线运动+跳跃或者撞人来完成的。

每一层状态机都是通过为下一层状态机设定目标来控制的(设定目标后,下层状态机会自动工作,上层不用管动画播到哪里,现在是跑还是跳),从而为上层提供更高级的拟人行为。所有状态机以固定的频率(例如每秒10次)更新,以判断状态转换并检查较低目标的完成情况。顶层角色状态机的工作由团队AI控制,即角色分配。行为状态机上面的状态选择,比如防守,往哪里走,往哪里投篮,路径是什么,都是由决策支持系统支持的。

2

什么是决策支持系统?

状态机是角色的大脑,而决策支持系统是角色的眼睛和耳朵。常用的工具有影响图和白板(相当于不同角色之间的喊话),其中影响图比较常用,篮球比赛的AI影响图可以用下图表示:

力量图1:防守篮板距离的地图,每个格子的得分是最远距离减去篮板所在格子的距离。

图2:进攻篮板距离图,每一分都是最远距离减去网格到篮板的距离,篮板后为0。

力量图3:与敌人的距离,每个敌人都有影响范围。在射程内,离敌人越近得分越低,射程重叠越低。

力图4:距离所有队友目标位置的距离图,评分方法类似上图。

力图5:距离每个队友目标位置的距离图,识别距离单个队友目标位置的距离图。

功率图6:现实通过可行性图。得分越高,就越容易把球传到格子里。

力量图7:映射容易传球的位置。越容易直接把球传给队友,得分越高。

幂图8:合成地图,将以上地图按一定权重求和。玩家有一个合法的目标区域,方便实现内外走。

每个球员都有不同的性格和不同的体重。有保守型玩家,也有冒险型玩家,权重不同。这些电源图都是为上述三层状态机和团队状态机提供决策支持而设计的。

什么是团队角色分配?每一层状态机为下一层设定一个目标,让下层自动工作,顶层角色层的目标由顶层团队ai进行战术指导。

球队状态机根据当前比赛情况确定当前的首要目标(进攻或防守),进而确定进攻或防守的具体策略(如中路突破、侧翼、底传等。)根据当前势力图等信息。最后,它给当前团队的所有角色分配一个新的任务,也就是给角色级状态机设定一个新的目标,决定他是做主攻还是助攻,或者联防还是协同。具体来说,如何防范,如何应对,是角色级状态机的事情。

题目总结其实AI队没那么神秘。任何问题都是编程建模问题,最复杂的体育游戏的AI策略上面已经给出了。我相信你稍微修改一下就可以用了。写状态机是游戏AI的一项辛苦工作。如果状态机的逻辑变化频繁或者项目规模较大,可以考虑引入决策树来控制状态机。程序提供了一系列界面,然后用可视化编辑器对其进行修改。感兴趣的人可以参考决策树的相关文章。

概率统计如果以上逻辑都实现了,那么我们就可以辅助概率统计,让角色具有学习特性,比如把某个策略的成败统计给对手,以支持下一步的决策,这样我们就可以逐步发现对手的弱点,也可以统计所有用户的大数据,以确定在某个情况下选择什么策略,这可以对付60%的用户。

上面已经实现了神经网络的所有逻辑。等你调试好了,玩的流畅了,再尝试在团队角色分配中使用神经网络或者模糊逻辑。也是在学习大数据引入一些不可控的人性化成分,让游戏更有趣。(EA的FIFA 20XX宣称引入神经网络,使命召唤的AI也宣称引入神经网络和学习机制)。确实让游戏更有趣,但也仅此而已。PS:关于象棋AI的题目和这个不一样,因为象棋AI是求最优解,用博弈树等工具就可以解决。有兴趣可以参考我的另一篇文章:TINY-GOBANG极简五子棋人机游戏PS:当你看到屏幕上的人物仿佛被你赋予了生命,他们独立有序的移动,偶尔还能做出你意想不到的事情,你就充实了。