《凯恩的遗产:抗争》重制版:在20年前的自研引擎上重建PS2经典

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

Rebuilding a PS2 Classic with Legacy of Kain:

在着手重制 Legacy of Kain: Defiance 时,重新审视这样一款极具标志性的 2000 年代早期作品,最大的技术挑战是什么?是否有某些特定系统或资产被证明尤其难以现代化?

Ryan Meyer – 开发负责人:最大的挑战在于,Defiance 是建立在二十多年前一套完全定制的引擎上的。它是为那个时代的硬件打造的,所以在考虑现代平台之前,我们必须深入引擎并重写其中的很大一部分。最初的阻碍之一,是把引擎从 32 位迁移到 64 位。这是基础性工作。

没有这一步,集成现代主机 SDK 根本无从谈起。在此基础上,渲染管线也需要处理。原版游戏是围绕 4:3 画面设计的,所以当你把它推到 16:9 时,很多东西都会出问题。UI 锚定、屏幕空间效果和摄像机假设全都是围绕方形画幅建立的。修复这一点意味着要找出并纠正这些假设,同时确保一切仍能正确渲染。

音频是另一个难点。游戏依赖一个极其古老的 FMOD 版本,让它在新平台上运行需要相当大的工夫。这并不是简单的即插即用升级。我们必须弥合旧版 FMOD 与当前 FMOD 之间的巨大差距,然后确保游戏听起来和原版一样。为了让游戏音效重新正确,我们有很多爆音、过场动画不同步和缓冲区问题需要解决。

内容管线大概是最不寻常的挑战。曾经有用于构建和编辑资产的自定义内部工具,但几乎没有文档。我们必须先确认这些工具是否还存在,然后逆向工程它们的工作方式。感觉很像代码考古。等我们弄懂了这条管线,又撞上下一个问题。原始资产是在一个已不再可用的 3D Studio Max 版本中制作的。实际上,那套工具链已经不存在了。

为了把新的或更新的内容加进游戏,我们必须构建一条转换路径。这意味着要取出旧数据,把它转换成现代工具能够理解的格式,进行任何必要的编辑,然后再导出回原引擎能使用的形式。旧管线与新管线之间的这层桥接,最终对整个重制工作至关重要。

Rebuilding a PS2 Classic with Legacy of Kain:

恢复和整理原始开发材料的过程是什么样的?你们是基于归档的源代码和资产库进行工作,还是游戏中的某些部分需要从零售版本重建?

RM:Crystal Dynamics 在保存其档案方面做得非常出色,这对本项目产生了很大影响。我们使用的是原版发售前后存在的完整项目材料,而不是试图从零售版本重建游戏。

事实上,档案远不止包含最终发售的源代码和资产库。其中还包括大量前期制作材料、被删减的内容以及幕后资产。这让我们更清楚地了解游戏最初是如何构建的,以及不同系统和内容是如何演变的。

因此,这项工作的重点与其说是恢复,不如说是组织和现代化。数据全都在那里。这种程度的档案完整性消除了此类项目可能遇到的许多风险——在那些项目中,数据缺失会迫使你从头重建系统或资产,或者尝试从已发布内容中反编译它们。

重制项目通常会揭示开发过程中令人惊讶的遗留物,比如本次重制中的未发布内容和“失落关卡”。为什么没有将它们包含在内,它们的“完成度”如何?

Monika Erosova – 艺术总监:《Defiance》的源材料让我们惊讶于竟有如此多未使用的材料。原开发者构建了规模大得多的关卡,但当故事发生改动时,这些关卡被废弃且从未完成。他们开始重新设计前作《Soul Reaver 2》中的许多熔炉关卡,但最终决定让 Raziel 和 Kain 都去探索 Citadel,而不是为 Raziel 设置专门的熔炉关卡。

例如,Water Forge 的俯视布局和谜题描述明确要求 Raziel 排空主神殿房间的水,以进入中央的光之泉,从而打开最远端的门。然而,这些机制都无法运作,因为它在开发过程中某个阶段被放弃了。

Rebuilding a PS2 Classic with Legacy of Kain:

你们如何决定哪些内容要恢复、记录,还是原样保留到重制版中?

ME:这是个好问题,因为并非所有内容都值得收录。有些关卡单元只是单个没有贴图的空房间,里面什么都没有,所以我们自然跳过了那些。还有很多不同的测试房间,比如针对可破坏物件、门、敌人刷新点等的特定设置。有一个房间里甚至放了一个巨大的茶壶,别问我为什么!对于最终发布版,我们精心策划了一份列表,收录玩家最值得体验的有趣关卡,比如传说中的水之熔炉,或者早期扩展版的要塞区域——它反映了原始故事布局,拉兹尔和凯恩在章节屋中有相同的起点,正如《灵魂掠夺者2》结尾所见。后来故事改为发生在那款游戏多年之后,要塞的布局被重新设计并完全重做了贴图。

从工具角度看,你们使用了哪些软件或内部工具,把原始资产提升到现代标准?你们是否依赖自定义管线,将旧格式转换到当代引擎或编辑环境中?

RM:从工具角度来说,我们使用的大部分工具都是自定义构建的,用于与原始引擎并存,或直接嵌入其中。目标不是替换引擎,而是以某种方式扩展它,使其兼容现代平台。在渲染方面,我们依靠对第八代和第九代硬件的熟悉,实现了能够与《Defiance》顺畅配合的自定义渲染后端。

这包括加入 DirectX 11 和 DirectX 12,以便我们能在 GDK 上发布,同时让最低配置要求与之前的《灵魂掠夺者》重制版保持一致。在资产方面,关键部分是构建转换管线。一旦管线就位,我们就能沿用大部分原始绑定和动画数据。

这是一大胜利。这意味着我们可以把角色模型升级到高清品质,同时仍然使用原始动画集,而不必从头重建一切。以那种规模重新制作动画会耗时到令人望而却步,因此保留这些数据对重制版至关重要。

Rebuilding a PS2 Classic with Legacy of Kain:

许多早期PlayStation 2时代的游戏都依赖深度定制的引擎。Defiance最初的技术栈是什么样子?在开始制作复刻版时,它与现代工作流的兼容性如何?

RM:Defiance最初的技术栈是一个完全定制的引擎,这在PS2时代的游戏中相当标准。重新回到那样的东西里,真的会让你意识到我们现在有多少东西是理所当然的(或者至少我有多大程度是理所当然的)。许多你会以为在Unreal Engine或Unity之类中本就存在的系统,在那里根本不存在,所以任何新东西都必须从零开始构建。

一个很好的例子是摄像机。原版游戏使用固定的电影式摄像机,看起来不错,但给玩家的控制不多,有时还会让人有些迷失方向。我们想用合适的第三人称摄像机将其现代化。在现代引擎中,那是一个已经解决的问题。把摄像机对象放进场景,砰的一下,你就完成了。在这里……就不是这样了……我们不得不自己从零实现整个系统。

我不知道你还记不记得,很久以前在学校数学课上,你会想……我这辈子到底什么时候会用到这个?这里。这里就是你用到它的时候。全部……而且还不止。这是那种多年前学到的一切再次变得重要的时刻之一。

等新摄像机工作起来后,它又凸显了另一个问题。原版游戏有一个第一人称模式,但在很多区域中被禁用了。有了我们的摄像机,这意味着当你进入那些区域之一时,你会突然被强制切回原来的电影式视角。那感觉相当突兀。所以我们决定移除那些限制,让玩家可以始终保持在第三人称摄像机中。

这又引出了另一个问题。现在玩家可以看向那些原本不该被看到的区域。其中很多看起来就像你站在电影片场外景地的错误一侧。有单面墙、缺失的地板和天花板,以及只完成一半的房间。为了解决这个问题,我们不得不进去构建大量新的几何体和纹理来填补那些缺口。而且这不仅仅是要
把它做成高清。它还必须匹配原来的外观,这样才不会显得格格不入。

玩家可以随时在原版和高清画面之间切换,所以我们必须把两者都做出来。这是巨大的工作量,但我们觉得必须这样做,才能让游戏感觉正确。就现代工作流而言,实际上并没有太多重叠。这个引擎并不是为了接入现代工具或管线而构建的,所以我们主要不是让引擎适应现代工作流,而是让我们的工作流去适应引擎。

Jina Hyun – 高级工程师:摄像机是我花了很多时间处理的东西。刚开始时,现有的摄像机代码非常庞大,很难完全理解。我最初尝试修改它,以便在其上构建新摄像机,但大约一两周后,很明显那样行不通。于是我废弃了它,从零重建了复刻版的摄像机。

即便那样,也并不简单。引擎内部的摄像机系统使用的变换方式与我学过的标准方法不同,所以我无法套用自己熟悉的那套基础。因此,当我第一次让摄像机动起来时,旋转在鼠标输入下表现不正常,而且花了一段时间才弄清楚原因。结果第一个里程碑相当粗糙,到了摄像机几乎没法玩的程度。

但一旦我理解了引擎期望事情如何运作,它终于开始按预期工作。从零构建摄像机也意味着要处理的远不止根据玩家输入移动和旋转。还必须实现与环境碰撞。可破坏墙体和门碰撞尤其棘手,因为没有干净的方法来准确识别摄像机应该与哪些对象碰撞。

这些方法最终变得更加迭代,从一组粗略条件开始,然后在游戏测试期间每当出现新情况时再完善它们。总体上有很多试错,但摄像机最终覆盖了它需要覆盖的一切,我对它最终达到的效果感到满意。

Rebuilding a PS2 Classic with Legacy of Kain:

在更新角色模型、环境和纹理时,团队如何平衡保留原始艺术意图与利用现代渲染技术?

ME:与《Soul Reaver 2》相比,《Defiance》的艺术处理方式相当不同。他们几乎重新设计了所有内容,从环境和敌人到主要角色。例如,《Defiance》中有更多吸血鬼猎人职业,但他们的脸更像漫画夸张形象,所以我们试图通过改进面部特征来缓解这一点,同时仍忠实于原始形态。我们还让女性吸血鬼猎人的外观更加多样化,而她们原本只是两个职业之间的换色和换头。

对于纹理,我们主要专注于寻找原团队使用的源照片,因此当你点击按钮时,SD 和 HD 模式之间是无缝切换。我非常骄傲我们的团队能够忠实于原始纹理工作,这归功于我们在这个项目上投入的大量纹理研究。

团队如何为现代平台进行性能优化,同时仍保留原始战斗、摄像机系统和移动机制的手感?

RM:当你为复刻版回溯到这么久远的作品时,实际上会有相当多的性能余量可供利用,所以性能不像在新作中那样是首要限制。话虽如此,这也不是可以忽视的事情,尤其是当你开始使用更高保真度的资源时。我们在全局引入 HD 模型和更高分辨率纹理,这会立即增加内存压力和流送成本。

在性能更强的平台上,这是可以管理的,但在 Switch 1 这样的平台上,这就成了真正需要考虑的问题。文件 I/O 相对较慢,内存也很紧张,所以你必须更谨慎地决定数据如何以及何时加载。  那里的很多工作都在确保我们没有引入新的瓶颈。这意味着要小心处理资源大小,确保流送行为可预测,并避免出现加载停滞的情况。

我们不需要从根本上改变战斗、摄像机或移动等系统来达到性能目标,这一点很重要,因为保留原始手感是优先事项。所以这种方法与其说是激进的优化处理,不如说是在升级内容时保持在每个平台的限制之内。只要我们遵守这些限制,就可以在不损害游戏实际玩法的情况下提升视觉质量。

Rebuilding a PS2 Classic with Legacy of Kain:

对于有兴趣从事保存和重制工作的开发者,团队在重新审视《凯恩的遗产:挑战》时学到了哪些经验教训,可能帮助其他处理遗留代码库和老化资产管线的人?

RM:在制作 Defiance 的过程中,一个重要收获是:你面对的是游戏在某个非常特定时间点如何构建的一个快照。技术、假设和工作流都反映了这一点。你必须以这种心态来对待它,否则最终会与项目对抗,而不是取得进展。最初的教训之一是尊重原始约束。许多代码和数据按现代标准可能看起来奇怪或低效,但通常那样写是有原因的。

如果你试图一开始就激进地“现代化”一切,你破坏的可能比修复的还多。通常更好的做法是让原始行为按原样运行,然后在真正重要的地方做有针对性的改进。另一个重要方面是工具。你不能假设原始管线可用,甚至完整。在我们的案例中,大量精力投入到重建或桥接内容管线,以便我们能在遗留格式和现代工具之间移动数据。尽早投资于此会有回报,因为你接触的每个资产或系统都依赖它。

文档,或者说缺乏文档,也是一个真实因素。你应该预料到要花时间弄清楚事情如何运作。这意味着阅读代码、测试假设,有时构建小工具只是为了检查数据。把它当作逆向工程来对待,因为实际上就是如此。还有一个关于范围的实用教训。在遗留项目中,很容易低估更改如何级联。看似很小的事情,比如添加章节选择、额外检查点或小地图,最终可能需要新内容、新逻辑和大量后续工作。对你更改的内容保持纪律,并牢记它为什么重要。

最后,保留原版游戏的感觉应该指导决策。现代硬件为你提供了改进视觉效果和稳定性的空间,但如果你改变时机、响应性或玩家反馈,它就不再感觉是同一款游戏。目标不是把它当作今天制作的那样重建。而是以一种仍然感觉像原版体验的方式将它带向前。

ME:在检查原始代码和脚本时,多个地方的注释极大地帮助我们理解事件和其他游戏系统如何运作。我自己编辑脚本时,也尽量保持与原开发者相同的脚本风格,以便更容易阅读,并确保清楚地区分新添加的部分。

Rebuilding a PS2 Classic with Legacy of Kain:

PlayEveryWare 和 Crystal Dynamics

采访由 David Jagneaux

相关链接

原文链接:https://80.lv/articles/rebuilding-a-ps2-classic-with-legacy-of-kain-defiance-remastered-devs

喜欢这篇内容吗?