中tile函数_【算法】游戏中的寻路算法浅析

RTS中的寻路系统一般需要满足有以下几个条件:1. 效率高,因为rts普遍地图大,单位多,所以处理效率很重要2. 易编辑,以便于level design3. 效果真实,如能找出最优(或者是看上去合理)4. 可以应对动态的游戏世界,例如起建筑如@王亞暉 所说,一般用于寻路的算法是A Star:首先是A Star有利用到启发式函数(Heuristic Function)[1],和另一...
摘要由CSDN通过智能技术生成

RTS中的寻路系统一般需要满足有以下几个条件:

1. 效率高,因为rts普遍地图大,单位多,所以处理效率很重要
2. 易编辑,以便于level design
3. 效果真实,如能找出最优(或者是看上去合理)
4. 可以应对动态的游戏世界,例如起建筑

如@王亞暉 所说,一般用于寻路的算法是A Star:

    首先是A Star有利用到启发式函数(Heuristic Function)[1],和另一个算法Dijkstra(A Star的无启发函数版)相比可能会更有效率,因为启发函数设计得当,可以大大减少计算的数量。
    因为启发函数的估计往往不是精确的,所以A Star [删:不像Dijkstra,] 不一定能找出人类人之上的最优解,但是对于游戏来说,看上去合理就行。

然而用A Star作为寻路算法,仅仅是寻路系统的基本部分。
作为系统,它需要有易编辑的特性。
这就涉及到A Star中每个节点(Node)的表现方式

最基本的表现方式是方块(Tile),如下图 [2]

9e41b9b61d81e9a99bef30d8e4f0016d.png


其中,可以将山洞所占的的几个方块设为“Not Movable”,这样A Star就会不会考虑到这几个方块,系统所生成的路径就不会碰到山洞。
用方块作为A Star节点优点是简单,
不过也有比较多的问题,
第一是,如果地图很大的话,方块就会很多,这样A Star的节点就会大大增加,处理的时间相应地会增大。
第二是,单位的移动只能是上下左右,最多加上斜行,总共八个方向,不够真实
第三是,单位的体积大小不一样的话,大单位的图像可能会覆盖到“Not Movable”部分。以上面的图片为例,一条路径会经过在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值