第 20 章
告别红色引擎
第一章 认输
在波兰游戏论坛的存档深处,有一篇2011年的报道截图。它被转贴过很多次,每次《巫师2:王国刺客》获得新的国际奖项,都会有人把它顶上来。截图里的标题大意是:波兰技术骄傲。
配图是游戏截图——雨中浮港弗坚的城墙,杰洛特站在石阶上,披风被风吹向一侧。那一年,《巫师2》的代码在波兰国内激起了一种少见的情感。它不是简单的产品评测,而是一种认同:这个国家终于有了一套完全属于自己的引擎,由波兰人写出来,为波兰的故事服务。
那种认同并非凭空而来。在《巫师2》之前,波兰游戏产业已经在西方引擎的阴影下运行了二十年。早期开发者用德国人写的代码做平台跳跃,用美国人写的引擎做射击游戏,用法国人的工具做模拟经营。每一次技术选择都意味着一笔授权费,一套不属于自己的规则,以及一份无法完全掌控的版本节奏。
CD Projekt RED从《巫师》初代开始就想摆脱这种处境。BioWare授权的极光引擎虽然给了他们一个入门工具,但动作化战斗的每一次尝试都在引擎限制面前碰壁。据伊温斯基透露,当时他和季辛斯基甚至不知道要怎么开发这一游戏,最初的演示被亚当·巴多夫斯基后来回忆时称为“垃圾作品”。
团队最终推倒重来,用愤怒和加班写出了一套新的战斗系统,但那套系统仍然寄生在别人的骨骼上。所以当REDengine在《巫师2》中首次亮相时,它带来的不只是技术参数。
它带来的是一道边界。边界之内,渲染管线是为杰洛特的剑光设计的,对话镜头是为斯拉夫面孔的微表情调整的,场景编辑器知道如何把东欧的森林变暗、变旧、变潮湿。这套引擎不需要去适应波兰奇幻,因为它就是从波兰奇幻里长出来的。
波兰游戏媒体在那一年用了一个词,这个词后来变成了一个标签、一个口号、一种在开发者大会上被引用的官方用语:引擎民族主义。它不意味着排外,而是意味着一个后转型国家终于不再满足于使用别人的工具来讲自己的故事。
十一年后,这个词再次出现时,前缀变成了“终结”。2022年3月21日,CD Projekt RED发布了一则技术合作公告。公告的形式是一段视频声明,亚当·巴多夫斯基坐在华沙总部的会议室里,穿深色衬衫,背景是一面干净的灰色墙壁。
他的语气平稳,措辞经过法务部门反复斟酌。核心内容只有几句话:公司已与Epic Games达成战略合作伙伴关系,下一代《巫师》系列游戏将从REDengine转向虚幻引擎5开发。声明中提到了“开放世界体验的技术需求”,提到了“与Epic多年的合作关系”,还提到了“开发效率的可预测性”。
没有提到的是:REDengine将被终止开发。消息传出的速度比任何一款游戏发售都快。几分钟之内,全球游戏媒体的推送同时到达。三十分钟内,波兰最大的游戏论坛上出现了一个帖子,标题只有一行字:“引擎民族主义终结”。
那一天是星期一。星期二,CD Projekt RED的股价在华沙证券交易所小幅上涨。星期三,虚幻引擎的Logo出现在CD Projekt RED的投资者关系页面上。没有纪念仪式,没有悼念声明,没有人为REDengine写告别信。要理解这个决定的重量,必须回到《巫师3》的开发周期里去。
2011年《巫师2》发售后,CD Projekt RED面临两个方向。一个是继续在REDengine 2的基础上改进,做一款规模更大但技术上更保守的续作。另一个是把引擎推倒重写,为开放世界做好准备。
团队选择了后者。这个选择在2015年被证明是正确的——《巫师3:狂猎》的史凯利杰群岛、诺维格瑞城区和威伦沼泽,都是REDengine 3的直接产物。玩家骑乘萝卜穿过森林时,植被的加载与释放是引擎在后台默默完成的。海风吹动杰洛特头发时的物理模拟,日落时天空颜色从橙到紫的渐变,雨停后水洼反射的重新计算——这些都不是美术团队手动摆放的效果,而是引擎系统在每一帧画面中执行的指令。
但正确的选择不等于没有代价。REDengine 3的代码库在《巫师3》开发后期膨胀到了数十万行。这场膨胀从项目一开始就进入了不可逆的轨道。
开放世界需要的系统全部是新写的:植被生成算法从零开始,水体渲染从零开始,远景过渡的LOD系统从零开始,人物动画融合的逻辑从零开始。据季辛斯基透露,由于预算有限,一些游戏内容不得不删除,但游戏角色的个性则得以保留。
每加入一个新系统,代码库的复杂度就以非线性方式增长。引擎组在这种压力下做出了一个在当时看似合理的决定:把文档放到后面,先让引擎跑起来。
这个决定的后果要在几年后才完全显现。2016年《血与酒》发售后,核心引擎工程师中有相当比例离开了项目。有些人休长假,有些人转去别的公司,有些人接受了欧洲其他游戏企业的邀请。他们的离开带走了一种无法用文档传递的知识——关于REDengine 3为什么在某些模块里使用了特定的数据结构,为什么某段渲染代码要在特定帧序上执行,为什么某个内存管理方案在PC上运行良好但在主机上可能导致资源泄漏。这些知识的载体不是文档,而是记忆。人走了,记忆就走了。
当《赛博朋克2077》进入全面开发时,接手引擎的团队面对的是一套他们并不完全熟悉的代码。夜之城的密集城市场景在引擎里产生了成千上万个光源,每一个都需要动态计算阴影和反射。拥挤街道上的行人密度远远超过诺维格瑞的集市,每个NPC都需要独立的AI调度和行为树。
载具高速移动时,引擎必须在亚秒级时间内完成周边街区的资源流送——这在威伦的旷野里不是问题,因为骑马的速度给了引擎足够的缓冲时间,但在夜之城的街道上,一脚油门就可能把玩家的视野推到引擎还没来得及加载的街区。
引擎组和游戏团队之间的摩擦从2017年开始加剧。游戏设计师提出的每一个新需求——更远的绘制距离、更复杂的破坏效果、更真实的NPC日常行为——都会被引擎组评估为高风险或不可能。这些评估在跨部门会议上被反复传达,会议纪要里渐渐出现了越来越多的大写字母和加粗字体。
引擎组认为游戏团队不理解技术限制,游戏团队认为引擎组在为自己设限。两边说的都有道理,但道理解决不了问题。
问题在于时间不够。这种张力并不仅存在于两个团队之间,它也在管理层内部制造了持续的困境。CD Projekt RED的高管团队在2010年代的后半段必须同时应对两条战线:一方面要维持《赛博朋克2077》的开发进度和宣传节奏,另一方面要为REDengine的未来做出投资决策。
引擎的下一代版本——当时被内部称为REDengine 4——需要一次底层架构的重写,以适应新的主机世代和更复杂的开放世界。但重写引擎意味着抽调核心技术人员离开2077项目,而2077正在面临自己的延期压力。这是一道两头堵的题目。
管理层选择了让引擎团队继续在旧架构上打补丁,把架构重写推迟到2077发售后。
这个选择的后果,在2020年12月得到了最直接的展现。上世代主机的崩溃画面不应该被重复描述太多次,但它们在决策史上必须被记录下来,因为正是那些崩溃画面最终杀死了REDengine。PlayStation 4和Xbox One版本的夜之城,在以每秒不到二十帧的速度勉强运行时,角色模型在玩家靠近三秒后才加载出清晰的纹理,驾驶时街景从模糊到清晰的过程漫长到足以让玩家停下车等待。
这不是优化不足的问题。这是引擎在架构层面就不适应那两代主机的内存管理方式和多线程调度逻辑。
REDengine 3在开发时以PC为主要平台,它的渲染管线、内存策略和资源流送全部围绕PC架构设计。把这一整套方案迁移到本世代主机上,需要的不是修修补补,而是对引擎多个核心模块的重写。而重写的时间,在发售日期的压力下根本不存在。
2021年初的道歉视频之后,公司进入了一场漫长的信任修复。补丁一个接一个地发布,好评率缓慢回升,但董事会的讨论已经转向了一个更根本的问题:在已经启动的多个新项目——包括下一代《巫师》——《赛博朋克2077》的资料片,以及还在概念阶段的赛博朋克续作——面前,公司有没有能力继续维持一套自研引擎的迭代升级?这个问题在2021年下半年的几次战略会议上被反复讨论。讨论并不轻松。引擎部门负责人在一次会议上展示了REDengine 4的规划蓝图,包括新的渲染架构、改进的多线程支持、以及为虚幻引擎5已经展示过的Lumen和Nanite类技术预留的接口。
蓝图是完整的,但蓝图的实现需要至少两年的开发周期和数十名顶级引擎工程师的持续投入。
而现实是:公司在《赛博朋克2077》发售后已经流失了一批核心技术骨干,招聘市场上能够接手私有引擎开发的人才凤毛麟角,而每一个被调到引擎组的资深工程师,都意味着游戏内容开发那边少了一个可以做任务脚本或过场演出的人。
COO皮奥特·涅卢博维茨在其中的一次会议上提出了一个被许多人想过但此前没有人公开说出口的方案:放弃REDengine,转向第三方引擎。会议桌上安静了很长时间。
这不是一个纯粹的技术决策。它触及公司的自我认同。CD Projekt RED从一家发行商转型为开发商的核心叙事,就是“我们不再依赖别人”。这个叙事在《巫师2》的引擎自主权中达到了高峰,在《巫师3》的开放世界中被验证,在2010年代的国际媒体采访中被反复讲述。放弃自研引擎,意味着这个叙事的一条腿断裂了。巴多夫斯基没有在那次会议上立即表态。
他在随后的几周里分别约谈了引擎部门负责人、游戏总监和几名资深技术美术。他想知道一件事:如果在REDengine 4上投资两年,公司能拿到的工具是否足以与同期虚幻引擎5的进步竞争?
答案让他失望。不是REDengine 4的设计不够好,而是一家公司无法与一条全球性的技术供给线竞争。Epic Games在虚幻引擎上的投入是数亿美金级别的,团队的规模以千人计,跨平台适配的合作伙伴包括索尼、微软和NVIDIA的工程师。CD Projekt RED的引擎团队在任何单项技术上都不缺天赋,但天赋无法替代规模。
2021年11月,巴多夫斯基做出了那个决定。他没有在公司全体会议上宣布,而是通过一份内部备忘录通知了相关团队的负责人。备忘录的措辞谨慎而克制,没有使用“失败”或“放弃”这样的字眼,而是用了“战略转型”和“技术合作”。但在引擎组的工位区域,没有人需要措辞来解释正在发生的事情。一些人在那天下班后在办公室多坐了一会儿,不是加班,只是坐在那里。
正式对外宣布的时刻被安排在三个多月后。公司需要时间与Epic Games敲定合作条款,包括对虚幻引擎5在开放世界场景下的定制权限、技术支持的具体安排,以及合作品牌露出和联合市场营销的细节。Epic方面对这一合作表现出极大的兴趣——将虚幻引擎用于《巫师》这样一个全球顶级IP,本身就是引擎在高端游戏领域最有力的广告。蒂姆·斯威尼在合作公布前一周发了一条社交媒体帖子,没有提到CD Projekt RED的名字,但写了一句:“很高兴看到顶级开发商选择虚幻引擎实现他们的下一个伟大愿景。”那句话下面很快就有人猜到了答案,但没有人出来证实。
三月二十一日的视频声明中,巴多夫斯基的每一句话都经过了精心设计。他说,与Epic的合作将使CD Projekt RED能够“更加专注于游戏本身”,同时确保下一代《巫师》建立在“最先进、最可预测的技术基础”之上。那是“可预测”这个词第一次出现在公司的对外沟通中。
它与2011年“波兰技术骄傲”的热烈形成了某种对照。热烈来自对未知的征服,可预测来自对失控的恐惧。两个词之间隔着的,不仅是十一年时间,还有一场几乎毁掉公司信誉的产品灾难。
媒体和分析师在随后几天里给出了相对正面的评价。彭博社的一篇报道指出,放弃自研引擎将为CD Projekt RED每年节省数千万兹罗提的研发支出,同时显著降低未来项目延期风险。高盛的分析师在一份给投资者的简报中写道,“转向虚幻引擎5将消除该公司技术栈中最不可预测的变量。”这是投资者爱听的话。2022年的CD Projekt RED已经经不起更多变量。
但波兰国内的舆论分裂了。保守派科技媒体和一些资深开发者对放弃自研引擎表达了明显的失望。一家波兰游戏杂志在网上发起的投票显示,约百分之四十的受访者认为这是“技术主权的丧失”,另有百分之三十五的人选择了“商业上正确但情感上难以接受”。
这些数字其实反映了一个更深的矛盾:当引擎民族主义的情感价值与商业理性直接碰撞时,后者在董事会会议室里胜出,前者在论坛讨论中继续存在。两者都是真实的,只是发生在不同的空间里。对那些不在波兰、不参与产业争论的全球玩家而言,这则新闻的含义更简单。在《赛博朋克2077》的主机灾难之后,虚幻引擎5这个标签本身成了一种承诺——游戏可能不会因此更好,但至少不会连运行都成问题。Reddit上一条获得上万点赞的评论写道:“如果《巫师4》用虚幻引擎5做,至少下次我不用再看到夜之城PS4版的截图了。”这句话尖锐、不公平、简化了一百个实际问题,但它捕捉到了玩家群体对REDengine的最后印象。在大多数普通购买者的记忆里,那套引擎的遗产不再是《巫师3》的夕阳和群岛,而是《赛博朋克2077》的模糊纹理和崩溃报错。技术自豪感被透支到了这种程度。引擎团队的状态则是另一种景象。从2021年秋天到2022年春天,引擎部门经历了公司历史上最大规模的一次人员重组。
一部分工程师被分流到虚幻引擎5的技术适配团队,任务是从头学习一套全新的工具链和工作流程。另一部分人选择离开,加盟了波兰和欧洲其他游戏工作室。对离开者而言,告别REDengine是专业的,也是私人化的。他们在离职谈话中谈的不是薪资,而是那些自己写过并维护过的模块。某位离职的核心引擎开发者在社交媒体上发了一条帖子,大意是:那套代码陪伴了我九年,现在它不再属于未来,但它曾被很多人认真写过。没有激烈的措辞,没有对公司的指责,只有一个工程师对自己作品最后的一段说明。REDengine就此停在了最后一次构建上。它不会再被升级,不会再被移植到新平台,不会再收到来自游戏团队的紧急需求工单。公司的代码仓库里仍然保留了它的全部历史版本,但那是一个档案馆,不再是一条生产线。公司里最年轻的一批开发者进入CD Projekt RED时,可能永远不会在工位上打开REDengine的编辑器。他们只会打开虚幻引擎。
这套曾承载了一代波兰开发者自豪感的自主引擎,在商业力量的驱使下最终被放下了。2022年之后,再次提起REDengine,多是在行业讨论中被偶尔引用为案例。它成了商学院课程和游戏开发教科书里的一节标题:如何用自研引擎实现差异化,以及何时放弃这种差异化。这里有值得辩护的地方。反对意见说,《赛博朋克2077》的失败是一次孤立的管理失误,与引擎无关,CD Projekt RED完全可以通过修复REDengine并在《巫师4》中重新出发来证明自己。这个说法并非全错。公司的叙事能力、任务设计能力、世界构建能力,这些确实是独立于引擎长项而存在的核心资产。但问题在于,引擎从来不只是引擎。自研引擎在CD Projekt RED的历史上同时是民族叙事、品牌承诺和组织结构三个维度的交汇点。当这三个维度中的任何一个出现结构性失衡——民族叙事崩塌、品牌承诺失信、组织结构过载——自研引擎就不再是资产,而是负担。
它的每一次迭代都在与其他业务需求争抢公司最稀缺的资源:注意力。把引擎交给Epic,是CD Projekt RED对“我们能够完成一切”叙事的一次正式撤回。它不意味着公司放弃了技术追求,而是重新划定了技术追求的边界。边界之内,公司仍然可以写自己的玩法系统、自己的任务逻辑、自己的对话工具、自己的开放世界叙事管理系统。但边界之外,渲染管线、物理引擎、跨平台适配、内存管理——这些交给一家在全球范围内拥有上千名工程师投入的引擎公司去做。在边界被划清的时刻,引擎民族主义完成了它的历史角色。它曾让这家公司骄傲过,现在它成为了一段被清算的记忆。那次正式宣布的视频最后,巴多夫斯基没有用任何波兰语词汇。全程英语,全程面对全球观众。他也没有提及《巫师2》发售时的国内报道,没有提及“波兰技术骄傲”这个短语,没有承认这是告别。他只是平静地完成了一份任务,就好像在宣布一项普通的战略合作。
在那些会议纪要的大写字母和加粗字体背后,是具体的人。引擎组有一位资深渲染工程师,在CD Projekt RED工作了将近八年。他在《巫师3》开发期间写过一套全局光照的近似算法,那套算法后来被用在了威伦沼泽的水体反射和诺维格瑞黄昏时分的屋顶光泽上。2018年秋天,他在一次跨部门会议上与游戏团队的一位主设计师发生了激烈争执。设计师要求夜之城的霓虹灯招牌在雨天产生真实的反射,光要打湿,颜色要在水雾中扩散。渲染工程师说,现有的光照系统做不到这一点,除非对整个反射管线进行底层修改。设计师问他需要多久。工程师说,至少四个月,前提是引擎组不被打断。设计师说,我们只有两个月。会议结束后,工程师在工位上坐了很久。他后来对一位同事说,他不是在生气,而是在计算——计算从《巫师2》到现在,引擎组有多少次被要求在不可能的时间内完成不可能的任务,又有多少次他们真的完成了。但这一次,数字对不上。这不是一个孤立的冲突。类似的故事在引擎组的茶水间里反复被讲述,渐渐变成了一种集体记忆。
从道歉视频到引擎转向,巴多夫斯基在镜头前的变化是可见的——2021年初的道歉里,他的语气中有一种被迫的坦诚,像是在说服自己,这一次坦白了就能重获信任。2022年3月的声明里,那种坦诚被替换成了程序性的冷静。程序性意味着公司已经学会在没有情感担保的情况下做出承诺,这些承诺都不再需要“技术骄傲”来背书,只需要一个可验证的外部标准。转向虚幻引擎的消息发布后,在2022年年末的一次投资者电话会议上,有人问了一个问题:转向第三方引擎后,CD Projekt RED如何在技术上区别于其他同样使用虚幻引擎的竞争对手?巴多夫斯基的回答没有追溯引擎民族主义的旧时光,他说的是定制工具、自有系统和专门知识。都是正确的商业回答。但那些曾被写入标题的民族情感,公司不会再替它们说话了。在波兰技术论坛上,那篇2011年的报道截图仍然可以被搜到。2022年之后,下面最新的几页回复里已经不再有人为REDengine辩护。
偶尔有人贴出《巫师3》2015年版的夕阳截图,说一句“它曾经很好”,然后沉下去。有一种胜利叫证明自己的工具是最好的工具,有一种接受叫承认最好的工具可能不是自己的。引擎民族主义的标题在游戏论坛的角落继续变老,它的含义已经被时间的重量压得不再是开始时的样子。它不再象征骄傲,而是一段无可挽回的往昔——那个往昔里,一群波兰人写出的代码曾让整个世界认真注视过他们的名字。