我一直在制作一个2D自上而下的射击游戏,我已经实现了大部分游戏并在JOGL中从头开始编写引擎但是我遇到了一个小问题并希望得到其他人的观点如何最好地解决问题。因此,我在地图中的随机位置生成小兵,并且这些小兵中的每一个都使用A *路径查找,它已经过优化以最大限度地减少不必要的检查,但地图很大,可以是10x10到200x200的任何瓷砖,并且唯一的减缓显着下来的是人工智能,我也试图实现一种基于距离的解决方案,其中小兵一直处于空闲状态,直到我处于一定的范围内,但由于产生了许多小兵,这仍然会减慢游戏速度。任何建议将不胜感激。
答案 0 :(得分:1)
有很多方法可以加速你的代码。
首先 - 可以使用A *算法的许多修改,例如:
如果你的小兵正在搜索播放器的路径(所有小兵都有一个目标),那么其他修改可能更具针对性,那么你可以将搜索更改为以下算法之一:
O(nlgn)
算法的40,000个顶点),并且只需将您的蠕变移动到任何与玩家距离较近的相邻点,然后是当前的另一种可能的修改,如果您的地图以某种方式特定(包含其某些部分的门/入口),则可以应用这种修改是放置触发器,“启用”爬行AI。这是O(1)
解决方案,但需要特定类型的地图。
最后一个想法是实施一些次优解决方案,例如:
T
,那么在下一次迭代中 - 重新计算你的路径,所以没有滞后还有无数的优化,但我们需要有关您的游戏的更多详细信息以及您希望花在这些优化上的时间。