游戏角色的自动寻路,已经是游戏中一个历史比较悠久的领域,较为成熟也有很多种实现。这里摘录一句后面所提的参考资料中的描述:“业内AI开发者中有一句话:“寻路已不是问题。”我们有针对各种寻路问题的各种解决办法,只不过不常使用而已。“
实际应用中寻路算法里里面还是有挺多讲究的,如果寻路在游戏中占了很大比重,是有很多相应优化的方式和空间的,可以特别关注。以下内容主要是查阅了网上很多资料文档后整理出的内容,比较偏重于需要特别关注的点。以便感兴趣的同学查看后对其有一个基本的概览和了解。
可能有同学嫌整的凌乱了些,亦可以直接跳过到后面内容的第四点,从查阅“四.写得很好的一些相关参考资料地址“开始。
一、游戏中的寻路算法
大部分游戏在开发过程中都会遇到路径探索问题:需要快速、准确地计算出游戏角色从地图中的A点到达B点(自动绕过障碍物)的一条较好最短路径。这个已经是一个游戏AI中较成熟的的必要组成部分(一不小心在网上搜出了2008年腾讯还申请注册了一个相关专利"一种地图寻路方法及系统":路点加三角面的方式)。
寻路可以有多种算法:
1)DFS
2)BFS
3)Dijkstra
4)A*路点寻路
5)D*
6)NAV导航网格寻路
7)预设导航点的固定路径
8)。。。
在以上前四种中,A*是平均计算速度最优的;Dijistra算法相当于A*算法中估价值为0的情况。后面几种,D*是用于动态路径的算法(用于机器人探路,比如火星探测器的寻路;NAV导航网格寻路其实也是基于A*实现,目前主要应用在3D游戏中。
二、A*路点寻路和NAV导航网格寻路
在目前的游戏中使用和