作者:许伟东 文章来源:本站原创 点击数: 98 更新时间:2005-9-22 | ||
寻路算法在游戏中大量应用,在PC游戏里,更是随处可见。就比如星际争霸,红警这些超爽游戏中,用鼠标随便点一个地方,部队就会绕过一些障碍,并以最短的路径到达目的地。那么在手机游戏中怎样达到这种效果呢?这正是本文要讨论的问题。 1.深度优先:即能走就走,若有多条路可走则按照一定的次序选择(如上下左右),但不走回头路。如果无路可走就退回。显然这种方法不一定能找到最短的路径,但它对内存的要求很小。由于与真实的找路过程有相似之处,所以可以让精灵直接按搜索的过程移动,不需任何等待。不过由于上下左右的次序太机械,精灵一开始并不是朝着最短的路线走去,所以移动路线还不够真实,特别在比较空阔的时候会容易找不到路。 2.广度优先:与深度优先搜索相对应的是广度优先搜索。这种方法的思路很简单,就是先搜索一步可到的点,再搜索两步可到的点......如此直到找到目标点为止。这种搜索方法显然能保证走的是最短路径,搜索速度也较快,不过对空间的占用较大。 3.启发式搜索:比如A*。(懒得讲,PASS掉) 我使用广度优先算法,因为如果在一种限制时间的游戏里,深度优先的速度将是无法容忍的。当然,广度优先会用不少的内存,当然,我相信你总有办法会解决。前阵子我也请教了GUST(猛玛技术总监)关于寻路这个问题,他同样认为广度优先是一种比较可行的在手机游戏里使用的方法。当然,不同的问题在不同的游戏中会有不同的应该效果,就比如广度优先算法,我在使用中也遇到了不少问题。我将会在下篇文章中给出代码以及一些问题的解决方案。(当然,水平有限,可能这些问题很拙劣) |