Optimization 如何使用二进制节点高效缓存最短路径计算?

Optimization 如何使用二进制节点高效缓存最短路径计算?,optimization,memory,lua,path-finding,Optimization,Memory,Lua,Path Finding,我正在做一个游戏,在这个游戏中,我需要一种方法来找到场景中两个节点之间的最短距离 实际的路径查找很好,我们使用*来实现。 它的计算速度在很大程度上是不错的,但由于它是用于优化形式的声音“绕射”(想想r6seave),我们根本不需要太多的实时计算。尤其是在需要如此频繁的情况下 这就是目前在源和侦听器之间寻找最短路径的情况 绿色节点=路径节点 蓝色节点=“闭合”路径节点 红色=可破墙 在本例中,您可以看到房间右侧有一面红墙。 这些节点是关闭的,因为墙处于接触状态,但如果发生爆炸,并且其中一个节点位

我正在做一个游戏,在这个游戏中,我需要一种方法来找到场景中两个节点之间的最短距离

实际的路径查找很好,我们使用*来实现。 它的计算速度在很大程度上是不错的,但由于它是用于优化形式的声音“绕射”(想想r6seave),我们根本不需要太多的实时计算。尤其是在需要如此频繁的情况下

这就是目前在源和侦听器之间寻找最短路径的情况

绿色节点=路径节点

蓝色节点=“闭合”路径节点

红色=可破墙

在本例中,您可以看到房间右侧有一面红墙。 这些节点是关闭的,因为墙处于接触状态,但如果发生爆炸,并且其中一个节点位于爆炸半径内,则该节点将打开

因此,在这种情况下,如果该节点被打开,最短路径可能看起来像这样

同样,如果修复了墙,则可能会再次关闭节点

现在我们的问题就在这里。我需要一种方法来“缓存”两个节点之间的最短路由,用于每个节点配置。只有墙上的节点才能被关闭,但即使如此,如果我们有大量的墙可以被破坏,为每一个打开/关闭的节点组合都有一个缓存/查找表,这看起来就像是一个巨大的数据/内存量,采取这样的野蛮方法似乎非常愚蠢甚至不可能

你们建议怎么做?如何压缩数据,使存储每个配置的缓存表的潜在内存不会太高?一些奇特的数据结构

我不一定是游戏开发的初学者,但我对这类问题还是比较陌生的

谢谢!:)