Navigation Lab 是在游戏中成功使用 Gameware Navigation 的关键工具。在集成和开发过程中,您将使用 Navigation Lab 为自己的地形生成 NavData,并通过实时连接对运行中的游戏进行实时可视调试。
打开 bin/win<platform>_<toolset>_release-md/NavigationLab.exe。将显示 Navigation Lab 主窗口:
您可以逐页浏览这些图形,大概了解与 Navigation Lab 提供的不同工作流相关的控件。如果在任何时候需要有关任何控件的详细信息,请参见界面中的工具提示。
LabGame 是一个小型控制台应用程序,包含一个预先集成有 Gameware Navigation 的简单游戏引擎。它接受从 Navigation Lab 发送的命令,然后通过将集成到您自己游戏的实时可视调试系统在 Navigation Lab 中显示命令的结果。
LabGame 在 Gameware Navigation 支持的所有平台上运行。您可以在网络上的任何其他计算机或控制台上启动它,然后通过 TCP 连接 Navigation Lab。
启动与正在运行的游戏的连接时,Remote application 工具箱中的 Disconnect 按钮变为高亮显示。任何时候您都可以单击此按钮来断开连接或停止重试失败的连接尝试。
成功连接到 LabGame 后,您可以开始浏览 Navigation Lab 中提供的 SDK 示例。在主 3D 视图左侧的 Samples 面板中列出这些示例。
打开 avoidance 文件夹,然后单击 FrontAvoidance 条目。
Navigation Lab 将打开一个新窗口,其中显示示例的用途描述、示例在磁盘上的位置和示例的代码。
请注意,代码包含一系列命令,例如 labopenfile、gamespawnbot、gamespawnboxobstacle、gamebotsetroute 等。启动示例时,带有前缀 lab 的命令将在 Navigation Lab 中执行,带有前缀 game 的命令将发送到 LabGame 以在游戏引擎中执行。您也可以自己在示例过程中执行命令。稍后,我们将介绍执行此过程的不同方式。
单击 Start 按钮启动示例。(如果您尚未连接到 LabGame,则系统会提示您在本地计算机上启动它。)当示例加载时,您应该看到城市街道的俯视视图,有两组人物(黄色圆柱体)分别从一侧走动到另一侧。在移动过程中,他们动态改变其轨迹以彼此避让、躲避移动的橙色障碍物以及标记为不可行走的几个静态体积(带有紫色轮廓的区域,不包含 NavMesh)。
动作面板位于 3D 视图的正上方,包含许多选项卡,提供了各种命令,用于生成不同种类的对象和与这些对象进行交互,以及控制在游戏引擎中发生的情况。
其中的大多数动作仅在 Navigation Lab 连接到 LabGame 时才起作用。它们主要用于提供一种简单的方法来玩 SDK 示例。
连接到您自己的游戏时,默认情况下,这些动作不会产生任何效果。虽然您可以完全控制在 3D 视图中渲染哪些数据、操纵时间轴,录制和播放等,但是您从 Navigation Lab 向游戏发送数据的能力会受限,也不能改变在游戏中发生的情况(除非您选择将 LabEngine 项目中的命令框架合并到您自己的游戏中)。
默认情况下,将使用飞行摄影机,您可以使用箭头键或键盘左上角的键(英文键盘上的 WASD 键)向前、向后和左右移动此摄影机。使用鼠标旋转视图,使用鼠标滚轮在垂直轴上向上和向下移动。
其他摄影机模式和配置值在主窗口顶部的 Camera 工具箱中提供。请参见在 3D 视图中移动。
如果在 Visual debug view 中展开某个类别,您可以显示和隐藏有关选定类别的特定信息项目。请注意,您可以分别配置对于 3D 视图中选定的实例渲染哪些数据,以及对于 3D 视图中未选定的实例渲染哪些数据。
请注意,为了节省带宽,游戏不会通过可视调试系统将这些项目发送到 Navigation Lab。而是在您调试自己的游戏时,从您本地计算机上的位置自动加载或按需加载数据文件。但是,在这种情况下,内置示例会包括指示 Navigation Lab 在启动时加载所需地形并生成 NavData 的命令。
按住 Ctrl 键并单击 3D 视图中的可视调试对象将其选中。3D 视图将用一个绿色的轴对齐选择指示器框来环绕该对象,并渲染有关选定对象的其他信息。
若要查看选定对象的特性列表,请打开 3D 视图右侧的相应面板。
此外,您还可以使用 3D 视图上方操作面板的 SelectedBot 选项卡中的命令控制选定对象。此选项卡提供了一些命令,例如,控制人物的去向、发送到 Navigation Lab 的可视调试信息级别、将人物从游戏中完全删除等命令。例如,您可以通过选择 Set target 将人物发送到新的目标位置,或者通过选择 Set route 创建人物要跟随的一组新路径点。
如果在命令后显示键盘快捷键,则可以使用快捷键,而不用打开上下文菜单。例如,如果您想要将选定人物发送到新位置,您只需指向该位置并按 t 键。
当您连接到 LabGame 时,您可以在场景中生成新对象,例如人物、动态障碍、TagVolume 等。若要生成对象,请从动作面板的一个选项卡中选择适当的命令。
例如,若要生成新人物,请选择 Bots > Bot 命令(或只需按 b 键)。系统将要求您将光标指向 NavMesh 中的任意位置以为新人物选择生成点。按空格键以完成命令。Navigation Lab 向 LabGame 发送一个命令以创建人物,该命令可在 Log 窗口中查看。
LabGame 将创建新人物,将其设置为寻径和跟随路径直到某个随机目标(或者,如果您生成具有路线的人物,则在您提供的路径点之间)。然后,它将开始将有关该人物的可视调试数据发送回 Navigation Lab。您将看到它显示在 3D 视图中并开始跟随第一段路径。
智能对象可以自动控制角色跟随路径的方式,以便触发自定义移动或播放自定义动画。
智能对象通常特定于每个游戏;它们高度依赖有关游戏玩法情景的详细信息,以及依赖于有关在游戏中使用的动画、物理和运动子系统的技术考虑因素。Gameware Navigation SDK 不包含任何通用智能对象;它将尝试提供一些工具,使您能够尽可能轻松地创建您自己的智能对象。
但是,LabEngine 包含一些示例智能对象,可以模拟常见类型的对象,例如电梯、门和跳跃点。将 Navigation Lab 连接到 LabGame 后,您随时可以生成这些智能对象。例如,以下步骤可以创建人物可以用来登上屋顶的智能对象。
您应该看到这两点之间的绿色箭头,这表示新 NavGraph 中的一条边。有关 NavGraph 的详细信息,请参见 NavData。
新 NavGraph 还用与智能对象关联的自定义数据值自动标记。您应该看到一个绿色圆弧,它显示了在路径中使用 NavGraph 时智能对象让角色跟随的轨迹。
人物应计划一个新路径,其中包括跳跃对象和木板。当它跟随路径时,每次智能对象(如跳跃)完全控制其移动,使其跟随自定义轨迹时,它都会变为蓝色。请注意,人物走过木板时并不变为蓝色:木板不完全控制角色的移动,而是使用默认路径跟随系统指引角色沿着 NavGraph 走到木板的另一端。
请注意,将自动修改该区域中的 NavMesh,以反映智能对象的存在:Spawn Lava 命令创建一个 TagVolume,用与智能对象关联的自定义数据标记来标注该区域。只要在路径中使用标记的区域,此智能对象就会让所有人物跳过该区域。例如,在下面的图像中,蓝色人物正在沿智能对象为其计算的轨迹(以红色显示)跳跃,而其下面的黄色人物正在接近标记的区域。
有关 LabGame 和 LabEngine 中的智能对象的更多示例,请参见 Samples 面板中 smartobjects 类别下的示例。
有关在您自己的游戏中实施您自己的智能对象的详细信息,请参见创建智能对象。
您可以使用 Navigation Lab 为您自己的游戏关卡生成 NavData,将其发送到 LabGame,然后使用由示例框架提供的命令直接在您自己的地形中生成人物、障碍甚至智能对象。您会发现,这对快速生成原型或者只是试用示例都很有用。
有关为您自己的地形生成 NavData 的详细信息,请参见集成阶段 2:生成第一个 NavData。
您会发现所有示例的源代码都列在 Samples 面板中的 data\NavigationLab\examples 子目录下。每个示例都在其自己的 .LabSample 文件中,该文件包含将在 Navigation Lab 中运行或将发送到 LabGame 执行的命令列表。
通过在此目录中创建新的 .LabSample 文件,或者复制现有 .LabSample 文件并修改其中的命令,您可以创建您自己的示例。
Samples 面板中的树视图反映了 examples 目录的当前内容,以便您能够在 Navigation Lab 中轻松启动新文件。