我已经在这个话题上挖掘了很多,但感觉还不够全面。
所以这里是我的发现:
作为Divinity引擎的延续,他们使用了一个叫做“AI格”的基于网格的系统。它与navmesh烘焙类似,但没有将所有东西转换成大三角形,而是保持着方格的形状。同样的系统也被用于元素表面和云(如酸性地面或水)。
可以在modding工具(特别是“解锁”的工具)中看到BG3中使用了相同的系统,这与Divinity老版编辑器中的内容相似。
这个系统有一个重要的限制:烘焙的过程是将方格投影到其上的第一块可行走的表面上。因此,根据我的理解,如果两个可行走的表面在同一个AI格中,就应该是不可行的(甚至可以在Divinity地图编辑器的旧版论坛中找到关于这一限制的讨论)。
但如果你已经玩过游戏,你就应该记得那些清晰的垂直性:多层楼建筑,顶层平台,高处的可行走木梁等。假如这一限制仍然存在于引擎中,那么它就能解释为什么几乎每个这样的区域都将这些表面用梯子分开。这基本上就是流行引擎中的NavigationLink,易于连接navmeshes或在这里的AI格。它是一种“一旦意识到就无法回避”的东西,因为你就会开始注意到每个游戏中的表面都被限制为平坦,而其他层次之间的分隔则使用梯子。
我对一些地方的确切性不太确定,例如最后的灯光酒馆或月升塔,第二层是通过楼梯而不是梯子分开的。也许他们在那里放置了一个清晰的navigation_link-like东西来连接两个区域,或者也许还有其他东西允许这一点。
那些是我有些确定的东西,但接下来的是我完全无从得知的。
比如路径寻找是如何工作的?他们的A*是否在这些网格细胞上作为节点运行?但如果是这样,那么为什么游戏从来不觉得角色被困在网格细胞中?我是说,我们可以站在“两个细胞之间”。并且,运动路径预览总是显示一个非常平滑的线。这里我只会猜测的是,在短距离上,路径寻找可能更接近传统的navmesh种类,而在长距离上,网格细胞作为节点的基于(类似于Dota 2的短路径和长路径 https://liquipedia.net/dota2/Pathfinding)。
并且,最有趣的东西,也基本上是单独最好的理由我会考虑整个AI格系统的——“游戏中的角色是如何跳跃路径寻找的?”。
类似于角色可以轻松地确定他们可以跳跃到你身上,跳过悬崖甚至可以到达你摧毁梯子后面的区域。并且,这并不是像在navmesh上放置NavLinks那样有限的,它们可以从任何细胞中跳跃(或至少我这样认为)。
我的猜测是,这个非常网格节点系统允许在每个细胞中烘焙一个列表,表明你可以跳跃到哪些细胞(具有不同的跳跃强度),或者也许它是动态的,它通过泛洪搜索找到合适的细胞。
在这个游戏中,敌人AI追逐你感到很好。它显然不是完美的,尤其是在你远处时,角色会因为某些内部限制而直接朝你跑去,然后卡在墙里。但是,根据我知道的,没有其他游戏比这个更好的例子。
我也很奇怪,是否BG3的modding工具中有调试视图来查看路径寻找,这可能会使其更清晰。只有一些关于创建级别的视频教程,我看了几分钟,人们提到BG3确实使用了网格系统烘焙。也许打开游戏级别(如果可能)在工具中会揭示一些关于楼梯和不同网格区域的细节。
评论 (0)