类《守望先锋》游戏指的是:有很强的FPS属性,同时有丰富的技能系统(和MOBA接近)。
类守望先锋游戏AI设计
1 设计概要
1.1 设计思路
2 FPS游戏AI设计
3 MOBA游戏AI
4 结合MOBA和FPS的游戏AI
4.1行为树脑图
5 总结
考虑到游戏的最主要特性是FPS+Moba,我们将游戏AI的实现建立在这两种属性之上。先分别分析FPS游戏AI核心功能和MOBA游戏的AI核心功能,然后考虑两种AI融合。
核心AI元素抽象:跑路,射击,利用掩体
我们从零开始,搭建FPS游戏的AI框架
在地图上的关键路点之间建立双向导航的网络,如下图所示:
这是一个带权有向图,权重归一化之后就是游走概率,比如当AI到达a点时,它下一时刻走到b点的概率为:
此处需要注意的细节:
AI此时移动规律是符合马尔科夫过程的,如果路点过多,很可能出现AI很长时间都无法完成一次全路点遍历,或者一直在一个小区域来回游走。
路点也不能太稀疏,太稀疏则AI路线会比较固定,一般岔路口或者拐角都需要布置路点。
最开始可以简化设定遇到敌人开枪即可。
后续可以增加危险躲避和释放技能的功能。
我们玩家利用掩体,一般情况下是为了在射击间隔保护自己,一个场景物件能作为掩体的基本要求是:当AI躲在掩体附近合适位置时,没有敌人可以攻击到它。
但实际AI是不认识任何场景物件的。我们在此处让AI识别掩体的简单策略是,在场景物件附近种上若干战术点,当AI处于某个战术点时,如果正好可以避免敌人看到它,就认为这个场景物件可以当做掩体。
如图所示,三个战术点ABC,相对于这个箱子来说,A不是合适的战术点,不能掩藏AI,B和C都可以掩藏好AI。这个箱子可以当做掩体。
至此我们一个带有寻路,射击和利用掩体的基本FPS机器人就完成了。
一个基本的MOBA游戏AI需要满足沿路线行走,放技能和躲避危险。
其基本实现可以参照《MOBA游戏英雄AI设计》
我们需要将两种类型的AI做一个融合:游走、射击和利用掩体时采用FPS的AI设定,释放技能时采用MOBA的设定。
每个英雄都需要单独编写此子树。技能释放逻辑每个英雄都会有差异。
至此,结合MOBA和FPS的类似守望先锋游戏AI就完成了。基本可以在温暖局使用而且没有明显的AI痕迹。
具体实现时比较麻烦的地方在于技能的释放时机判定,基本上每个英雄都要单独写独立的行为子树。
再做个预告,用行为树或者状态机实现的AI其实根本就不属于人工智能领域。下次分享,将是使用我的研究生阶段专业知识——机器学习——来实现真正意义上的游戏人工智能。可以预料到的,读者会非常小众。目前也仅仅有一些思路,具体开发验证需要利用大量业余时间,策划去编码还是比较痛苦的,并且我的业余时间,呵呵……所以可能是天坑。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。