Navigation Lab 快速入门

Navigation Lab 是在游戏中成功使用 Gameware Navigation 的关键工具。在集成和开发过程中,您将使用 Navigation Lab 为自己的地形生成 NavData,并通过实时连接对运行中的游戏进行实时可视调试。

本页面上的教程有两个重要用途:

步骤 1. 启动 Navigation Lab

打开 bin/win<platform>_<toolset>_release-md/NavigationLab.exe。将显示 Navigation Lab 主窗口:

将显示一系列图形,其中显示了该界面的主要要素:

您可以逐页浏览这些图形,大概了解与 Navigation Lab 提供的不同工作流相关的控件。如果在任何时候需要有关任何控件的详细信息,请参见界面中的工具提示。

步骤 2. 连接到 LabGame

LabGame 是一个小型控制台应用程序,包含一个预先集成有 Gameware Navigation 的简单游戏引擎。它接受从 Navigation Lab 发送的命令,然后通过将集成到您自己游戏的实时可视调试系统在 Navigation Lab 中显示命令的结果。

在本地主机上启动并连接到 LabGame:

LabGame 在 Gameware Navigation 支持的所有平台上运行。您可以在网络上的任何其他计算机或控制台上启动它,然后通过 TCP 连接 Navigation Lab。

在其他主机上启动并连接到 LabGame:

  1. bin 目录下的一个子目录中找到您的目标平台的 LabGame 可执行文件。将此可执行文件部署到目标主机并运行它。
  2. 在 Navigation Lab 中,单击 Remote application 工具箱中的 Connect

    将提示您提供有关您想要连接到的主机的一些信息。

  3. 如果运行游戏的主机显示在 Detected Servers 列表中,您可以将其选中并单击 Connect

    如果未显示,则在 Address 字段中输入该主机的 IP 地址。保留默认的端口号。

启动与正在运行的游戏的连接时,Remote application 工具箱中的 Disconnect 按钮变为高亮显示。任何时候您都可以单击此按钮来断开连接或停止重试失败的连接尝试。

Log 窗口中和 LabGame 打印到控制台的输出中会指示连接成功。

步骤 3. 使用 SDK 示例

成功连接到 LabGame 后,您可以开始浏览 Navigation Lab 中提供的 SDK 示例。在主 3D 视图左侧的 Samples 面板中列出这些示例。

打开 avoidance 文件夹,然后单击 FrontAvoidance 条目。

Navigation Lab 将打开一个新窗口,其中显示示例的用途描述、示例在磁盘上的位置和示例的代码。

请注意,代码包含一系列命令,例如 labopenfilegamespawnbotgamespawnboxobstaclegamebotsetroute 等。启动示例时,带有前缀 lab 的命令将在 Navigation Lab 中执行,带有前缀 game 的命令将发送到 LabGame 以在游戏引擎中执行。您也可以自己在示例过程中执行命令。稍后,我们将介绍执行此过程的不同方式。

单击 Start 按钮启动示例。(如果您尚未连接到 LabGame,则系统会提示您在本地计算机上启动它。)当示例加载时,您应该看到城市街道的俯视视图,有两组人物(黄色圆柱体)分别从一侧走动到另一侧。在移动过程中,他们动态改变其轨迹以彼此避让、躲避移动的橙色障碍物以及标记为不可行走的几个静态体积(带有紫色轮廓的区域,不包含 NavMesh)。

有关动作和命令的说明

动作面板位于 3D 视图的正上方,包含许多选项卡,提供了各种命令,用于生成不同种类的对象和与这些对象进行交互,以及控制在游戏引擎中发生的情况。

其中的大多数动作仅在 Navigation Lab 连接到 LabGame 时才起作用。它们主要用于提供一种简单的方法来玩 SDK 示例。

连接到您自己的游戏时,默认情况下,这些动作不会产生任何效果。虽然您可以完全控制在 3D 视图中渲染哪些数据、操纵时间轴,录制和播放等,但是您从 Navigation Lab 向游戏发送数据的能力会受限,也不能改变在游戏中发生的情况(除非您选择将 LabEngine 项目中的命令框架合并到您自己的游戏中)。

主要例外是 Generation 选项卡,仅当 Navigation Lab 连接到任何游戏引擎时该选项卡才起作用。

步骤 4. 移动摄影机

默认情况下,将使用飞行摄影机,您可以使用箭头键或键盘左上角的键(英文键盘上的 WASD 键)向前、向后和左右移动此摄影机。使用鼠标旋转视图,使用鼠标滚轮在垂直轴上向上和向下移动。

其他摄影机模式和配置值在主窗口顶部的 Camera 工具箱中提供。请参见在 3D 视图中移动

步骤 5. 选择要查看的数据

步骤 6. 选择和控制对象

按住 Ctrl 键并单击 3D 视图中的可视调试对象将其选中。3D 视图将用一个绿色的轴对齐选择指示器框来环绕该对象,并渲染有关选定对象的其他信息。

若要查看选定对象的特性列表,请打开 3D 视图右侧的相应面板。

此外,您还可以使用 3D 视图上方操作面板的 SelectedBot 选项卡中的命令控制选定对象。此选项卡提供了一些命令,例如,控制人物的去向、发送到 Navigation Lab 的可视调试信息级别、将人物从游戏中完全删除等命令。例如,您可以通过选择 Set target 将人物发送到新的目标位置,或者通过选择 Set route 创建人物要跟随的一组新路径点。

如果在命令后显示键盘快捷键,则可以使用快捷键,而不用打开上下文菜单。例如,如果您想要将选定人物发送到新位置,您只需指向该位置并按 t 键。

步骤 7. 生成新游戏对象

当您连接到 LabGame 时,您可以在场景中生成新对象,例如人物、动态障碍、TagVolume 等。若要生成对象,请从动作面板的一个选项卡中选择适当的命令。

例如,若要生成新人物,请选择 Bots > Bot 命令(或只需按 b 键)。系统将要求您将光标指向 NavMesh 中的任意位置以为新人物选择生成点。按空格键以完成命令。Navigation Lab 向 LabGame 发送一个命令以创建人物,该命令可在 Log 窗口中查看。

LabGame 将创建新人物,将其设置为寻径和跟随路径直到某个随机目标(或者,如果您生成具有路线的人物,则在您提供的路径点之间)。然后,它将开始将有关该人物的可视调试数据发送回 Navigation Lab。您将看到它显示在 3D 视图中并开始跟随第一段路径。

更改动作默认值

您可以配置动作面板中的许多动作,特别是生成动作,方法是单击动作按钮旁边的 图标。

例如,您可以将新人物配置为在默认情况下使用基于通道的路径跟随系统。在 Bots 选项卡上,单击 Bot [b] 动作右侧的 图标。在 Bot 窗口中,选择 Trajectory 选项卡,然后将 trajectoryMode 控件设置为“Channel”。

从现在开始每次生成新人物时,即使在关闭该窗口后,新人物也将自动使用这些新设置。若要恢复为原始设置,请重新打开该窗口,然后单击 Reset 按钮。

从命令行运行命令

您还可以将命令直接粘贴到 Log 窗口顶部的 Command line 字段中。这样您便可以自定义命令发送的所有值,或者重新执行以前的命令。在命令行上指定的任何参数将替代动作的默认值。

步骤 8. 放置智能对象

智能对象可以自动控制角色跟随路径的方式,以便触发自定义移动或播放自定义动画。

智能对象通常特定于每个游戏;它们高度依赖有关游戏玩法情景的详细信息,以及依赖于有关在游戏中使用的动画、物理和运动子系统的技术考虑因素。Gameware Navigation SDK 不包含任何通用智能对象;它将尝试提供一些工具,使您能够尽可能轻松地创建您自己的智能对象。

但是,LabEngine 包含一些示例智能对象,可以模拟常见类型的对象,例如电梯、门和跳跃点。将 Navigation Lab 连接到 LabGame 后,您随时可以生成这些智能对象。例如,以下步骤可以创建人物可以用来登上屋顶的智能对象。

  1. 在动作面板中,打开 SmartObjects 选项卡。
  2. 单击 Jump 动作。
  3. 将光标指向街道地面上的任意位置,然后按空格键。指向屋顶上的 NavMesh,然后再次按空格键。最后,按 Enter 键以完成跳跃。

    您应该看到这两点之间的绿色箭头,这表示新 NavGraph 中的一条边。有关 NavGraph 的详细信息,请参见 NavData

    新 NavGraph 还用与智能对象关联的自定义数据值自动标记。您应该看到一个绿色圆弧,它显示了在路径中使用 NavGraph 时智能对象让角色跟随的轨迹。

  4. 在动作面板中,单击 Plank 动作。
  5. 将光标指向同一屋顶上的任意位置,然后按空格键。指向其他屋顶上的 NavMesh,然后再次按空格键。最后,按 Enter 键以完成木板。

    您应该看到连接两个屋顶的另一个新 NavGraph 边,用紫色矩形显示其关联智能对象的位置。

  6. 按住 Ctrl 键并单击任何一个人物将其选中,将鼠标光标悬停在第二个屋顶上,然后按 t 键,将该屋顶设置为人物的目标。

    人物应计划一个新路径,其中包括跳跃对象和木板。当它跟随路径时,每次智能对象(如跳跃)完全控制其移动,使其跟随自定义轨迹时,它都会变为蓝色。请注意,人物走过木板时并不变为蓝色:木板不完全控制角色的移动,而是使用默认路径跟随系统指引角色沿着 NavGraph 走到木板的另一端。

智能对象还可以控制在 NavMesh 区域中的移动。例如:

  1. 在动作面板中,单击 Lava 动作。
  2. 设置熔岩池的范围,方法是指向每个角的位置,并按空格键。将其放置街道的中间,人物将在这里越过动态障碍。完成后按 Enter 键。

    请注意,将自动修改该区域中的 NavMesh,以反映智能对象的存在:Spawn Lava 命令创建一个 TagVolume,用与智能对象关联的自定义数据标记来标注该区域。只要在路径中使用标记的区域,此智能对象就会让所有人物跳过该区域。例如,在下面的图像中,蓝色人物正在沿智能对象为其计算的轨迹(以红色显示)跳跃,而其下面的黄色人物正在接近标记的区域。

有关 LabGame 和 LabEngine 中的智能对象的更多示例,请参见 Samples 面板中 smartobjects 类别下的示例。

有关在您自己的游戏中实施您自己的智能对象的详细信息,请参见创建智能对象

可选:在 LabGame 中使用您自己的地形

您可以使用 Navigation Lab 为您自己的游戏关卡生成 NavData,将其发送到 LabGame,然后使用由示例框架提供的命令直接在您自己的地形中生成人物、障碍甚至智能对象。您会发现,这对快速生成原型或者只是试用示例都很有用。

有关为您自己的地形生成 NavData 的详细信息,请参见集成阶段 2:生成第一个 NavData

可选:添加新示例

您会发现所有示例的源代码都列在 Samples 面板中的 data\NavigationLab\examples 子目录下。每个示例都在其自己的 .LabSample 文件中,该文件包含将在 Navigation Lab 中运行或将发送到 LabGame 执行的命令列表。

通过在此目录中创建新的 .LabSample 文件,或者复制现有 .LabSample 文件并修改其中的命令,您可以创建您自己的示例。

Samples 面板中的树视图反映了 examples 目录的当前内容,以便您能够在 Navigation Lab 中轻松启动新文件。