概述

为了确保机器人能够绕过建筑物和树木等障碍物,我们使用了 导航网格 系统。此系统根据高度贴图、陆地网格或水(取决于设置)生成一个单独的网格,用于定义机器人可以遍历的区域。网格在 daEditorlocationed/properties 选项卡下生成。

导航网格在每次导出时都会生成一个二进制文件。

导航网格是自上而下生成的,这意味着桥梁或其他高架资产下不会有导航网格。要避免这种情况,可以在 develop/gameBase/config/navmesh_layers.blk 中的 filter{} 块下指定要排除的 rendinst。语法如下

"^.*af_conveyor.*$" {}

这是一个正则表达式,允许您按名称排除所有资产或特定资产。请注意,结尾 *$" {} 是必需的。

Important

要成功生成地面导航网格,关卡中必须至少存在一条样条(水上导航网格仅基于水面计算)。

导航网格跳转、链接和掩体接口

Navmesh jumps, links, and cover interface
  • Export jump links mesh: 生成跳转链接,这对于大多数地图来说都是必不可少的。 没有这个,机器人将无法跳过栅栏。

  • jump over height: 机器人可以跳过的障碍物的最大高度。

  • jump length: 障碍物的深度和两个跳跃点之间的最大距离。

  • delta height: 定义将单个 jump link 拆分为较小跳跃的高度差(防止 Bot 跳过过高的物体,如杆子)。

  • merge delta angle: 合并不同跳转链接的角度。

  • max angle between edge: 另一个与 Jump Link 合并相关的设置。

  • Export covers: 为 Bot 生成 Cover Points。

对于前四个设置,这些只是封面的大小限制:

  • min window for shoot: 定义一个窗口(例如,一个小开口),机器人可以通过该窗口进行射击。一旦找到,它就标志着一个掩护点的结束。

  • collision transparent: 确定碰撞的透明度。此功能的精度有限,因为体素化碰撞不精确。由于简化的碰撞数据用于地图生成,因此可能无法识别小间隙(例如,对于具有大开口的手推车或栅栏)。

  • delta height: 与跳转链接类似,此设置根据高度差异划分掩体点(例如,中间有窗户的墙壁可能会导致三个单独的掩体点:完全覆盖、半覆盖和完全覆盖)。

  • shoot depth: 检查从掩体射击的可能性。生成机器人可以射击的特殊点,这些点是从掩体的边缘追踪的。


坦克导航网格

坦克导航网格受样条线约束。您可以使用现有样条曲线,也可以专门为导航网格创建新样条曲线。

Tank navigation mesh

如果样条在属性面板中启用了 Use for navmesh 复选框,则网格将包含样条周围指定半径内的区域。


创建导航网格后,水平仪目录中会出现其他文件,如 navMesh.PC.bin 和/或 navMesh2.PC.bin

要在 daEditor 中查看导航网格,请在面板中启用 show exported navmesh 选项。

要在游戏中查看导航网格,请使用控制台命令ai.debug_nav

常见错误

以下错误指示关卡中缺少 tank/ship navigation mesh:

18.43 [F] $03 FATAL ERROR: skyquake\prog\main\app.cpp,5191: assert failed in ..\..\skyquake\prog\main\app.cpp:5191,AcesApp::doJob() : "pathfinder::isLoaded() || (strstr(levelFileName, "avg_") != levelFileName && strstr(levelFileName, "avn_") != levelFileName)" Call stack (5 frames): ...

在 daEditor 中显示导航

可以从以下菜单中切换导航和其他对象显示模式:

Displaying navigation in daEditor
  • Show exported nav mesh: 显示具有红黄叠加层的导航区域。

    Show exported nav mesh
  • Show exported covers: 绿色显示人工智能的覆盖点。

    Show exported covers
  • Show exported nav mesh obstacles: 用紫色方框显示导航障碍。

    Show exported nav mesh obstacles