zoukankan      html  css  js  c++  java
  • android游戏寻路算法

    游戏开发区很多朋友都在谈论A*寻路算法,大家都感到高深莫测,而不敢涉足寻路算法.希望下面的分析能为大家解开这个误区.

    A*算法确实是最高效、最流行的寻路算法,是搜索算法最深层的延伸.A*算法是由4个要素组成:A*=估价函数+并查集+堆+广搜.想要写A*算法,我们必须门心自问对这4个方面的基本功打的怎么样?因此,A*算法不是所有开发者都能享受的,这种高深的算法必须有强大的算法功底和长年累月的实战积累才能实现.另外,A*也不是最适合的算法.是的,我前面确实说过A*是最高效、最流行的算法,但是指的是它在不同运用领域所表现出来的更强的通用性,指的是基于数据统计它的性能期望最高.
    那么A*是否适合移植到android平台呢?我们需要来分析它的特点与专长.A*算法的精髓是以空间换时间,它的运用前提是:解空间充分大,运算时间有限,而存储空间(一般是内存)相对充足.当我们将它移植到手机平台,手机极其珍贵稀缺的内存资源,使A*失去了用武之地;其二,手机游戏的寻路空间相对较小,解空间相对狭隘,因此,搜索算法的瓶颈不再是冗余的搜索消耗,而估价函数的开销以及较长实现代码将成为新的瓶颈.因此,A*算法并不是android手机游戏的唯一选择,针对不同的搜索需要,我们应该定制不同的搜索算法.

    对于涉及算法不是太深的开发者,其实不必追求华丽的A*,写一个普通的宽搜或者广搜就OK,毕竟手机游戏的解空间与PC游戏差了不止一个数量集.大家唯一要做的,只是做好减枝和优化就行了.开发寻路算法的大门永远都向我们敞开着,只要我们选准了突破方向.
    对于算法牛人来说,我们需要分类探讨.对于解空间较小,及时性较高的游戏,采用A*是最恰当的选择.如果解空间较大,内存空间紧缺,那么采用跌代加深搜索更好.如果是持续寻路(比如NPC每走一步,都要寻找一次最优路径),那么遗传算法是再适合不过的选择了.
  • 相关阅读:
    Spring Boot启动过程(四):Spring Boot内嵌Tomcat启动
    dubbox注解的一个坑
    内嵌Tomcat的Connector对象的静态代码块
    Spring Boot启动过程(三)
    Spring Boot启动过程(二)
    Spring Boot启动过程(一)
    SpringMVC基础学习(二)—开发Handler
    JS弹出框
    Oracle的基本学习(三)—函数
    Oracle的基本学习(二)—基本查询
  • 原文地址:https://www.cnblogs.com/nafio/p/9137781.html
Copyright © 2011-2022 走看看