第 12 章

自研引擎的赌注

罗兹的阁楼已经搬空。有人把最后几台开发机抬上卡车后,用脚把门口一个纸箱往墙边推了推。纸箱里塞着几截网线、一块旧演示板、一张被咖啡浸得起皱的键盘。

那是《巫师》上市后第一个深秋,天早早就暗下去,卡车尾灯把湿漉漉的路面照成两小片红。红队的一部分人已经搬进华沙的新办公室,另一部分人还在原地处理补丁包和母盘,像一场撤军没有撤干净。

新办公室里没有衣柜,没有休息室,只摆着桌子、机器和一块从罗兹带过来的白板。白板一角还留着上一场战役的痕迹。三个词被人用蓝笔写上去,每个词下面都是一个叉:开放场景、主机移植、视觉表现。写字的人显然用力不小,叉的尾端凹进了板面,擦不掉。

巴多夫斯基那天傍晚坐在一张从罗兹搬来的长桌前。桌腿没有调平,人一起身,桌面就轻轻晃一下。他没有起身。他手里拿着一份评测汇总,纸角卷了起来,上面好几段用铅笔画着横线。窗外的华沙已经黑透了,楼下的电车站亮着黄灯,像旧游戏标题画面里搁浅的光标。他抬头,望向那块白板。

三个叉还在那里,像三处没有愈合的伤口。《巫师》于2007年上市,获得了比较积极的评价。这个判断放在商业报告里是成立的。销量令人满意。

波兰市场几乎在一夜之间把初版光盘买空,配送车在主要城市之间来回补货。雅达利在英语地区的铺货也带来了持续订单。积极评价主要集中在故事、选择和道德模糊性上。西方媒体愿意承认,东欧的这款角色扮演游戏写出了他们不熟悉的灰色判断。

但在技术层面,宽容度低得多。加载时间偏长,人物动作僵硬,部分场景的帧数在低配机器上掉得令人难堪。

东欧玩家习惯了在旧硬件上运行高需求软件,他们的宽容是一种生存本能。西方市场则不同。那里的人刚刚见过新一代开放世界游戏在主机平台上的稳定画面,见过商业引擎在流畅度上立起的标准。技术不是一切,但技术决定了你的叙事有没有机会被听完。

英文评测里有一个比喻反复出现。有人说,这款游戏像是一个被装进旧发动机舱的漂亮车身。第一次听到时,团队里有人以为说的是画面还不够精致。

后来他们意识到,那不是对画质的简单抱怨。那是在说,叙事是车身,技术是发动机舱,而发动机舱不是你的。过场加载的每一次卡顿、战斗动作的每一次僵硬、地图切换的每一次漫长等待,都在提醒玩家,发动机是借来的。

这个比喻被留在了白板上。不是作为羞辱,而是作为一道题。红队在开发过程中已经受够了授权引擎的限制。

他们使用的极光引擎修改版来自BioWare。这套引擎原本为《无冬之夜》的场景规模与交互逻辑设计。它擅长地牢、小范围地图、任务对话。它不擅长开放场景。它没有为快速切换的战斗动作预留端口。它更不擅长主机移植,内存管理、输入映射、界面缩放,每一项都要团队从底层改写。

开发到后期,他们几乎是在用引擎开发商从未预料的方式撕扯它。每次打上新补丁,程序员就要在深夜重新绑一遍角色骨骼。每次加入新地图,美术组就要先问技术组,这一块能放多少棵树,能铺多长的沼泽,能同时刷出几只水鬼。

痛苦不完全属于波兰。它是授权引擎时代所有中等规模工作室共同承受的摩擦。

商业引擎给客户的是接口。接口就是束缚。如果你想要的东西在接口外面,你只能绕。绕多了,源代码变成一堆补丁,甚至连引擎供应商派来的技术人员也看不懂你为什么这么改。

BioWare的极光引擎本来是给《无冬之夜》用的。它身上到处是第三版龙与地下城规则的权重,那种规则适合掷骰子、走格子、进入战斗后交换回合。它和萨普科夫斯基世界里那种在沼泽边缘突然拔剑、侧步、翻滚、再反手一斩的节奏不同。你没法在一套回合制思维的地基上搭出一个即时格挡。

红队的解决方案是换掉战斗核心,把极光引擎的战斗逻辑重写。这相当于把一栋房子的地基留下来,却要它承担另一套梁柱受力。房子没塌已经是奇迹。

这些技术决定发生在开发中期。它们没有一份清晰的立项文件,也没有一次叫得上来的全体会议。它们是在一次次深夜调试中累积起来的。但只要跟过全程的人都记得,每一次变更都在加重同一个判断:别人的引擎,撑不起他们想要的第二部游戏。转折点出现在续作计划启动前后。

公司内部的讨论从“我们怎么做出一个更好的巫师”转向“我们要不要还在这套别人家的地基上盖楼”。

有人提出,如果把《巫师》移植到家用主机,可以把西方市场的技术短板补上一部分。但极光引擎的修改版在主机上几乎没有可移植性。想要上主机,就得把渲染、内存、操控全部重写。这已经等于重做一遍。

再后来,有人拿出了概念美术组为续作设想的世界草图:三个地区的场景,有雪山,有密林,有横跨海峡的港口。光照要能在清晨穿透树枝,水面上要有浮雾。草图细节并不完整,但已经足够清楚。极光引擎的底层结构无法支撑这些场景。它不是需要优化,而是需要被替换。

于是,巴多夫斯基在一个内部会议上提出了那个激进的方案:放弃所有外部引擎,从零开发自己的技术平台。这个提议在当时的波兰游戏行业没有先例。东欧也没有多少先例。

商业引擎的授权费虽然昂贵,但它同时是一张安全网。引擎供应商会提供工具支持、更新和跨平台新版本。它意味着你只需要在别人搭好的舞台上排练。自研引擎则是另一条路。

它等于公司同时开办一家软件基础设施公司和一家游戏创作公司。而红队刚刚结束一场漫长开发。原本只有十五人的团队迅速扩张到一百人,研发成本超过了两千万兹罗提。这个数字在波兰已经是一笔重资本投入。再叠加一个自研引擎,意味着数百人年的额外投入。更关键的是,现金流仍然高度依赖发行和GOG平台。CD Projekt还没有宽裕到可以随便在内部开一个大口子。

管理层有理由犹豫。伊温斯基和季辛斯基都清楚,自研引擎的账不是简单的投资回报。它是一种战略耐力的消耗。一个引擎不是做一次就能用十年的。显卡在换,主机在换代,操作系统在更新。如果红引擎跟不上,将来就是自己给自己制造兼容危机。

这个担心的基础不是来自外部,而是来自他们自己的成长路径。他们靠发行起家,知道技术平台的更迭有多快。西方公司可以花三年升级一款引擎,而波兰公司要做同样的事,可能需要五年,而且每次升级期间都可能流失几个关键工程师。

他们见过太多东欧项目死在半路上,不是死于没有创意,而是死于没有稳定的底层。技术基建的成本就像往公共矿洞里打井。投进去的钱所有人都看不见,但它决定你能挖多深。

巴多夫斯基坚持的理由则很直接。他说的不是愿景,而是清单。他一条条列出极光引擎修改版在《巫师》中造成的返工:任务编辑器不满足多节点分支对话,角色模型无法承载战斗动作的复杂度,地图加载逻辑拖长了每次进城的等待时间,主机版方案几乎要重写全部渲染管线。如果续作继续用外部引擎,这份清单还会变长。如果他们要做的世界比维吉玛更大,比周围沼泽更开放,那外部引擎就不仅是限制,而是障碍。

这个论证在会议室里产生了效果。不是因为它描绘了一个多么宏伟的技术前景,而是因为它准确地命名了已经在发生的事。他们不是在技术冒险和一个稳妥方案之间选择。他们是在继续支付授权引擎的隐性成本和一次性支付自研引擎的显性成本之间选择。前者看上去便宜,实际每一关都在付费;后者看上去昂贵,但有机会成为公司的长期资产。

这个判断说服了管理层。红队得到了自研引擎的许可。他们把这套技术平台命名为红引擎。

这个决定在1999年之后的波兰并不显得疯狂。波兰在转型过程中形成了某种技术信心。制造业在吸引外国投资,软件外包和电子设备组装在格但斯克、波兹南和克拉科夫周围兴起。人们开始谈论“波兰制造”,开始把本土技术能力当作经济转型的证据。这种情绪也渗透进游戏业。

波兰本土杂志和门户网站长期用“波兰游戏”这样的标签,把本地软件产品和西方产品区分开。这种区分有时带着民族骄傲,有时带着对劣质山寨的嘲讽。红引擎的提法恰好踩在这条民族叙事上。

波兰媒体后来反复使用一个说法,他们终于有了自己的引擎。这个“自己”意味深长。它不只是公司的,也是国家的。红引擎还没有写出第一行足以震撼西方市场的代码,就已经被波兰媒体推上了国家荣誉的位置。

这个叙事对CD Projekt是一把双刃剑。它能在短期内为招聘和技术投入争取文化合法性,也能在中期把公司的每一个技术失误放大成国家失败。

当一个工作室自研引擎被拔高到民族工业的高度,它就无法再像普通商业决策那样低调地调整。你不能过两年说,民族工业项目我们暂停了。你只能把它做成,或者被它拖垮。这个压力落在红队的工程师身上。

最年轻的入职者大多二十几岁,他们中的一些人是靠盗版游戏和演示场景学会编程的。有人曾在业余时间拆解过西方的游戏运行环境,现在他们要写出一个能支撑开放世界的引擎。这种来自国家叙事的期待是陌生的。他们原本只是想做出一个比《巫师》更大的续作。

自研引擎的第一批成果并不漂亮。红引擎原型版本在物理碰撞、光影处理和场景流式加载上都出现了大量问题。开发进度被拖慢,续作的许多内容不得不等待引擎功能跟上。预算再次膨胀,但这次花钱的方式与《巫师》第一代不同。

当年是学习成本和反复试错。现在是维护一个持续生长的技术系统。引擎和游戏同时开发,意味着引擎的接口每天都在变。程序员写了新的渲染模块,美术组就要重做材质。任务设计师设计了新的事件类型,工具组就要补上脚本接口。

生产现场处在一种半流动的状态。每个人的工作都建立在别人尚未完成的地基上。最要命的是,这些成本几乎不会直接反映在游戏的任何可见更新里。你不会因为优化了内存分配器获得新任务,但你一定会因为它出了问题而停下手里所有事。这正是自研引擎赌注中危险的那一面。

2007年的商业成功给了CD Projekt一个信号。这个信号本身并不是错的。它说明公司的叙事能力已经获得了市场认可。但管理层从这个信号中得出了一个更危险的推论:公司有能力同时进行产品开发和技术基建的双线作战。这个推论建立在一次成功之上。而这次成功的条件恰恰是,他们当时没有同时开发引擎和游戏。他们用的是别人的引擎,承受了别人已经备好的底层。他们能把大部分精力放在故事、选择和任务设计上。一旦把自研引擎压进双线作战,资源分配就变了。

变化最先在团队行为上显现出来。会议开始出现两种语言。一种语言关于世界、角色、任务和道德选择。另一种语言关于纹理流送、帧预算、工具链和平台差异。

过去它们大多集中在不同角色身上,现在它们堆在同一批人身上。巴多夫斯基需要同时听懂这两种语言,还要在两者之间做出调度。他慢慢发现,自己花在技术会议上的时间开始超过花在叙事会议上的时间。不是因为叙事不重要了,而是因为技术问题更紧急。

叙事的失败会伤害作品,技术的失败会直接阻止作品被运行。每当资源受限,人的注意力总会滑向眼前更硬的困难。组织重心的偏移缓慢发生。它没有在某一刻被全体投票通过,而是通过一次一次会议纪要、一次一次里程碑调整渗入公司肌肉。

团队里陆续有人离开。一些人去了西方大厂,因为那里有稳定的商业引擎,岗位边界更清晰。留下来的人则习惯了一种公司文化,不断用更大的投入去覆盖之前的投入。每当自研引擎暴露出新问题,大家倾向于把它理解为需要新的解决方案,而不是判断最初的方案是否应该调整。因为调整意味着承认沉没成本,而波兰的创业文化不喜欢这种承认。它更愿意相信,坚持下去就是胜利。当然,自研引擎的账也不是完全负面的。

红引擎后来让《巫师2》在画面表现力上第一次与西方大厂站在了同一起跑线。当第一支实机演示视频发布时,玩家群体被那个茂密森林里的光影、角色脸上的油汗、被风吹动的衣摆震惊了。西方媒体开始把红引擎的技术成果当作一款大型新作的卖点来讨论。波兰媒体则更加兴奋,他们终于看到“自己的引擎”站在了国际擂台上。

这个场面在2010年前后演变成一场规模不小的民族自豪运动。游戏引擎被写进经济类报纸的专栏,被地方电视台请去报道,被某些政客在公开演讲中当作战后一代技术上限被打破的证据。引擎民族主义就这样完成了它的第一次公开亮相。

但站在内行角度看,这背后的成本也逐年清晰。自研引擎的维护需要持续投入,技术债务一层叠一层。引擎团队被不断要求支持新平台、优化新功能、适配新硬件,而每一个支持的背后都有额外的工具开发。

这些债务在最初几年被增长和美誉掩盖。到后来,当项目规模再上一个台阶时,它们会以一种更暴力的方式一起返场。但在那时,没人愿意信这个。

红引擎赌注的真正代价,不是第一笔巨额投入,而是它改变了公司的结构性选择。一个拥有自研引擎的公司,会天然倾向于用它更久,用它做更多项目,用它证明投资值得。它会推迟对外部技术趋势的判断,会习惯性地把技术问题转化为内部问题,会把每一次延期都归因于工程难度,而不愿承认自建工具链可能已经走到了物理极限。多年之后,当成熟的商业引擎已经让全球开发者共享同样的技术底版时,CD Projekt仍然想在一个巨型开放世界里同时管理复杂任务系统和一套从未真正稳定过的自研引擎。那场灾难有产品管理的原因,有时间表的原因,有沟通的原因,但它最深层的根,在2007年那个会议室里就已经种下。当时没有人反对自研引擎。部分人犹豫过,但没有人真心拒绝。因为他们刚刚从授权引擎里吃尽了苦头。谁愿意再回到那种每天被别人家代码束缚的日子里去呢。这种情绪后来被证明是该被尊重的。授权引擎的局限是真实的。它确实让《巫师》第一代无法实现团队想要的东西。但情绪无法替代工程判断。

它太容易把团队推到另一个极端,从痛恨外部依赖,到迷信内部能力。自研引擎不是不能选。有些工作室选了它,并因此获得了极高的创作自由。但前提是,你必须有足够大的技术组织,有足够稳的现金流,有足够清晰地把它视为长期基础而不是短期武器。CD Projekt在2007年并不完全满足这些前提。它的成功叙事太新鲜。它的现金缓冲太薄。它的技术积累还撑不起一个与西方大厂竞争的通用平台。它只是在大胆地抢跑。而抢跑成功的公司,往往会错把速度当成实力。到2008年结束时,红引擎的开发已经占去了红队相当大的一部分研发预算。同时续作的故事和世界观也在推进。公司不得不在两线同时投入。GOG平台仍在培育期,但已经开始被内部视为一张可以平衡现金的牌。这个结构逐渐稳定下来,形成一种分工:发行与旧游戏业务提供一定现金流,主机平台上日益增长的续作预期提供战略想象,自研引擎负责把公司技术和产品绑在一起。它看起来是一个自洽的增长模型。

这种双线作战的消耗不是均匀分布的。它像一根被同时从两端点燃的蜡烛。一端是引擎开发,另一端是续作内容生产,中间站着同一批人。红队的技术骨干在2008年春季做了一次内部统计,发现引擎相关的工作量已经占到了总开发时间的四成以上。这个数字让一部分人感到不安。他们原本以为自研引擎是工具,工具造好了就能加速内容生产。但现实是,工具永远在造,内容永远在等。引擎组每解决一个渲染问题,就会在任务系统里冒出三个新的兼容问题。美术组每完成一个场景,就要等工具组更新导出插件。这种互相等待的状态持续了整个2008年。它没有爆发成危机,因为团队规模还不算大,沟通成本尚可承受。但它埋下了一种工作节奏:永远在追赶自己的上一项决定。

这种节奏在财务数据上也有投影。2008年第三季度的内部预算审核显示,红引擎的研发支出已经超过了当初预估的百分之四十。超额部分主要来自两个方面。一是引擎原型阶段的技术验证比预期耗时更长。物理系统需要从基础数学库开始搭建,光照模型需要反复调试才能在低配硬件上跑出可接受的帧数。二是人员扩张。为了同时推进引擎和续作,红队不得不在一年内将技术团队扩大近一倍。新入职的图形程序员和工具程序员需要时间熟悉自研架构,而熟悉的过程本身就是生产力净消耗。财务部门开始在每个月的成本分析里标红引擎相关的条目。那些条目越积越厚,像一份不断加页的账单。伊温斯基曾在一次管理层会议上把这份账单摊在桌上。他没有说停。他只是说,我们需要知道这个数字会涨到什么时候。没有人能回答他。因为引擎开发没有明确的终点。它只会在某个版本上暂时稳定,然后被下一轮硬件更新和功能需求再次撬动。

这种不确定性开始渗透进公司与外部合作伙伴的关系。雅达利作为《巫师》初代的发行商,对续作的进度保持着密切关注。他们的技术评估团队在2008年底访问了华沙办公室。那次访问留下了一份内部备忘录。备忘录里提到,红引擎的工具链尚未达到可交付状态,续作的内容生产因此受到制约。雅达利方面没有直接批评自研决策,但他们建议CD Projekt考虑备选方案,包括回归商业引擎或采用混合方案。这个建议在华沙被礼貌地搁置了。不是因为傲慢,而是因为红引擎已经绑定了太多东西。续作的世界设计、任务架构、战斗系统,都已经按照自研引擎的能力边界来规划。退回去意味着推倒重来。而推倒重来在2008年这个节点上,比继续前进更昂贵。雅达利的备忘录被归档,但它的核心判断后来被证明是准确的。工具链的问题在接下来两年里持续拖累内容生产,直到《巫师2》的开发后期才得到部分缓解。而那时,时间窗口已经关上了大半。

与此同时,GOG平台的角色开始发生变化。它最初是CD Projekt发行业务的延伸,目标是让老游戏在新系统上可运行。但到了2008年,随着红引擎不断吞噬现金,GOG开始被内部视为一种战略对冲。管理层在预算讨论里反复提到一个逻辑:如果自研引擎的投入导致续作延期,GOG的收入可以部分填补现金缺口。这个逻辑本身没有错。但它把公司的财务安全绑在了一个尚未被市场充分验证的平台上。GOG在2008年仍处于用户积累阶段,收入规模有限。它更像一个潜力股,而不是一张可以随时兑现的保险单。把自研引擎的风险转嫁到GOP身上,等于用一个不确定对冲另一个不确定。这种结构在账面上看起来是分散风险,实际上是把风险从一个篮子挪到另一个篮子,而两个篮子都放在同一张桌子上。桌子就是CD Projekt这家公司。它还不够大,不够稳,却已经在同时下三盘棋:续作、引擎、平台。每一盘棋都需要专注,而专注是有限资源。

巴多夫斯基在2008年底的一次全体会议上试图回应这种焦虑。他没有用财务术语,也没有用技术术语。他讲了一个比喻。他说,我们现在做的事,就像在暴风雨里造船。船还在造,我们已经出海了。这个比喻后来在团队里流传了很久。它准确地描述了当时的状态,也准确地暴露了问题的根源。没有人会选择在暴风雨里造船,除非他们相信自己别无选择。红队相信自己别无选择。授权引擎的痛感太近,近到他们还能闻到罗兹阁楼里那台过热机器的焦味。自研引擎的诱惑太大,大到他们愿意相信它能解决一切。但暴风雨不会因为你正在造船就停下来等你。市场的期待在涨,西方竞争对手在加速,硬件更新周期在缩短。CD Projekt选择了一条需要时间最长的路,而时间恰恰是他们最缺的东西。

到2009年第一季度,红引擎的初版终于达到了一个可以支撑内容生产的基线。物理碰撞基本稳定,光照系统能在中等画质下运行,流式加载模块可以处理比维吉玛大五倍的地图。

只有少数人注意到,这个模型对外部冲击极为敏感。只要其中一条线出问题,另外两条线也会被拉动。而红引擎正是其中最重的那条线,它把CD Projekt的时间和资本都绑在了一个可以无限消耗的内部项目里。2009年初,有人曾在内部讨论里建议,是否可以先降低自研引擎的投资规模,用更长时间稳住现金流。这个建议没有得到推进。不是因为决策层听不进去,而是因为它与现有路线冲突。公司已经对外释放了要做出震撼续作的消息。波兰媒体已经为“自己的引擎”写过一轮赞歌。华沙的投资机构也开始把游戏产业当作“波兰制造”的一部分。退出或减速的代价变得太高。更关键的是,团队内最有权势的声音仍然认为,续作必须在技术上做出代差,才能在西方市场赢回第一代的那些技术失分。你要用叙事说服人,首先得让他点开视频不笑出来。技术不行,故事再好也传不远。这个判断的后果在几年后会显现。但此刻,它还只是一条不断被执行的路线。工程师每天来办公室,面对的仍然是引擎源码、编译失败和性能曲线。

在他们记忆中,《巫师》第一代刚刚发售后采访里被问得最多的问题是,为什么战斗手感可以做到这样。答案始终绕不开极光引擎的限制。现在,这个理由将不再成立。自研引擎让CD Projekt暂时获得了解释问题的外部借口。他们不再把技术短板归因于他人,而是整个公司对平台负责。但他们很快会发现,这个解释也意味着无处可逃。你不再能说,这是BioWare的引擎。你只能说,这是我们的。这就是2007年的教训,它蛰伏在“我们”这个词里。当一家公司决定把技术掌握在自己手里,它同时也就把技术失败全部留给了自己。在罗兹的阁楼时期,他们曾依靠外来引擎和一批盗版时代成长起来的年轻人,把一部波兰小说改成了全球玩家能玩的游戏。那时他们不必为引擎崩溃负全责。现在他们已经有了那个责任。它将在后来的《巫师2》中带来高光,也将在多年后的夜之城把公司拖到深渊。两条路都从同一个决定出发。那个决定并不疯狂。它只是太快地相信了自己能从零开始,并且永远跑得比债务更快。而债务不会消失。它只是在等一个更大的项目。