Optimization 在功能较弱的设备上进行手机游戏(如rts)时,是否有任何寻路技巧和策略?

Optimization 在功能较弱的设备上进行手机游戏(如rts)时,是否有任何寻路技巧和策略?,optimization,artificial-intelligence,game-engine,Optimization,Artificial Intelligence,Game Engine,我正在开发一个2d游戏,rts游戏,有点像COC(部落冲突)。很酷的手机游戏,嗯。但我在路径查找方面遇到了一些问题,像往常一样,当每个代理通过手指触摸放置在屏幕上的某个位置时,我会执行路径查找算法,但在某些情况下,这会导致性能下降,并且当代理突然同时增加时,您的手机会非常热 事实上,无论我使用什么路径查找,例如a*、dijkstra或某种特殊的(可能是最优的)路径查找,在整个游戏循环中都是耗时的过程,尤其是在功耗较低的移动cpu上的大型代理。据我所知,像这样的一些游戏,最短路径不是重点(人们会关

我正在开发一个2d游戏,rts游戏,有点像COC(部落冲突)。很酷的手机游戏,嗯。但我在路径查找方面遇到了一些问题,像往常一样,当每个代理通过手指触摸放置在屏幕上的某个位置时,我会执行路径查找算法,但在某些情况下,这会导致性能下降,并且当代理突然同时增加时,您的手机会非常热

事实上,无论我使用什么路径查找,例如a*、dijkstra或某种特殊的(可能是最优的)路径查找,在整个游戏循环中都是耗时的过程,尤其是在功耗较低的移动cpu上的大型代理。据我所知,像这样的一些游戏,最短路径不是重点(人们会关心路径代理故意通过吗?),而不是高效自然的路径查找。所以我想到了一些解决办法,也许不切实际

解决方案1:使用一些更便宜的路径查找算法,可以是与图形相关的或其他的,因为最短路径并不重要

解决方案2:在ai模块上设置一些限制来处理代理进行路径查找,例如,间隔时间内对路径查找算法调用的上限,即,这些代理中只有一个或两个代理进行了规划,让其余的代理在几个游戏帧后进行规划。如你所知,它的缺点是显而易见的

以上是我的想法。希望你们的游戏开发者纪律严明的家伙给我一个绝妙的主意,技巧,我会欣赏的。多谢各位

编辑: 这是我的相关伪代码,以及与我的游戏逻辑相对应的过程。

//内部逻辑线程
程序性腐败剂
if(需要在世界空间上放置代理)
//为代理执行标准a*路径查找
path_list=do_aStar_path_finding(attacktargetpos,startpos);
然后将路径_列表排队;
......
结束
视觉代理最终使用的路径列表队列用于向前推进。有什么提示吗?

查找“分层寻路”如果你要开车去一个很远的城市,你在上车之前没有计划好整个路线

寻路通常是分步骤完成的,就像它不是一个函数调用一样,在N次迭代后它将返回(并指示它尚未完成),以便在下一个可用时间运行。基本上,不是一个带有局部变量的函数,而是将
操作符()
和状态变量看作类的成员


为了加快速度,你可以使用*寻路的启发式方法,假设我使用10*距离的启发式方法,因为乌鸦飞,它可能找不到最短的路径,但它会强烈倾向于朝目标前进,而不是“散开”并在封闭区域周围进一步探索。

这个问题太广泛了。如果你发布了你的代码,我们可能会指出一些优化,尽管你应该在代码评论上发布:真的很抱歉这篇文章。好久不见了。因为在我的国家,堆栈溢出被某种方式阻塞了|