首页 文章

大规模的寻路探测

提问于
浏览
5

我正在尝试用Javascript创建塔防游戏 .

除了探路之外,这一切都很顺利 .

我正在使用来自这个网站的astar代码:http://www.briangrinstead.com/blog/astar-search-algorithm-in-javascript它使用二进制堆(我认为这是相当优化的)

我遇到的问题是我想让人们阻止“攻击者”的路径 . 这意味着每个“攻击者”都需要能够自己找到出口(因为有人可能会切断一个“攻击者”,并且需要找到自己的出口方式) . 现在5/6的攻击者可以在任何时候找到路径而没有任何问题 . 但是说这条路径被10个攻击者阻挡了,所有10个攻击者需要同时发射它的寻路脚本,这只会使FPS下降到每秒1/2左右 .

对于那些在任何时候都有很多实体寻路的人来说,这一定是一个常见的问题,所以我想必须有比我的方法更好的方法 .

所以我的问题是:以最有效的方式将质量寻路算法实现到多个“机器人”的最佳方法是什么 .

谢谢,

詹姆士

2 回答

  • 0

    使用Anti-objects,这是获得廉价寻路的唯一方法,afaik:http://www.cs.colorado.edu/~ralex/papers/PDF/OOPSLA06antiobjects.pdf

    反对象基本上意味着你将拥有一个“swarm ai”而不是拥有单独ai的机器人,它将绑定到你的游戏 Map 上 .


    p.s . :这是一般关于寻路的另一个链接(可能是最好的在线参考):http://theory.stanford.edu/~amitp/GameProgramming/index.html

  • 2

    只需缓存结果 .

    将路径存储为哈希表(对象)中的值,为每个节点提供UUID,连接UUID以形成唯一的哈希表键并将路径插入其中 .

    当你从哈希表中检索回路径时,走路径,看看它是否仍然有效,如果没有,重新计算并重新插入新路径 .

    你可以做很多优化:)

    像c69一样,人们会想到群体AI或蜂巢头脑:P

相关问题