大规模的寻路探测

时间:2012-04-12 09:40:27

标签: javascript html5 path-finding a-star

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

除了寻路之外,这一切都很顺利。

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

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

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

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

谢谢,

詹姆斯

2 个答案:

答案 0 :(得分:2)

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

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


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

答案 1 :(得分:0)

只需缓存结果。

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

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

您可以执行许多优化:)

与c69一样,人们会想到群体AI或蜂巢的心灵:P