本页列出了为升级至 2014 版本而必须对代码或管线所做的更改。
此版本在初始化人物、自定义寻径和路径跟随系统方式上做出了一些重大更改。
有关新系统的完整详细信息,请参见寻径和路径跟随一章中的主题。相关内容概述如下:
一个新的 BotConfig 类收集所有与人物生成和跟随路径方式相关的配置参数。您可以设置此配置对象的实例,并在初始化人物时提供它,或者也可以在初始化后,通过调用 Bot 类接口中的取值函数方法更改配置参数。
此更改将删除多个曾在 BotInitConfig 中设置的参数,并添加多个新的配置参数和子类,用于配置在路径跟随中使用的特定对象。请参见自定义路径跟随。
在之前的版本中,寻径和路径跟随中涉及的许多查询和对象都依赖于称为 AStarCustomizers 或 NavTagPredicates 的模板参数,具体取决于使用情况。为简单起见,这些对象现在都将 TraverseLogic 类作为模板参数,例如 Gameware Navigation 随附的 SimpleTraverseLogic。虽然需要此类的方法与旧的 AStarCustomizer 和 NavTagPredicate 类似,但现在新 TraverseLogic 的所有方法都是静态的。
在路径计算和路径跟随期间,一个新的 NavigationProfile 类会作为人物使用的所有可自定义对象的工厂,其中包括寻径查询、轨迹计算机、回避计算机等。NavigationProfile 已模板化为特定的 TraverseLogic,后者将自动用于轮廓所服务的所有对象。这样可以确保在计算路径和跟随该路径时,会使用相同的遍历逻辑。从轮廓检索对象还允许人物尽可能共享对象实例,从而减少内存占用。
默认情况下,每个人物使用由 World 维护的一个 NavigationProfile 默认实例。但是,如果您想要自定义人物的寻径和路径跟随中使用的任何对象,可以使用您自己的自定义类的实例设置人物(重新实现 NavigationProfile 接口中的方法)。请参见自定义路径跟随。
引入基于样条线的路径跟随同时也引入了新的路径跟随约束,并使某些旧的假设失效。因此,先前版本中使用的 PathFollower 类已删除。保持人物沿其路径前进的功能现在由新的 PathProgressComputer 类来处理。
如果您先前依赖由 PathFollower 类计算的目标点,该目标点现在由 ShortcutTrajectory(即先前版本中称作 Trajectory 的类)来计算。相反,新的 PathProgressComputer 将人物的当前位置投影到其原始路径,生成一个标记,始终如一地指示人物沿其路径前进,即使人物由于捷径或动态回避偏离原始路径也是如此。如果您需要监视 Bot 是否到达其目标,或者是否沿路径前进,您可以使用此前进标记代替目标点。请参见监视路径跟随。
初始化查询的步骤已更改,以便于在配置参数相同但输入值不同的情况下,重新启动查询。在此版本中:
有关详细信息和代码示例,请参见使用查询系统。
在之前的版本中,可视调试系统将每一帧视为连续调用 World::Update() 之间发送的所有消息和显示列表的总和。但是,由于 World::Update() 调用可以放置在主游戏循环的不同点,这可能会导致可视调试数据从对应的游戏帧偏移,或者可能导致两个连续游戏帧中发送的数据合并在同一个可视调试帧中。
为了避免此混淆,客户需要通过调用新的 VisualDebugServer::NewFrame() 方法,在游戏中明确标记每一帧的开始。此方法会将任何未完成消息发送至 Navigation Lab,并增加或重置当前可视调试帧的索引。
请参见集成阶段 1d:设置可视调试。