

2024年8月21日(星期三)至23日(星期五)期间,日本最大的计算机娱乐开发者会议「CEDEC2024(Computer Entertainment Developers Conference 2024)」正在举行。在第二天的会议上,进行了题为「《塞尔达传说:王国之泪》(以下简称《王国之泪》)的世界连接技术——天空、地面、地底的无缝衔接和制作环境」的讲座。
byカイゼルちくわ 2024.08.23 12:35
演讲者是来自任天堂株式会社企划制作部《王国之泪》开发团队的成员。
包括技术总监堂田卓宏、地形编程负责人斋藤智久,以及编程总监奥田贵洋。

《王国之泪》技术总监堂田卓宏

《王国之泪》地形编程负责人斎藤智久

《王国之泪》编程总监奥田貴洋
《王国之泪》是一款允许玩家在天空、地面和地底之间无缝切换的游戏。开发团队希望创造一种能够在天空、地面和地底之间无缝移动的游戏体验,但这成为了一个巨大的技术挑战。在本次讲座中,除了解释如何实现这三个世界的无缝衔接外,还介绍了在开发过程中如何使制作流程本身也变得无缝的方法。
《王国之泪》的前作《旷野之息》同样致力于实现无缝的广阔世界和高度自由的游戏玩法。
为了实现目标,开发团队首先从「技术选择」开始。例如,为了表现广阔的无缝世界,需要大量的多边形,因此选择了「延迟渲染」(Deferred Rendering)而不是需要深度路径的「前向渲染」(Forward Rendering),因为前者只需一次绘制G缓冲区(深度信息和法线信息等值);使用完全基于物理引擎驱动的世界,从而实现了高度的行动自由和游戏交互。

当任天堂的开发团队从想要实现的游戏元素开始倒推所需要的技术时,相关技术选择涉及工作流程、通信沟通和版本管理等多个方面。在决定这些方面时,「广阔世界」和「无缝移动」成为了主要挑战。
尽管过去的《塞尔达传说》系列也描绘了广阔的世界,但内部结构仍然是基于关卡切换的游戏。因此,团队重新开始了无缝广阔世界的探索。
在初期阶段,团队通过参考过去系列作品的面积和现实世界的区域来确定世界的广度,并考虑如何赋予这些区域独特的色彩和玩法。最终,他们发现二维的世界结构更有利于实现无缝移动和简化数据管理。

对于「广阔世界」,在《旷野之息》开发初期举行的一次头脑风暴会议中,很明显团队关注的是「平坦而又广阔的世界」。因此在《旷野之息》开发过程中,团队在考虑场景结构时,将世界以二维的平面视角进行设计。二维视角能让开发者更容易思考游戏元素的设计,数据结构也更为简单。编辑、信息可视化、信息管理等各个方面的问题都得到了简化。
此外,这种思路也简化了无缝移动的设计。结果,《旷野之息》的场景采用了「远处的物体粗略描绘,近处的物体精细描绘」「重要的物体即使在远处也会出现,细微的物体只有靠近时才会出现」等LOD(细节层次)技术,并根据玩家的二维移动来加载数据。
在Wii U的硬件限制和无缝移动方面,二维结构也有优势。LOD(※)的设置和加载也可以根据二维的主角移动来进行匹配。
※LOD:Level of Detail(细节层次)的缩写。通过根据摄像机的距离控制模型的多边形数量,远处的模型使用较少的多边形进行描绘,从而加快渲染速度的方法。


在技术选择过程中,必然会产生一些「无法实现的事情」。例如,前面提到的延迟渲染(Deferred Rendering)在多样化材质表现方面不如在《斯普拉遁3》中使用的前向渲染(Forward Rendering)。有些技术在选择时还需要额外的设置,而且可能会出现意外的行为。


了解所采用技术的局限性和注意事项,不仅对工程师重要,对艺术家和整个团队也都同样重要。于是团队内部加深理解并达成共识,明确「不能做的事情」是其中的关键。
换句话说,《旷野之息》是一款3D动作游戏,而二维的结构显然限制了三维立体结构的实现。尽管游戏中有攀墙、滑翔、天空场景和洞穴等三维元素,但整体上仍是基于二维约束下进行制作的设计。


那么在《王国之泪》中是如何处理的呢?在开发初期的头脑风暴中,团队已经开始考虑纵向扩展地底、地面和天空的世界。最重要的是,开发团队想要尝试和挑战《旷野之息》中无法实现的内容。
此外,《旷野之息》 必须根据 Wii U 的规格进行开发,而《王国之泪》作为专用于Nintendo Switch的独占游戏,进一步解除了硬件限制,也带来了更多的可能性。堂田卓宏说:如何将前作中实现的二维处理方案扩展到三维,是《王国之泪》面临的具体技术挑战。


在《旷野之息》中,团队选择了使用「高度图」(Height Map)(※)进行程序化地面绘制(一种结合多个数据和过程的方法)。
※ 高度图是一种灰度图像,能够表达灰度图像中具有高度差异的纹理。白色部分表示高,黑色部分表示低,尽管图像是由二维描绘,但可以表现出高度差。
通过将具有高度信息的高度图覆盖在网格状的多边形集合体(※)上进行渲染,能够允许开发者实时将网格的每个顶点抬高相应的高度,以表达地形的凹凸不平或高低起伏。除了能够从程序端动态调整多边形之外,还有一个优点是即使网格分辨率降低,轮廓也几乎没有显著变化。
※ 网格状的多边形集合体:用顶点、边和面等数据形成对象表面的多边形集合。



LOD(细节层次)也是通过从程序端调整网格渲染来实现的。即使在绘制广阔的世界时,也可以通过适当划分高度图来区分负载。通过使用高度图,开发团队能够支持灵活的绘图。
然而,使用高度图的方法难以表现三维立体结构。在《旷野之息》中,需要立体结构的场景由艺术家通过网格数据创建的3D模型单独配置。


那么,《王国之泪》的场景是如何制作的呢?尽管地表可以沿用前作的机制和系统,但对于天空和地底,也必须重新考虑数据流和LOD(细节层次)的三维处理。
首先,「洞窟」的墙壁和天花板上都有网格。为了对这些场景进行无缝绘制,任天堂开发了基于网格的地形系统,通常被称为「洞窟系统」。网格的顶点数据能够根据LOD发生变形,并在游戏运行时进行数据转换,将「成本」作为确定移动设置的标准。




该系统具有一种算法,可以确定多种情况下的变形,例如当网格的顶点有许多过渡法线时,或者当网格由于移动而翻转时,能够根据 LOD 的程度,让顶点和半边按照「成本」顺序受到变形的影响。




此外,通过将多边形归属于八叉树结构数据「块」,就能够控制LOD阶段的多边形群加载。在这种情况下,多边形的计算位置必须存在于「块」内。但是如果多边形跨越多个「块」,则通过「块」表面上的单独位置来计算插值率,以确保变形计算只在「块」内完成,从而进行限制。



数据流也同样是基于「块」。这是一种简单的算法,如果靠近相机,则对「块」进行详细的绘制;如果距离相机有一定距离,则按原样绘制「块」。

开发团队意识到使用洞穴系统可以无缝地代表一个大型的三维空间,因此他们创建了一个大型洞穴。通过将其放置在地底,他们能够创建一个与地面无缝衔接的巨大场域。当我们探索可以在如此大的空间中玩的游戏类型时,就想到了探索黑暗、与强大的地下敌人战斗以及与车辆战斗等想法。

利用上述方法所完成的洞窟系统,创造出了广阔的地底空间。当开发者在研究这个洞穴中的各种游戏方式时,在经过反复测试后得出的结论是,如果广阔的地底和地表之间存在联系,那么游戏探索和发现间的循环会进一步扩大。
换句话说,玩家在地表发现的东西,在地底的相同地点也可能会找到。反之,通过探索地底,可以预测地面的线索。这意味着地表和地底相互间可以建立某种关联。




因此,开发团队利用洞窟系统,将地表「颠倒」形成了地底。由于开发团队从测试中得到了良好的反馈,于是开发者们设置了反映地面数据(地形、植被等)的生成规则,并在此基础上加了艺术家的细节设计和通过新网格的干预进行个性化。




地底生产流程。地底是根据地面的数据创建的,并且制定了相关的规则,使得高于地面的地方在地底处凹陷,地上有神庙的地方在地底也有树根。

这个洞窟系统也能用于制作空岛。洞窟和空岛的区别仅在于多边形法线的方向朝内还是朝外,处理起来并没有那么困难。


《王国之泪》的世界从前作的二维扩展到三维。然而,编程总监奥田贵洋在思考如何加载这个世界中的各种元素,例如树木、悬崖等放置物。
在《旷野之息》中,这些元素也是基于高度图的二维加载。它们会根据二维显示距离被放置在网格上。例如,大型建筑物放置在表示距离较大(大尺寸)的大网格上,而不需要从远处看到的小型物体则可以放置在小网格上,这些网格相互重叠。


不过,即使不加载元素,如果没有碰撞检测(物体之间的碰撞和反弹判定)也可能会出现问题。例如其它角色进入放置对象的位置并在加载放置对象时可能会发生卡顿。因此,地形碰撞的网格位置数据是独立加载的。


基于这些经验,《王国之泪》重新设计了更灵活的加载系统。这个系统能够根据游戏进程灵活替换放置对象。该系统允许根据游戏标志灵活地改变位置,因此它还能被用来创建村庄地形随着游戏进程而变化的演出。
此外,在前作中,进入地底世界时需要加载时间,但在《王国之泪》中,团队希望能够无缝进入地底世界,因此引入了可以在独立区域加载的通用处理方法。



不过,加载算法仍然沿用了前作《旷野之息》的二维加载系统。如何加载地底和空岛成为了新的挑战。
首先,对于地底的结构,从一开始就确定了地表和地底之间要有足够的距离。因此,玩家不会同时看到地表和地底。团队认为,与其同时加载地表和地底,不如在玩家位于地表时只加载地表世界,在地底时只加载地底世界,这样可以享受更高密度、更广阔、更深邃的世界。于是,团队尝试在达到一定深度时加载地底。


但在下降过程中加载速度跟不上时,会导致画面卡住。这时,地底世界作为地表世界的延续,其作为从地表直接前往的场所的「角色」定位得以确定。
明确这个「角色」的定位非常重要。《王国之泪》非常重视「制作⟷ 确认」的周期,需要最低限度的游戏内实现,来验证有趣的想法是否真的有趣。过度详细的制作可能导致返工,因此用于确认功能作用的、最低限度的实现非常重要。

对于地底的最低限度实现,跳入洞穴的机制是可行的。但要实现产品化,就必须解决加载问题。
因此,开发团队使用了四种方法进行改进。
(1)通过使用分析工具可视化加载过程,能够找出时间开销大的瓶颈,并在未执行加载时将处理任务分配给空闲时间,或者推迟不立即需要的数据加载。但是这些处理依然还不够。
在解决这种排序带来的瓶颈时,很明显文件往往无法及时加载,因此他们想到了「减少需要加载的文件数量」。
在基于2D的加载系统中,加载是根据为每个对象设置的显示距离来执行的,但即使是实际上看不到的东西,例如悬崖底部,也会加载。因此,我们在玩家可以到达的多个位置设置锚点,并使用确定从这些点看不到哪些物体的数据来减少需要加载的文件数量。
(2)因此,为了减少要加载的数据总量,任天堂团队自行设计了一个能够不加载不可见项的系统,它能够根据与对象可见位置相关联的观测值,为每个对象计算和导出适当的分辨率值。即便如此,这种方案也依然有着不足之处,因此工程师们又引入了一种机制,在接近洞穴时只是预加载部分必要的文件,从而最终实现了无缝加载。


(3)此外,任天堂还「减少了必须加载的文件的大小」。一个例子是确定模型中使用的纹理的分辨率是否合适,如果降低分辨率没有问题,则自动降低分辨率。


然而,即使充分利用了上述三种方法,仍然存在加载未及时完成的情况,所以这次我们在「加快加载启动」下了很大功夫。
(4)具体来说,首先将所有用于进入地下的洞口列出进入地下时需要的文件清单。然后,当玩家接近洞口时,任天堂决定在内存允许的情况下加载尽可能多的文件。 由于这些努力,产品最终能够实现无缝地在地底运行。

当地表和地底的加载问题解决后,团队开始考虑空岛的加载。
在空岛的原型试作阶段,有些岛屿位于足够低处,可以从地表到达;而有些岛屿则位于更高处。奥田贵洋与设计师咨询和讨论了加载这些物品所需的系统后,决定采取激进的「放置」策略。
但这并不是因为无法实现而弃之不理,这只是一种「主动忽视策略」。如果在空岛规范最终确定之前实现加载,无法实现的想法就不应该纳入空岛的规范之中。即使可以实现,其意图也不在于实现本身。这其实是为了避免在试验阶段对空岛造成限制。
实现某个功能意味着做出一个决定,但空岛仍处于试验阶段,因此团队决定不为空岛专门实现加载系统。




于是,空岛仍然使用前作的二维加载系统。作为权衡,尽管这可能会导致一些性能下降或程序错误,但只要不影响空岛这个「角色」的功能,这些问题在开发初始阶段是可以接受的。
因此,利用《旷野之息》的加载系统,开发团队创造了一个环境,让游戏设计者可以不受限制地尝试各种类型的天空岛,并缩小他们真正需要的范围。因此,天空岛上放置了许多物体和道具,它们的作用被组织成与主线故事相关的大的、作为天空旅行的路标的小东西、以及需要你去思考的东西。据说已经完成了。
通过这种策略,团队逐渐明确了需要哪些类型的空岛。同时,从设计和艺术方面考虑,空岛的布局也发生了显著变化。最终,空岛分为少数与主线剧情相关的大空岛、一些作为天空移动中转站的小空岛,以及一些需要探索才能到达的小空岛。


基于上述功能,当确认玩家在地表行走时几乎可以忽略空岛后,团队开发了一个系统,将空岛分为大空岛和小空岛。大空岛只有一个,小空岛则可以提前加载到内存中,未加载的天空岛是根据放置信息提前生成的。由此开发团队完成了一个显示 LOD 原始模型的实现。通过这样定义单位并提前确定分配,似乎可以加快卸载一个天空岛并替换另一个天空岛的过程。这种定义大大提高了加载效率。

《王国之泪》的开发中,团队创造了多种技术来实现天空、地表和地底的无缝绘制和加载。然而,为了实现这些世界,首先需要最低限度的实现来确认功能,并通过积极的放置策略来筛选出真正必要的内容,因此「制作⟷ 确认」的周期循环运作是必不可少的。



「制作⟷ 确认」的周期循环运作旨在让制作过程无缝化。为此,团队不仅努力优化了开发进程方法,还改进了工具工作流程。
另一个例子是洞窟系统,团队尝试将开发实机的实现时间降至零。通过取消转换过程,实现了在游戏中即时编辑和确认的实时编辑功能,这是数据流技术的应用。


通常情况下,关卡设计确定后会进行数据打磨,但如果关卡设计发生变化,打磨工作需要重新进行,导致完成时间延长。为了解决这个问题,任天堂在洞窟系统中构建了「程序化修饰」工作流程,它允许更新和修改的工作同时进行。通过在转换过程中插入Houdini(※)处理,即使精心设计的部分主导内容变化、或者地形发生了变化,也依然能够保持关卡设计的意图和规格。
※ Houdini:由加拿大的Side Effects Software公司开发的3DCG制作软件,广泛应用于电影制作等领域。除了可以一贯地进行3DCG的制作过程外,还擅长处理火焰、烟雾等具有不规则性的特效。



「程序化装饰」最初是由工程师在Houdini中实现的,因此它与洞穴系统的兼容性良好。艺术家和工程师们在反复试验的工作流程中逐渐理解了彼此的长处,建立了能够相互高效协作的系统,从而形成了最佳的功能分配。

《王国之泪》是一款极具吸引力的游戏,它能够通过动态视角切换,在天空、地表、地底之间无缝切换。玩家在游戏中不断切换微观和宏观视角,比如只专注于眼前的物体,或者从鸟瞰的角度观察眼底的世界,从而使游戏世界连成一体。
在本次讲座中,也同样有着很多视角的变化。团队不仅考虑了制作周期的长时间单位,还考虑了毫秒级的加载时间优化。工程师通常专注于眼前的任务,但抬头俯瞰时,就可以理解方案的实现必要性以及问题的本质。
堂田卓宏在演讲的最后总结道:在《王国之泪》的工程中,来回切换宏观和微观视角是必要的,这也是实现无缝广阔世界所需的。





■『ゼルダの伝説 ティアキン』の空島は“積極的に放置”されていた。空、地上、地底の3つの世界と制作環境のすべてをシームレスにつないだ技術【CEDEC2024】 https://www.famitsu.com/article/202408/15204
■「ゼルダの伝説 ティアーズ オブ ザ キングダム」の空,地上,地底がつながったフィールドを実現したシームレスな制作の過程[CEDEC 2024] https://www.4gamer.net/games/578/G057883/20240824003/
■【CEDEC AWARDS 2024 フォトレポート】「桃太郎電鉄」シリーズを手掛けたさくまあきら氏が特別賞を受賞。『ゼルダの伝説 ティアーズ オブ ザ キングダム』ほか4部門の最優秀賞も発表 https://gamemakers.jp/article/2024_08_23_77146/
■開發人員訪談 : 薩爾達傳說 王國之淚|任天堂 https://www.nintendo.com.hk/interview/totk/04.html
■GDC 2024(物理)『王国之律动:《塞尔达传说:王国之泪》物理与声音的演变 https://www.bilibili.com/read/cv33358973/
■GDC 2024(音效)『王国之律动:《塞尔达传说:王国之泪》物理与声音的演变』 https://www.bilibili.com/read/cv33383817/
■《塞尔达传说:王国之泪》相关发明专利(48份,持续更新) https://www.bilibili.com/read/cv25622313/