《明日潮汐》Story-Link 系统:异步多人叙事在虚幻引擎 5 中的实现
叙事类游戏传统上要求玩家塑造自己的故事。Tides of Tomorrow 将这个理念更进一步,允许其他玩家的决策成为你故事的一部分。通过其 Story-Link 系统,每次游玩都会跟随另一位玩家的旅程,他们的选择会影响对话、世界状态、遭遇,甚至角色对你周围事件的看法。游戏并未采用多人游戏进行直接合作或竞争,而是将异步互动作为其叙事的基础。
实现这一概念远比分支对话复杂。开发者 DigixArt 必须设计一个全新的叙事框架,能够在不破坏节奏、一致性和玩家自主权的前提下连接玩家。在幕后,Story-Link 结合了状态机逻辑、受多人网络启发的重放系统、分层后期处理特效以及精心设计的关卡排列,营造出另一位玩家曾真正在你之前经历过这个世界的错觉。
我们采访了游戏总监 Adrien Poncet、程序师 Jerome Aspe 和技术美术 Raphael Garcia,探讨了 Story-Link 的起源、在 Unreal Engine 5.4 中构建异步叙事系统、设计游戏充满活力的“塑料朋克”美学,以及创造我们近年来看到的技术上最具雄心的叙事系统之一。

Tides of Tomorrow 引入了“Story-Link”系统,即另一位玩家的决策直接影响你的体验。这个机制的原始灵感是什么?
游戏总监 Adrien Poncet:灵感实际上来自我们之前的游戏 Road 96。我们一直在寻找在游戏中讲述故事的新方式,在探索了 Road 96 中的程序化元素后,我们认为在我们的下一款游戏中探索多人元素可能很有趣。
在 Road 96 中,你会多次游玩游戏(类似 roguelite 方式),并且在某些时候,你能为下一个角色留下一些东西,比如藏一些钱以便下次游玩时找到。这让我们想到:如果这些角色各自是不同的玩家呢?
我们还研究了使用异步多人机制的游戏以获取灵感。《黑暗之魂》启发了我们关于看到玩家 ghost 的想法,而《死亡搁浅》则更多是关于其他玩家如何影响你的游戏世界。我们也看了像《Phantom Abyss》和《Mirror Layers》这样的独立游戏。
但我们有一个独特的想法,即让玩家直接相互影响彼此的故事,而对于这个确切的机制没有现成的蓝图,所以我们不得不从头开始构思。我们找到的最接近的参考是一款非常小众的游戏《Moirai》。
我们引入了许多独特的变体,比如 NPC 在对话中直接谈论之前的玩家,以模拟这位前玩家在那个世界中是一个真实角色的概念。

从系统设计的角度来看,Story-Link 在底层是如何构建的,使得玩家动作能够有意义地改变世界状态、对话、遭遇和关卡布局?
Adrien Poncet:找到正确的公式非常具有挑战性。我们希望每个玩家始终跟随其他人,同时也能被其他玩家跟随,所以事件时间线上不能有明确的“开始”或“结束”。技术上这是一个玩家相互跟随的无限链条,但从叙事上我们只考虑直接的前一位玩家和潜在的未来玩家(N+1 和 N-1)。
因此,我们采用“状态机”逻辑:每个关卡有多个状态,每个玩家的动作可以改变这些状态,使下一个玩家面对不同的状态。
起初,我们设计整个关卡有 3 种状态,但很快发现每次都改变整个关卡过于雄心勃勃。因此,我们转向一种方法,即关卡中的单独元素(如特定 NPC 或游戏元素)可以有自己的多种状态。在最终游戏中,每个关卡融合了这两种概念(一个全局状态会随每个玩家改变,同时该状态内的单独元素也会被改变)。
我们在每个关卡的基础上保持这种方法,以使其更易于管理。这给了我们更多灵活性,并确保分支可能性不会指数级爆炸。
这也允许你在关卡之间切换跟随的玩家,即使你“追上了”某人也能继续游戏。
最后,其他玩家可以大幅修改你的旅程以及你对关卡、事件和角色的视角,但最终,你仍然掌控着自己的目的地。这很好地平衡了让 Story-Link 系统发挥作用与保留传统故事游戏的乐趣——做出自己的选择并对自己故事产生影响。

游戏允许玩家通过可共享的 Story-Link Seeds 跟随朋友、主播、陌生人或预设存档。你们是如何设计这个系统以使其既具有社交性又在叙事上保持连贯的?
Adrien Poncet:对我们来说一个重要方面是让玩家通过体验表达自己的个性。这就是为什么我们引入了特质来反映不同玩家如何玩游戏并做出决策。
我们还围绕资源共享的理念构建系统,这与后末日设定和故事主题非常契合。它让我们能够在游戏世界中以具体且可触及的方式具象化玩家之间的交换,为“留下东西”的想法赋予更多分量。
从一开始,我们就特别关注玩家之间的一致性。我们一直有这样一个想法:如果你观看主播玩游戏,然后决定跟随他们,一切都需要有意义。这意味着我们不能“作弊”系统,必须确保每个变体在叙事上保持连贯。

最有趣的方面之一是“Tides of Time”视觉模式,它能让玩家亲眼看到其他玩家之前做过什么。这个功能在技术上和视觉上是如何实现的?
程序师 Jerome Aspe:在技术方面,它有点像多人游戏复制。系统存储在一个可配置时间窗口内执行的所有动作,包括它们的类型(交互、表情、移动)、玩家状态(皮肤、姿势、载具使用、速度)以及时间戳和位置等元数据。
系统记录最近 X 秒内执行的每个动作,并继续保存接下来的 Y 秒动作。一旦到达检查点或关卡结束,我们将玩家存档上传到服务器。
如果我决定跟随这个玩家,我将收到他们的存档数据。系统将使用之前保存的所有数据来简单地复制移动、动画和动作!
技术美术 Raphael Garcia:视觉效果由两个主要元素组成:分层后期处理特效和玩家“ghost”,由一个小型 Niagara 系统支持。
首先,后期处理特效。它由多个后期处理层叠加在一个后期处理体积内组成。分层工作而不是使用单个大后期处理通道给了我们更多灵活性,因为有时我们可以只激活某些通道而不激活其他通道,这很容易创建不同的强度级别并服务于场景设计。
将后期处理拆分为多个层还让我们能够独立控制每个通道的 Blendable Location,这有助于我们微调输入并优化性能。
Raphael Garcia:另一个有趣的点:后期处理的材质参数通过内部开发的系统独立动画化。它使用基于曲线的系统,允许我们精确地动画化每个材质层的参数,因此我们可以根据游戏中的不同状态非常精确地微调效果。
Ghost 是带有半透明材质的骨骼网格体,使用自定义 stencil 在后期处理中脱颖而出。出于优化原因,用作 ghost 的骨骼网格体是游戏角色的特殊版本。为了减少角色美术师的工作量,我构建了一个小工具,将每个角色的 albedo 重新打包,使 ghost 纹理适配为单一低质量纹理(相对于基础角色)。
叙事游戏通常大量依赖预先编写的剧情,而系统驱动类游戏往往优先考虑模拟。你的团队是如何在预设叙事与动态、玩家驱动的变化之间取得平衡的?
Adrien Poncet:很大一部分来自于系统的组合特性。通过让每个关卡中的不同元素拥有多种状态,我们能够从有限的授权内容中创造出大量不同的情况。
在此基础上,我们还通过一些更具系统性的功能(如商人、捐赠箱等)以及表情动作添加了额外的叙事层次,这使得玩家能够以更加涌现的方式表达意图和意义。
从技术角度来看,《Tides of Tomorrow》使用了什么引擎和核心技术?为什么它们适合这种系统驱动的叙事体验?
Jerome Aspe:《Tides of Tomorrow》基于 Unreal Engine 5.4 开发。我们还使用 Fluid Flux 处理海洋。
我认为它很适合这款游戏,因为我们仍然是一个相对较小的团队(30人),所以我们需要一个开箱即用、且团队已经熟悉的引擎。
此外,Unreal Engine 5 的节点化编码系统(蓝图)使设计师能够快速进行原型设计和制作小型游戏系统。
Raphael Garcia:我们选择全面采用 UE5 的现代渲染管线:在几乎所有的平台上都启用了 Nanite、Lumen 和 Virtual Shadow Maps(仅 Steam Deck 未启用 VSM)。
《Tides of Tomorrow》的资源量非常大,Nanite 让我们达到了预期的视觉质量。它也非常适合我们严重依赖顶点颜色的材质方案:因此,除了一些道具和角色外,大部分环境都使用相同的纹理。这样做的好处是让美术师能够在整个制作过程中快速迭代。

Raphael Garcia:在光照和阴影方面,Lumen 和 VSM 在预算范围内;它们带来的视觉质量使它们成为团队的明确选择。
此外,我们搭建了一个 Houdini PDG 管线,通过一个自定义的 Blender 插件处理所有的导出,自动处理资源:它生成顶点颜色,充当验证器确保每个导入 Unreal 的资源达到特定的技术质量标准,并在后台准备每个网格体的 LOD。这样做的目的是在制作过程中,如果我们决定在某个特定平台上切换到 LOD,可以作为一个备选方案。

Raphael Garcia:简单说一下顶点颜色:R 是环境光遮蔽,G 是带噪声的曲率,A 是按元素随机的属性,B 留给美术师自行绘制。

游戏独特的“Plasticpunk”美学风格在视觉上非常鲜明,融合了后末日主题、鲜艳色彩和塑料污染意象。你们是如何发展这种美术方向的?
Adrien Poncet:我们希望创造出不同于通常那种尘土飞扬、生锈的灰/棕色后末日场景的东西。而且,我们喜欢色彩!我们认为海洋的蓝色与塑料垃圾带来的其他色彩之间的对比可以形成一种引人注目且令人印象深刻的美术方向。
这是为游戏制作的最早的概念图之一,由漫画家 Thomas von Kummant 创作。

Adrien Poncet:一般而言,我们从这样的关键概念图开始,但之后我们不会制作太多概念图,我们喜欢直接在引擎中测试和迭代。我们团队中的每个人都非常多才多艺,所以我们的 3D 美术师通常在需要时自己制作概念图,以解决在制作 3D 资源之前遇到的任何问题。
我们的主要角色通常是一个例外;我们采用更传统的方式,在进入 3D 阶段之前完善概念图。
能否请您介绍一下构建一个必须同时支持多种叙事排列和玩家结果的关卡的工作流程?
Adrien Poncet:构建关卡并没有一个固定的模板,因为每个关卡根据初始构思都有其自身的约束和挑战。
在某些情况下,我们会先在纸上大量设计关卡,然后再进行原型制作。在另一些情况下,我们会先创建一个粗糙的“A”版本关卡,然后构建一个替代的“B”版本,并通过迭代逐步增加不同状态之间的互连。
恒定不变的是,这需要以某种“四维”方式思考:另一个玩家在关卡的另一个版本中可能做了什么,从而影响这个版本,反之亦然?
我们还设计了选择,使其始终具有双重目的:它们应该对当前玩家产生有意义的即时影响,同时为未来玩家留下痕迹。在这两者之间找到正确的平衡是关键,这样玩家就不会为了假设的未来结果而在当下感到受罚。

回顾过去,在构建一个让其他玩家实际上成为你叙事体验一部分的游戏中,最大的技术或创意挑战是什么?
Adrien Poncet:从创意上讲,我认为我对之前问题的回答已经很好地说明了构思 Story-Link 有多具挑战性!但即使我们在纸面上有了可行的方案,在将其呈现给玩家、使其引人入胜以及在达到最终品质之前改进用户体验方面,仍然存在许多挑战。这是一个贯穿整个制作过程的长期过程。
Jerome Aspe:从技术层面讲,我个人认为这个项目最大的挑战是 Story-Link 记录系统。
我们无法控制玩家的操作,同时也有技术限制。例如,玩家可能会静止不动十分钟,而系统仍在录制他们。但是看一个人十分钟什么都不做并不有趣,而且我们也无法向服务器发送 1GB 的数据。
因此,我们必须相应地构建系统:修剪不必要的录制,限制每个区域的 emote 数量,并优化发送到服务器的数据大小。这个系统还需要处理许多技术任务,同时保持设计人员易于使用。
最后,是否有任何幕后材料——例如叙事流程图、系统可视化或调试工具——可以分享,以帮助开发者更好地理解《Tides of Tomorrow》是如何构建的?或者 WIP 资产?
Adrien Poncet:我们有时会使用这种流程图来设计每种情况下不同的 Story-Link 状态和结果。我们称之为 ABC 系统,因为我们发现拥有三种不同的状态对于避免玩家之间的重复性是必要的。
通常,一旦我们在纸面上有了可行的设计,一旦开始原型制作,我们很快就会遇到一系列全新的问题。然后,我们直接在引擎中迭代,以找到不同状态之间的正确叙事平衡。

喜欢这篇内容吗?