5

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

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

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

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

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

所以我的问题是:以最有效的方式对多个“机器人”实施大规模寻路算法的最佳方法是什么。

谢谢,

詹姆士

4

2 回答 2

2

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

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


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

于 2012-04-12T10:01:55.887 回答
0

只缓存结果。

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

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

你可以做很多优化:)

就像 c69 说的 swarm AI 或蜂巢思维浮现在脑海中:P

于 2013-10-28T03:54:31.283 回答