地平线零黎明: 团队访谈
地平线零之黎明开发背后的人描述了他们应对制作过程中遇到的各种技术挑战的方式。
那里有很多游戏工作室。但是有一些工作室,那种脱颖而出。不仅仅是因为他们的技术专长,或者因为奉献精神或革命性的游戏设计。他们因内心的自由和巨大的勇气而脱颖而出。Guerrilla Games是真正勇敢的工作室之一,因为《地平线:零之黎明》是一款非常勇敢的游戏。它突破了图形、制作技术、设计甚至故事的界限。
当整个事情开始时,在广阔而郁郁葱葱的开放世界中机器人恐龙的想法似乎有点奇怪。我记得听过Angie Smets的演讲,在那里她讨论了制作和他们所面临的所有麻烦,游戏真的发布了,这让我感到难以置信。有怀疑,也有恐惧,但团队设法克服了所有这些问题,并将他们的开放世界实验变成了伟大的胜利。今天,我们向您展示了我们对这个巨大标题背后的人的采访,以庆祝惊人的技术和艺术成就。
以下是参加这次谈话的游击队的人:
MISJA BAAS – 艺术总监
MICHIEL VAN DER LEEUW – 技术总监
RODERICK VAN DER STEEN – 首席灯光师
吉尔伯特·桑德斯 – 首席艺术家
ARJAN BAK – 游戏设计师
我们也真诚地感谢 Jan-Bart van Beek,感谢他惊人的远见,以及Guerrilla Games 的所有了不起的人。
地牢
MISJA BAAS – 艺术总监: 地平线零之黎明实际上有两种类型的“地牢”:一种是人造地堡,一种是人工智能控制的装配线。
我们设计的地堡与地面上的自然世界形成强烈对比。地堡是为旧世界提供故事节奏和情感联系的关键,而大锅对于获得技能和让玩家了解人工智能控制的机器人工厂完全陌生的内部运作方式很重要。从这个意义上说,这两种环境几乎是截然相反的。
他们进入项目有点晚,所以我们必须聪明地构建它们。我们面临的最大挑战是构建这些环境所需的组件有限,因为与地面世界相比,它们覆盖的空间很小。这使得创造足够多的变化和突出的时刻变得棘手,这可能会导致沉闷的环境。
环境
Gary Buchanan – 校长
Steven de Vries
Bo van Oord
Leon Voorrips
照明
Roderick van der Steen – Lead
Kristal Plain – Bunker 室内设计
Julian Fries – Cinematics
阴影/纹理
Maarten van der Gaag – 艺术指导/技术向导
Lucas Bramlage
Stefan Groenewoud
为了降低这种风险,我们用钟乳石和方解石或冰雪覆盖了掩体。这让我们可以创建各种形式,这有助于将事物分解并保持每个空间的趣味性。我们的另一个解决方案是在整个空间中添加大型全息界面,以提供照明和环境。因此,即使房间中的控制台或机器大部分被垃圾或冰覆盖,仍然会有全息显示器漂浮在它们上面以表明该房间的功能。
对于 Cauldrons 来说,这基本上是一个 AI 构建这个东西的问题,所以要变大,发疯,把环境当成一个巨大的雕塑!我们没有人为因素来限制我们,这非常好。
重塑管道
MICHIEL VAN DER LEEUW – 技术总监: 我们当然必须编写很多新东西!当然,我们已经有了一个可以使用的渲染引擎,并且在我们制作 Killzone Shadow Fall 时,我们已经开始绘制更大的距离和植被/树木。然而,大多数系统都需要工作;脚本、流媒体、关卡编辑和资产放置都需要注意。对于每个子系统,我们研究了改进它所需的条件,要么将其杀死并从废料开始,要么慢慢迭代到达到开放世界标准的程度。
为新的开放世界概念准备 Decima 引擎
MICHIEL VAN DER LEEUW:这是我们从废料开始的领域之一。我们的旧工作流程包括从 DCC(数字内容创建)包中导出大量内容、重新加载游戏、玩到您离开的地方或四处寻找您制作艺术的地方。它当然达不到该领域的最新技术水平,也没有很好地映射到开放世界的发展。
我们从商业/公共引擎中获得了很多灵感,但也发现了我们认为可以改进的领域。我们设计了一个新的工具框架,它集成了我们所有的工作流程,其中几乎没有文件管理,您可以直接在编辑器中播放,我们构建了它。当然,这听起来比以前容易。实际上,有些工具来晚了(或根本没有),我们犯了一些错误,但最终,我们将它们整合在一起,现在我们拥有了一个非常不错的工具集,这使我们比以往任何时候都更有效率前。
他在这里的“艺术基准”场景中的职责是制作模块化资产的原型并创建由这些构建块构建的预制件。他还用植被覆盖建筑物,并致力于城市的整体布局。参与此场景的其他艺术家包括 Ben Sprout、Gary Buchanan、Ryan Spinney、Sandra Parling、Amir Abdaoui、Tiffany Vongerichten、Desmond van den Berg、Sander Vereecken、Derk Over、Roderick Van Der Steen、Kim Van Heest 和 Jan-巴特范贝克。
内容优化
MICHIEL VAN DER LEEUW: 我们有许多用于性能的游戏内调试工具(用于 CPU 和 GPU 方面),我们的许多美术师和编码人员都非常熟悉性能优化。在项目即将结束时,我们将为 CPU 和 GPU 举行特定会议,查看游戏性能不佳的部分,并讨论提高性能的方法。
我记得的一件事是,在开发过程中,我们在中距离岩面(例如,在 300m 距离标记附近)遇到了一些问题。这些面孔由数以千计的独立岩石组成,近距离看起来非常详细。在远处,它们被简化为高度图,绘制成本低且远看相同。在中层,它们被折叠成组,但我们同时在屏幕上显示了许多它们,它们仍然可以是 10-20K 的三角形,因为它们只是低 LOD 岩石的合并版本。许多三角形是不必要的,因为它们深入地面或相互卡住,它们正在成为真正的性能瓶颈。最后,有人做了一个实验,把岩石表面变成了 3D 体素结构,在这个体素结构上追踪一个新的低多边形网格,然后将景观的材料信息重新投影到它上面。我们已经从光能传递体素光照烘焙中获得了材料信息。生成的网格既便宜又占用很少的内存,而且看起来好多了。
这样的故事还有很多——性能优化需要整个项目几个月的时间!
使用算法
MICHIEL VAN DER LEEUW: 我们越来越多地使用程序内容生成的主要领域是景观本身、植被的位置、环境声音和着色器。自然本身是程序性的;它建立在大规模应用的简单规则之外,因此非常适合程序生成。我们还创建了一个用于存储数据以输入到程序系统的系统,即所谓的“世界数据地图”,以便每个着色器、放置系统或声音都可以查询当前的湿度、温度、到最近河流的距离等,并且据此做出决定。当玩家晚上靠近灌木丛时,我们会产生萤火虫。当玩家在河中时,我们会产卵鲑鱼,在河的相反方向在不同的高度游动。
80 级:如果您有兴趣了解有关《地平线零黎明》中的程序主义的更多信息,请不要忘记查看Jaap van Muijden 的演讲。该公司官方网站上还有一篇关于《地平线零之曙光》中基于 GPU 的程序放置的官方帖子。
来自Guerrilla 的地平线零黎明中基于 GPU 的程序放置
MICHIEL VAN DER LEEUW: 最大的挑战是跟踪需要联系在一起的所有事物。大多数制作开放世界游戏的团队都在开发他们的第二个或第三个或更多,但我们非常缺乏经验。我们知道很多我们需要做的事情,但我们不知道我们不知道的事情,这让你有点不安全。
灯光
RODERICK VAN DER STEEN – 首席灯光师: 灯光对于任何形式的艺术或娱乐的外观和感觉以及整体视觉体验都至关重要。我将从一些历史开始,以便人们了解我们来自哪里。Guerrilla的基础照明(直接和间接)历来都是为了在性能、内存和质量方面获得最佳收益——后者始终是主导因素。
对于 Killzone Shadow Fall (PS4, 2013),我们使用了逐像素光照(聚光灯、全向、定向、区域光盘、矩形和点/球体,带有纹理区域光的选项)。我们使用自定义 BRDF 用于直接照明,球谐函数用于动态闪电,定向光照贴图用于间接照明(使用我们之前学到的所有技巧,但这次偶尔也使用半浮点以获得更好的范围和类似 HDR 的水平用于我们的烘焙照明。)
对于 Horizo?? n Zero Dawn(PS4,2017),我们使用了所有 Killzone Shadow Fall 技巧的逐像素光照,但使用 GGX 作为首选 BRDF 来为我们的材质提供更广泛、更准确的材质表达范围。我们还在混合中添加了一个动态天窗,它从各个角度根据天空颜色照亮一切。
对于我们的间接照明解决方案,我们使用了辐照度体积。您可以将它们视为多层光照贴图,其中每一层的每个像素在空间中都有一个 3D 位置,以及基于探针位置的多个方向。我们将它用于静态和动态对象,为我们提供了一种对所有对象进行间接照明的完全统一的方式。这样做也最终让我们远离了光照贴图,这意味着我们不必再创建光照贴图 UV(时间和记忆力双赢)。它还允许我们拥有动态的一天中的时间。我们将日/夜循环的 4 次的间接光照烘焙到 4 组不同的辐照度体积纹理,然后我们加班混合以提供在一天中的所有时间都具有准确间接光照的错觉。
接下来,我们渲染了一个静态的间接通道,它被存储到它自己的辐照度体积纹理中。它包含了世界上所有静态的非移动/不可破坏的灯光。我们烘焙的第三件事是天空可见性术语,它就像一个立体 3D AO 地图。我们用它来掩盖所有静态物体上的天窗,使我们能够在森林中(即使在很远的距离)拥有稍暗的灯光。我们再次选择使用预烘焙解决方案而不是完全实时解决方案的原因很简单:与完全实时解决方案相比,质量更高,并且内存成本和运行时性能成本确实很低。我们也有机会堆叠多个辐照度体积,从而为我们提供更高的保真度和分辨率。
我们不使用完全实时解决方案的另一个原因是,我们可以在等式中添加大量非运行时灯光,以便真正用光进行绘画,并创造更平衡的舞台灯光体验。这些“仅限烘焙”的灯光会被完全烘焙(主要和次要光线),并提供看起来更丰富的照明方案,在颜色和强度上都有很多渐变。这使我们能够创建稍微更独特的现实版本,并使我们的游戏脱颖而出。我们还可以将灯光标记为太阳反射光,这意味着我们可以将它们渲染到太阳反射通道中,从而使它们受到一天中时间缩放和重新着色的影响。
我们的渲染器内置于我们的引擎中,它通过将世界体素化并将反照率、法线数据和半透明等信息烘焙到体素缓存中,然后在一天中的每个时间和静态间接烘焙中重新点亮。通过这种方式,我们可以获得整个游戏中的材质信息和正确的颜色反弹。
渲染间接照明既可以在本地完成,也可以在我们的渲染农场中完成,就像游击队的大多数事情一样,它在我们自己的自定义分发系统上运行,并且可以实现快速的周转时间。
当涉及到实时照明和与之相关的效果时,我们支持各种选项。在体积方面,我们可以为每盏灯启用体积照明(我们没有可以放置的体积体积)并为每盏灯提供不同的采样选项(因此我们可以在每盏灯的基础上调整性能或视觉质量)。
阴影也适用于体积,着色器和投影仪也是如此。对于阳光,我们有一个体积高度雾解决方案,可用于创建天气和情绪的表达。它还允许体积神射线,我们可以针对每个环境和一天中的时间进行调整。每个级联都可以调整体积雾质量。
所有体积渲染都通过相同的管道并渲染到深度,从而可以轻松集成粒子、前向渲染资产和其他基于深度的效果。这是一个非常灵活的系统,反过来又使我们能够以极低的成本使用大量体积效果。
当您谈论实时灯光时,阴影也非常重要——这就是为什么大力推动地平线零黎明具有视觉吸引力和稳定的实时阴影的原因。因为太阳一直在移动,我们经历了很多锯齿现象。为了规避这些,我们暂时稳定了它们,从而产生了一个完全稳定的移动阴影。在过滤方面完成了工作,以实现更令人愉悦的软阴影效果并消除任何像素化伪影的迹象。
阴影质量在体积渲染中也起着重要作用,因为阴影伪像在渲染到体积系统中时会被放大。因此,通过改善阴影,整体视觉质量也得到了提升。
《地平线零之黎明》中的大多数灯光都有阴影投射,我们有很多方法可以优化它们每盏灯的性能。我们随着距离降低分辨率,在一定距离(或屏幕空间中的光尺寸)淡出它们,同时尽可能保持图像丰富。
我们使用的最重要的功能是阴影缓存,它启用了各种缓存灯光阴影贴图的方案:仅静态、静态和动态等。这意味着我们只需要更新阴影贴图最重要的部分。
另一个重要部分是反射,尽管自 Killzone Shadow Fall 以来我们确实有实时光线追踪反射,但立方体贴图仍然是管道中非常重要的一部分。它们有两种不同的风味:本地和全球。局部立方体贴图可以进行透视校正,而全局立方体贴图则以无限远的距离进行投影。对于户外环境,我们将立方体贴图重新规范化以适应一天中的任何时间和天气,而在室内,由于室内场景的静态特性,我们通常按原样使用它们。
为了启用某些特殊效果,我们可以创建自定义灯光着色器,然后由我们的灯光投射。因为它们使用与游戏中所有其他着色器相同的功能集,所以我们能够创建非常复杂的光着色器并读取某些缓冲区来更改投影的完成方式或基于 UV 使投影变形。
我们还可以利用动画纹理/动画书/体积纹理的强大功能来创建焦散、火或云投影等效果。通过光照着色器,我们可以根据距离来控制投影,这意味着我们可以在80米外出现一定的效果,而不会干扰附近的光线。可能性是无止境。在破坏性较小的管道中工作的好处之一(辐照度体积与光照贴图和单独的探头)是我们花更少的时间来修复内容(损坏/过时的光照贴图 UV 任何人?)和更多的时间照明。这并不是说事情总是完美无缺。我们的系统可以很好地处理大多数情况,但在具有挑战性的情况下,它需要帮助将探头位置放置在正确的位置。我们有提示平面和禁区来帮助我们将探针集中在我们需要的地方。
平衡所有灯光和后期效果是通过我们的氛围管理器实现的,当涉及到后期效果、色彩校正以及随着时间的推移平衡所有灯光和效果时,它可以说是我们引擎中最强大的视觉工具。氛围管理器控制所有方面,其中包括天空渲染、大气、雾、太阳/月亮、太阳/月亮轨迹、直接和间接照明、云渲染、色彩校正(2D 和 3D)、曝光和更多异国情调诸如极光之类的东西(在地平线零黎明:冰雪奇缘扩展中使用)。
该系统使我们能够根据一天中的时间更改这些功能,并自动混合不同的设置。然后将环境周期与气候联系起来,我们在整个游戏中使用它来为每个生态环境提供变化。
植被
GILBERT SANDERS – Principle Artist: 在为地平线零黎明创建植被时,我们确实从一个速度模型开始,它会通知我们是否以正确的比例和密度制作资产。这个速度模型很可能最终成为游戏中最低的几何 LOD。一旦我们有了这个模型并且我们对它的外观感到满意,我们就会开始详细说明速度模型。我们构建了高分辨率网格,我们可以将这些网格烘焙到我们已经用我们的速度模型测试过的 UV 空间中。为此,我们在Maya、Photoshop 和SpeedTree之间来回切换。
在 Horizo??n 的开发过程中,Team Green 负责创建所有植被资产。我们的另一部分时间用于创建和维护用于在世界上种植植被的规则集。格林队由尼古拉斯·沃特金斯、马斯·海因和吉尔伯特·桑德斯组成。图片取自 Nicholas Watkins 的 Artstation 作品集。
定位系统很早就上线了,我们已经在杀戮地带暗影坠落中启动并运行了!我们知道我们需要一个这样的系统,因为我们做了一些快速的餐巾纸数学计算,并认为将 Horizo??n Zero Dawn 郁郁葱葱的世界变为现实所需的放置数据将超过我们在磁盘上的容量。
所以我们现在拥有的放置系统只需要处理几个纹理查找作为数据输入,我们可以轻松地存储这些数据。编写放置系统就像构建一个着色器;您阅读纹理,在此基础上进行一些数学运算,然后您就有了放置逻辑。
这是一种非常简单的解释方式——系统比这更复杂!早在 3 月份,我在 GDC 上做了一个名为“技术与艺术之间:‘地平线零黎明’的植被”的演讲,内容涉及与我们植被的创建和渲染相关的所有事情。它应该可以从 GDC Vault 获得。这是演示文件本身的链接!
无论如何,为了渲染我们的植被,我们在两遍中渲染了所有经过 alpha 测试的网格。
首先是早期封堵器;之后,我们正常渲染它们。在这个初始的仅深度传递中,我们进行了 alpha 测试。首先渲染这个pass将为我们提供我们需要的所有深度信息,之后我们只需要在渲染几何pass时进行深度比较而无需alpha测试。这很重要,因为 alpha 测试非常昂贵,但通过这种方式,它在非常便宜的仅深度着色器上运行。几何传递着色器要贵得多,但现在通过非常有效的固定函数深度测试来加速。
景观生成
ARJAN BAK – 游戏设计师:景观创造涉及多个步骤和过程。首先,我们粗略地确定了距离和我们预期设计的布局。在这个阶段,我们定义了我们的自然地标,并确保我们的玩家在他们的各种任务中可以通过世界的路径是有趣和多样的。接下来,我们使用基于我们在编辑器中创建的 2D 地图和捕获的卫星数据的数据组合对这个粗略的过程进行了多次迭代。之后,我们继续进行第一个细节设计。当涉及到世界的规模和地标特征时,我们旨在保留特征的视觉本质,同时浓缩它们以确保我们的旅行距离不会变得过长。通过这种方式,我们可以通过活动和副内容让世界感觉丰富。景观装饰和细节设计由一群专门研究景观各个方面的艺术家完成,例如岩层、河流和植被。我们对植被和河流使用了程序系统和手工修整的组合,但我们的岩层和山脉完全是手工制作的。我们在开发的早期阶段用布局方法和程序系统做了各种实验和原型,但我们发现我们需要的控制水平和艺术指导值得在创作时间上略有增加。但是我们的岩层和山脉完全是手工制作的。我们在开发的早期阶段用布局方法和程序系统做了各种实验和原型,但我们发现我们需要的控制水平和艺术指导值得在创作时间上略有增加。但是我们的岩层和山脉完全是手工制作的。我们在开发的早期阶段用布局方法和程序系统做了各种实验和原型,但我们发现我们需要的控制水平和艺术指导值得在创作时间上略有增加。