简介
最近一阶段重温了一些关于游戏人工智能方面的书籍。 加强了对influence map的认知。想要亲自动手实现一下。
正如文章标题所示,这篇文章讲的是:如何将influence map的机制融入到当前较火的unity寻路插件A* pathfinding project里。
先科普一下Influence Map基本概念:
influence map中文名:势力图或影响图。以下称势力图。 势力图是基于空间的,某些空间归属A,另外一些空间归属B,等等。
把问题规模缩小到一场游戏战役,每个兵种单位都占据并影响着一定的空间,且相同势力的单位对同一空间的影响可以叠加,影响值随传播距离递减。
势力图除了告诉我们某块空间的归属之外,还能告诉我们什么呢?
1,进攻方,可以根据势力图选择率先攻击敌人薄弱的地方.防御方,可以根据势力图选择一个较为安全的撤退地点。
2,进一步,统计分析,比如采取某种战略之后,观察势力图变化,可以分析之前战略效果。
3,更进一步,通过对一段时间的势力图进行对比,可以大致预测敌军的部署动向。
实现InfluenceMap的要点
1,定义各单位的势力值传播范围,形状,特性(这是Gameplay)由于每个兵种的特性和能力值不同,故每个兵种单位的影响半径与程度不尽相同。
比如:一个坦克可以影响3km之内空间,3km之内都保持较高的影响。而一个机枪兵只能影响1km以内的空间,并且超出500m之后,士兵的影响十分微弱。
坦克相比机枪兵更具影响力,所以想要抵消掉坦克的影响,我们可能需要更多的机枪兵与之对抗。这些数值根据具体的游戏逻辑来设定。
2,实现传播算法,以什么样的方式传播,各势力影响值得叠加逻辑。
3,实现衰减算法,以什么样的方式衰减,常见如影响随距离线性衰减。
本文使用的算法
1,确定传播区域,获取传播区域内node,从cen