从导航系统中期待什么
首先,在我们探索 Unreal 导航系统之前,定义我们对通用导航系统的期望是有用的。导航系统需要做到以下几点:
它需要确定在地图上的两个通用点之间是否存在路径(可以被执行查询的代理穿越)
如果存在这样的路径,返回对代理最方便(通常是最短)的路径
然而,在寻找最佳路径时,有许多方面需要考虑。一个好的导航系统不仅应该考虑这些因素,还应该在相对短的时间内执行查询。其中一些方面如下:
AI代理在执行查询时是否能够通过地图的特定部分?例如,可能有一个湖泊,而AI角色可能不知道如何游泳。同样,代理能否爬过并进入通风隧道?
AI代理可能希望避免(或偏好)某些路径,这些路径并不一定是最短的。例如,如果建筑物着火,代理应该试图避免这一点,或者冒被烧伤的风险。再举一个例子,如果说有两条路径:一条被敌人的火力覆盖,但很长,而另一条很短但暴露在敌人火力下;那么AI应该选择哪一条呢?虽然这可能是决策过程的一部分,但一些启发式可以在寻路层面上实现,导航系统应该支持这些启发式。
地图可能是动态的,这意味着障碍物、物体、道路、悬崖等在游戏过程中会发生变化。导航系统能否处理这些变化,并在它们发生时实时纠正生成的路径?
现在,是时候看看Unreal是如何实现所有这些特性的了。
最后更新于