《BeastLink》团队详解 SuperDestruction:百万级动态碎片的怪兽破坏与 UE5 网络同步

AI3D 发表于 3 周前 浏览 1 分类 新闻资讯

破坏长期以来一直是游戏中最具技术野心的特性之一,但很少有作品尝试将其推到 Grove Street Games 的 BeastLink 所承诺的规模。该项目围绕完全可破坏的多人环境中的巨型 kaiju 战斗开发,引入了一套名为 SuperDestruction 的专有技术栈,能够在单张地图中模拟数十万个可破坏实例以及近 1400 万个独立碎块。

系统并非依赖脚本化坍塌或大量手工编排的序列,而是设计为实时动态生成破坏。建筑会在玩家接近时以程序化方式组装,每次会话的坍塌方式都不同,并通过自定义网络与物理方案在多人对局中同步;这些方案是在对 Unreal Engine 5 进行大量修改的基础上构建的。

在本次采访中,Grove Street Games 的 CEO Thomas Williamson 解释了 SuperDestruction 如何从使用 Niagara 和自定义 HLSL 计算工作流的早期实验,演变为大规模联网破坏管线,甚至能够运行在当前世代主机上。

能否介绍一下 BeastLink,并解释项目背后的核心想法?你们希望用这个原创 kaiju 战斗 IP 带来怎样的体验?

Grove Street Games CEO Thomas Williamson:从本质上说,BeastLink 源于我们工作室想要打造终极 kaiju 游戏的愿望。迄今为止,每一款知名的 kaiju 游戏都只聚焦于战斗,或者 kaiju 本身只是玩法中的巨型场景装置。

在 BeastLink 中,你一开始只是一个步行的人类,身处这个巨大的、可破坏的沙盒中,受制于同样在地图上游荡的强大 kaiju(无论是玩家驱动还是机器人),直到你获得变成它们的能力。一旦你与这些巨大生物之一完成 BeastLink 联结,你就成为克服该局游戏场景障碍的终极工具,或者选择去恐吓对方队伍。

这里的一大卖点是 SuperDestruction 系统。从高层来看,它是什么?你在开发早期为它设定了哪些设计目标?

Thomas Williamson:这是我们的专有技术,让我们能够把通常只在大银幕上看到的 Kaiju 破坏力带入现实。我们的主要目标是设计一个系统,使我们能够为城市建筑提供动态内容,这些建筑可以碎裂成数量惊人的物理模拟碎块,并且能在网络上运行。我们需要它能在当前世代主机上运行。早期尝试现有系统时就很清楚,没有人用现有物理 API 真正考虑过这种规模。所以几年前,我们走上了一条构建全新事物的道路。

BeastLink Devs Detail the Tech Behind Its Massive Kaiju Destruction with Millions of Dynamic Pieces

当摩天大楼倒塌或大型结构碎裂时,是什么决定了破坏的展开方式?它完全由物理驱动、部分手工编排,还是两者的某种组合?

Thomas Williamson:SuperDestruction 中的一切都是完全动态的。BeastLink 中没有预先编排好的破坏。你每次看到建筑倒塌,都是它第一次以那种方式倒塌。实际上,每栋建筑都会在你靠近时即时组装起来,所以它们都不是真正的静态内容。老实说,我们才刚刚触及这个系统能力的表面。随着技术不断成熟,我们对各种可能性感到非常兴奋。

许多多人游戏把破坏处理成高度脚本化,或者主要放在客户端。为什么你们想从零开始构建一个完全联网的破坏系统?

Thomas Williamson:回头看,那大概是自负吧,哈哈哈。这是一项巨大的工程,我很容易承认我们起步时低估了它。不过,需求很明确。我们想要巨型 kaiju 在一款大型多人游戏中把城市搞得一团糟。而我们内容团队非常小,所以必须让破坏是动态的、易于迭代的。要真正实现这一点只有一条路:大量工作和实验。

BeastLink Devs Detail the Tech Behind Its Massive Kaiju Destruction with Millions of Dynamic Pieces

你说过 BeastLink 支持所有玩家之间实时同步的破坏。从技术角度看,确保每位玩家都能可靠地看到相同破坏结果的最大挑战是什么?

Thomas Williamson:幸运的是,这从设计上就是固有的。所有破坏在联网时都必须经过一个简单的思考过程:就与单个玩家精确匹配而言,这种破坏有多重要?

如果一只 Kaiju 在 1000 英尺外用尾巴扫过一栋建筑,我们可以信任玩家电脑模拟其中相当一部分。尤其是结合上下文:那种破坏很快就会让整栋建筑倒塌。玩家不需要完全正确的结果,只需要非常接近的结果。

现在,如果玩家扔出一枚手雷,在建筑上炸出一个洞以便进入,那么这次破坏的结果就需要非常精确。每个游戏事件都内置了启发式规则,按玩家感知的准确度对每个物理事件进行优先级排序。最后,我们为每个客户端准备了非常快速的校正技术,让它们与服务器“核对”,确保双方对破坏结果达成一致,并对玩家进行快速且无感的校正。

BeastLink Devs Detail the Tech Behind Its Massive Kaiju Destruction with Millions of Dynamic Pieces

最引人注目的细节之一是规模:单张地图上有 250,000 个可破坏实例和近 1400 万个独立碎块。你们如何在这种复杂度下构建、组织并优化破坏?

Thomas Williamson:考虑到我们的团队规模:大量使用程序化生成!每张地图大约 1 平方英里(2.5 km²)。除了一些例外,我们的建筑由套件构建,这些套件会自动填充外立面和内部。然后美术师可以进入并自定义。他们可以指定窗户和装饰线条图案、替换一层店面,并附加破坏道具作为点缀。

我们的树木和灌木会自动旋转、轻微缩放,并具有随机化的着色模式。任何能减轻填充这些密集地图的巨大工作量的事情,我们都尝试过了。

当然,还有大量自定义工作,比如桥梁、地标等,这些需要大量手动工作才能构建成可破坏资产。

BeastLink Devs Detail the Tech Behind Its Massive Kaiju Destruction with Millions of Dynamic Pieces

能否谈谈 SuperDestruction 在 Unreal Engine 5 中是如何工作的?系统的哪些部分依赖 UE5 内置功能,哪些地方需要你们创建自定义方案?

Thomas Williamson:它最早的迭代版本几乎就是纯 Unreal。我们基本上把 Niagara 当作计算着色器来用,配合大量自定义 HLSL 节点。这驱动了一张渲染查找表,我们在 Material Function 中用它来对各个碎块施加固定变换。可破坏资产本身使用其破碎工具构建,然后导出为我们创建的一种特殊 Static Mesh 资产。联网则是一堆在客户端和服务器之间来回发送的远程过程调用。

随着技术演进,我们做了大量修改,现在真正只是把 Unreal 的某些部分当作方便的胶水,让各个系统彼此通信。我们有将计算结果直接渲染进 GPU Scene Graph 的自定义渲染。我们为 Nanite 添加了一堆功能,以支持大量微小的动态子实例,同时不造成大量内存开销。我们的联网物理由确定性的客户端/服务器计算组成,并使用自定义数据结构来回传递结果。

BeastLink Devs Detail the Tech Behind Its Massive Kaiju Destruction with Millions of Dynamic Pieces

在一场多人对局中,同时出现这么多碎片、坍塌表现和环境变化时,你们如何处理网络复制与带宽方面的问题?

Thomas Williamson:我要特别说明的是,碎片本身以及它如何与玩家碰撞,对玩法产生的实际物理结果并没有太大影响。我们必须按玩家真正会在意或注意到的程度,来给破坏效果排优先级。并不是每一块碎片都在“正确模拟”着冲向玩家;关键在于有东西让这些碎片朝玩家飞来。这才是玩家最终在意的。引用罗恩·怀特(Ron White)的话:“关键不在于风在吹,而在于风把什么吹了起来。”

“完全的环境能动性”在实际玩法中意味着什么?玩家究竟有多大自由去重塑战场?

Thomas Williamson:因为一切都是程序化生成的,一切都可以被破坏,所以玩家可以按自己的想法随意切割这座城市,甚至精细到每一块玻璃。武器、载具、怪兽以及其他生物都能造成破坏。破坏是完全动态的,因此环境也是完全动态的。过去有很多游戏都做过这样的承诺。能走到今天、把它变成现实,非常令人兴奋。

BeastLink Devs Detail the Tech Behind Its Massive Kaiju Destruction with Millions of Dynamic Pieces

破坏技术在演示中往往看起来很震撼,但在真实的多人游戏环境里却很难平衡。

Thomas Williamson:确实如此!我们的游戏对局会以很有意思的方式推进,伴随着大量破坏和非对称玩法。随着风险升高、战斗变得更激烈,环境也会变得越来越平坦。这会移除通道和玩家的掩体,让他们暴露出来。我们最终通过到处设置奖励和掉落物来平衡破坏,这样承担风险的玩家就有机会变得越来越强大。 

我们做了超过十二种游戏模式,并对每一种都进行了大量测试,以找到沙盒、自由、竞争和涌现式玩法之间的最佳平衡。大多数都被丢进了垃圾桶,哈哈。我们有一张电子表格,上面还有大概一百个游戏模式创意。可能性太多了,想得我们脑袋都要炸了。在玩这款游戏时,我们知道我们创造出了人们从未体验过的东西,但这也伴随着一种合理的担忧:如果我们试图掌控游戏方向的一切,可能会搞砸。

我们指望着测试版和抢先体验玩家参与进来,给我们提供宝贵的反馈。所以我非常、非常兴奋能把这款游戏呈现给更多在乎它的人,让 BeastLink 的未来成为一项社区共同努力的事业。

BeastLink Devs Detail the Tech Behind Its Massive Kaiju Destruction with Millions of Dynamic Pieces

在构建 SuperDestruction 时,团队面临的最大性能障碍是什么?你们是如何克服这些障碍的?

Thomas Williamson:第一个问题是如何构建我们的几何体,使其能够以艺术家可以驱动的方式碎裂,同时又能符合物理表现。最终,我们构建了一套特殊的网格管线,使用 Unreal 的 Fracture 工具和自定义网格处理器,仅嵌入分离这些碎片所需的数据,并以一种高效的格式呈现,使物理引擎和 GPU 上的渲染器都能读取。

下一个大问题是如何高效地将所有运动碎片从其计算出的物理位置放入渲染场景,然后以高效的方式让全局光照和阴影保持准确。我们基于物理状态想出了一些有趣的技巧。Unreal 中的全局光照是跨多帧构建的,因此对于 GI 来说,一个快速运动的物理碎片其实完全无关紧要,所以速度很重要。阴影失效也类似。我们将物理碎片分组到智能盒子中,盒子的大小基于簇中的实际运动,然后只需使这些阴影区域失效。

BeastLink Devs Detail the Tech Behind Its Massive Kaiju Destruction with Millions of Dynamic Pieces

构建这样一个系统是否改变了你为《BeastLink》进行关卡设计或环境美术的方式?

Thomas Williamson:是的。而且我觉得,当我告诉我们的美术师这个系统与预先放置的贴花(decal)根本不兼容时,他们到现在还很生我的气。我们确实有一些在未来绕开这一限制的想法,但这就是那种让他们很困扰的严重约束之一。

另一个严重的约束是数据量本身。对我们来说,实时存储关于如何在地图中构建和定制一栋建筑的数据,比把所有成千上万个碎片的全部数据都存进一个文件里要高效得多。这与传统的虚幻工作流程非常不同,也带来了它自己的一些麻烦。

SuperDestruction 实现了哪些玩家行为或涌现式时刻,是更传统的破坏管线不可能做到的?

Thomas Williamson:太多太多了。不过说到底,这是一款怪兽(Kaiju)游戏。作为一个人类,躲在一只正在摧毁摩天大楼、试图够到你的巨大蜥蜴附近,有一种特别的感觉。你手里有资源,可以在他身后与一只沉睡的怪兽进行 BeastLink,也许你可以趁他忙碌时冲过建筑、从他的腿之间穿过……

BeastLink Devs Detail the Tech Behind Its Massive Kaiju Destruction with Millions of Dynamic Pieces

在《BeastLink》中有没有具体的例子,说明破坏会以有意义的方式直接改变策略、移动、视线或战斗流程?

Thomas Williamson:实际上,它被设计为从三个不同的视角改变所有这些方面!

作为人类,你可以使用火箭发射器、手榴弹、步枪等。你可以射穿窗户和门进入建筑。好吧,如果你用火箭发射器射穿窗户,火箭会冲破玻璃并摧毁它后面的任何东西,但你明白意思。这类互动为你提供了隐藏、蹲守或突然闯入区域的手段。

在载具中,无论是轿车、坦克还是固定翼喷气机,你都必须冲破各种障碍物,或把区域当作临时坡道,或灵巧地绕过正在倒塌的建筑飞行。你必须应对所有破坏产生的瓦砾,这些瓦砾会显著影响环境的通行。你必须根据预期的地形仔细选择载具。快速跑车适合躲避倒塌的建筑,但慢速SUV更适合在地面瓦砾中穿行。

如果你是怪兽,地图中的可破坏建筑会突然变成一种特殊的“拓扑结构”。摧毁挡在你和目标之间的建筑会获得经验值和“心灵同步”,但这需要时间。在狭窄空间中清理区域时,你可能更容易受到人类地面火力的攻击。但在开阔区域,你可以更快地移动。你会更容易受到直射火力攻击,尤其是来自飞行载具的攻击,但其他人类和载具能够抓住和/或吃掉它们。这其中很多都取决于具体情况,而且每次都不一样。

BeastLink Devs Detail the Tech Behind Its Massive Kaiju Destruction with Millions of Dynamic Pieces

对于阅读 80 Level 的开发者们,你们团队在 UE5 中构建大规模联网破坏效果时学到的最重要的经验是什么?

Thomas Williamson:说实话,我不确定我会推荐这种做法!这是一个令人心惊胆战的开发过程,因为我们同时在做一款游戏和一项技术,而且我们不知道当今的硬件能否处理得了。由于低帧率以及服务器和网络卡顿,我们的玩法在很长一段时间里都不好玩,而且真的很难知道这一切最终会如何整合到一起。但后来它确实成了。让这个系统顺利契合,花了数百个各自独立的绝妙想法。 

我想说,我们学到的最重要的经验更偏向哲学层面:如果你有一个宏大的梦想和宏大的想法,就让杰出的人围绕在你身边,然后开始干活。我知道,当我回首这段开发周期时,我总会想起和我一起完成它的人以及为什么这么做,而不一定是我们所面对的挑战。

BeastLink Devs Detail the Tech Behind Its Massive Kaiju Destruction with Millions of Dynamic Pieces

相关链接

原文链接:https://80.lv/articles/beastlink-devs-detail-the-tech-behind-its-massive-kaiju-destruction-with-millions-of-dynamic-pieces

喜欢这篇内容吗?