第 6 章

未完成的长成

2008年2月,Havok发布了5.5版本的SDK。版本号本身是一个标记:从2000年在游戏开发者大会(GDC)上发布1.0版本,到2008年的5.5,八年时间,五次大版本迭代。每一次迭代都意味着更完善的文档、更精细的工具链、更多的平台支持。Windows、Xbox、Xbox 360、GameCube、Wii、PS2、PS3、PSP、Mac OS X、Linux——这份列表在5.5版本中已经长得需要另起一行。一个拿到授权的开发者,收到源代码之后,可以在十几套不同的硬件环境里编译运行同样的物理模拟。这是工业化软件工程的胜利。它让“做游戏”这件事变得更可预期了。把时间拨回同一年。有一个人在离这些工业化工具很远的地方,开始用一种完全不同的方式做游戏。马库斯·佩尔松当时还在为一家叫jAlbum的公司写代码。他晚上回家之后会写自己的小游戏。他参加过几次Ludum Dare——一种限时游戏开发比赛,通常要求参赛者在四十八小时内从零完成一个作品。

在这种比赛里,“完成”是一个很具体的概念:时间到了,你得交出一个能跑的东西。它可能很粗糙,可能只有一关,可能到处是bug,但它是一个完整的、有头有尾的体验。佩尔松喜欢这种约束。他在2008年4月的第十一届Ludum Dare上做了一个叫《Breaking the Tower》的游戏,玩家要挖矿、建塔、抵御敌人。它很小,但它里面有某种东西。那种东西在后来的叙述里被反复提起,被赋予各种名字:创造力、自由、开放世界。但在2008年,它还只是一种手感。一种挖掘和建造之间的节奏。一种方块被放置和破坏时的清脆反馈。佩尔松没有在四十八小时之后放下它。他开始在业余时间继续开发。2009年5月,他在一个叫TIGSource的独立游戏论坛上发布了一个可玩的版本。他把它叫做《Minecraft》。TIGSource是2005年由一位叫Derek Yu的独立开发者创建的论坛。Yu后来做了《Spelunky》——一个在独立游戏史上反复被提及的名字。

但在2005年,他还只是一个喜欢做游戏的人,想要一个可以和同类人交流的地方。TIGSource很快聚集了一群对主流游戏感到厌倦的开发者。他们讨论像素画、程序生成、roguelike机制。他们互相试玩彼此的作品,给出尖锐但善意的反馈。他们形成了一个小型文化场域,有自己的审美偏好和批评语汇。

在这个场域里,“完成度”不是最重要的评价标准。“有趣”才是。“有新想法”才是。佩尔松在TIGSource上发布《Minecraft》的时候,游戏还非常原始。玩家出生在一片由方块构成的世界上,可以走动、跳跃、破坏方块、放置方块。没有敌人,没有合成系统,没有红石电路,没有下界,没有末地。只有方块。无限的方块。世界会一直生成到地平线以外很远的地方。玩家可以挖一个洞,搭一座塔,或者什么都不做,只是走。

论坛上的反应很快。有人贴出了自己搭的城堡的截图。有人发现可以把方块摆成像素画的形状。有人开始讨论水流——如果加入水流会怎样,水会冲刷方块吗,会把东西冲走吗。

佩尔松读了每一条回复。他开始更新。第一次更新加入了水流。第二次更新加入了岩浆。第三次更新加入了多人模式——两个玩家可以在同一个世界里一起挖掘和建造。

每一次更新都不大。有时候只是修了几个bug,加了一种新的方块类型。但更新的频率很高。有时候一天之内会发布两个版本。每个版本都有一个版本号:0.0.11a,0.0.12a,0.0.13a。

小数点后面那串数字在不停地变化,像心跳监测器上的读数。这些版本号本身就是一种声明。它们说:这个东西还没有完成。它还在生长。它可能会变得完全不同。你现在看到的只是它的一个瞬间形态,而下一个瞬间已经在路上了。

在传统的游戏开发流程里,版本号有一套严格的语义。Alpha版本意味着核心功能还在实现中。Beta版本意味着功能已经完整,正在修bug。Release candidate意味着理论上可以发布了。Gold master意味着刻盘。每一个阶段都有明确的进入标准和退出标准。发行商的项目经理会盯着这些节点。

错过了里程碑,合同里可能有罚则。这是工业化生产的逻辑:游戏是一个产品,产品有规格,规格有时间表。佩尔松没有项目经理。他也没有合同。他只有一个PayPal链接。

2009年6月,他在《Minecraft》的网站上放了一个付费按钮:支付9.95欧元,就可以下载游戏的完整版本——虽然这个“完整版本”在当时还只是一个非常早期的alpha。他写了一段话,大意是:现在购买,以后所有的更新都免费。价格会随着游戏越来越完整而上涨。所以如果你想便宜拿到,现在就是最好的时机。

这段话后来被无数独立开发者改写、复制、粘贴到他们自己的游戏页面上。它成了独立游戏领域里一种标准化的修辞。但在2009年,它还是一个没有先例的实验。佩尔松不知道会有多少人付钱。他只知道他白天的工作赚的钱不够他全职做游戏。他需要一条路。

人们开始付钱。一开始是几十个人。然后是几百个。然后是一千个。到2010年初,《Minecraft》每天能卖出几百份。

佩尔松辞掉了jAlbum的工作,成立了自己的公司Mojang。他没有拿风险投资。他没有找发行商。他的开发资金来自那些愿意为一个未完成的游戏付钱的玩家。在Kickstarter成为独立游戏融资的标准渠道之前——Kickstarter本身是2009年4月上线的,几乎和《Minecraft》的早期访问同时——《Minecraft》已经证明了一件事:玩家愿意为未完成的作品付费,只要他们相信这个作品在生长,只要他们觉得自己是这种生长的一部分。这种感觉是关键。在传统的游戏消费关系里,玩家是一个终点。产品从开发者流向发行商,从发行商流向零售店,从零售店流向玩家。玩家拿到的是一个封装好的、不可修改的成品。他可以玩它,可以喜欢它或不喜欢它,可以在论坛上写评论,但他不能改变它。产品是封闭的。关系是单向的。在《Minecraft》的模式里,这种关系被重新配置了。玩家购买的不是一个成品,而是一个正在生长的世界的入场券。

他们进入这个世界的时候,它还在变化。他们可以在论坛上提议新功能。他们可以报告bug。他们可以制作Mod——修改游戏代码来添加自己的内容。佩尔松读了这些帖子。有时候他会把一个Mod的功能整合进官方版本。有时候他会改变计划,因为玩家发现了一种他没想到的玩法。

一个著名的例子是矿车。在游戏的早期版本里,玩家可以制作矿车和铁轨,但矿车只能在一个方向上滑行。玩家发现,如果在矿车旁边放一个箱子,矿车经过箱子时,箱子里如果有物品,矿车会拾取物品。这个机制本来是代码里的一个意外,但玩家开始利用它来制作自动运输系统。佩尔松看到了,没有修复这个意外行为,而是把它保留下来,后来还加入了更多支持自动化的机制。最终,红石电路、活塞、漏斗——整个自动化系统——成了《Minecraft》最核心的玩法之一。而这个方向,最初不是佩尔松设计的。是玩家找到的。

这就是“未完成”转向的真正含义。它不只是“早点发布、频繁更新”的开发方法论。它是一种权力的重新分配。

当游戏不再需要在一个确定的日期以完整形态交付,当它可以永远处于修改和扩展的过程中,那么谁有资格决定游戏应该长成什么样子——这个问题就被打开了。答案不再只是设计师或发行商。答案开始包括玩家、Mod作者、服务器管理员、视频主播。游戏从一个作者的作品变成了一个社区的对话。这种对话并不总是和谐的。

2010年10月,佩尔松在《Minecraft》里加入了万圣节更新,引入了下界——一个充满危险生物的异度空间。一些玩家喜欢这个更新。另一些玩家不喜欢。他们觉得下界太黑暗了,太恐怖了,破坏了游戏原有的宁静氛围。论坛上出现了激烈的争论。佩尔松在Twitter上发了一条推文,大意是:如果你不喜欢下界,就不要进去。它就在那里,但你可以忽略它。那条推文后来被删除了。

但它留下了一个问题:如果游戏是一个持续生长的有机体,那么当它长出一些玩家不喜欢的部分时,谁有权说这部分不该存在?是作者吗?是付钱的玩家吗?

是那些从alpha时代就在的元老玩家,还是那些刚买游戏的新玩家?这个问题没有简单的答案。它会在接下来的十年里,在每一个持续更新的游戏中反复出现。2011年11月,《Minecraft》在PC上卖出了四百万份。同月,游戏的第一个正式版本——1.0——在MineCon上发布。这是《Minecraft》第一次有一个“完成”的版本号。但所有人都知道,1.0只是一个标记,而不是一个终点。佩尔松在发布1.0之后不久就退出了《Minecraft》的开发,把项目交给了延斯·伯根斯坦。伯根斯坦继续更新。1.1,1.2,1.3。到2024年,版本号已经到了1.21。十二年了,游戏还在生长。1.0这个数字因此带上了一种反讽的意味。在传统意义上,1.0意味着“完成”。但对《Minecraft》来说,1.0只意味着开发者觉得现在可以叫它1.0了。它并不比0.0.11a更“完成”,也不比1.21更“未完成”。它只是版本号序列中的一个点。

完成的概念本身被掏空了。这种掏空不是《Minecraft》独有的。在2000年代后期,一股更广泛的潮流正在形成。

Steam在2010年代初开始放宽对第三方游戏的审核,独立游戏大量涌入。这些游戏中,有相当一部分是以“早期访问”的形式上架的。开发者会在游戏描述里写明:这个游戏还在开发中,现在购买可以享受折扣,你的反馈将帮助我们改进游戏。有些游戏在早期访问阶段停留了几个月。有些停留了几年。有些永远停留在了那里。

2013年,Steam正式推出了“抢先体验”分类。这是一个制度化的时刻。它意味着Valve——这个运营着全球最大PC游戏分发平台的公司——正式承认了“未完成”是一种合法的商品形态。开发者不再需要假装自己的游戏已经完成。他们可以诚实地告诉玩家:这是我们现在做出来的东西,它还会变得更好,但我们不知道什么时候会完成,甚至不确定会不会完成。而玩家可以选择接受这个前提,付钱,进入这个未完成的世界。这听起来像是一种解放。它确实是。

它让那些没有足够资金完成全部内容的开发者,可以先让作品进入公众视野,用销售的收入来支持后续开发。它让那些不确定自己的想法是否成立的开发者,可以先做一个最小可行版本,看看玩家的反应。它降低了做游戏的门槛——不只是技术上的门槛,还有经济上的门槛。

但它也带来了新的问题。当一个游戏可以在早期访问阶段无限期停留时,“失败”的定义变得模糊了。在传统的模式里,一个游戏如果宣布取消,它就是失败了。它有一个明确的死亡日期。

但在早期访问模式里,开发者可以只是停止更新。没有公告,没有告别。版本号停在某个数字上,最后一次更新是两年前。论坛上还有玩家在问这个项目是否还活着,但没有人回答。游戏没有死——它只是不再生长了。它陷入了一种永久的沉寂。

这种沉寂比宣布取消更难处理。宣布取消至少是一个句号。永久沉寂是一个省略号。它不给玩家一个可以哀悼的时刻,也不给开发者一个可以释怀的时刻。它只是悬在那里,像一个没有关闭的标签页。

在《Minecraft》的光芒之外,有大量的早期访问项目以这种方式归于沉寂。它们中的一些在Steam上还能买到。商店页面还在,截图还在,用户评价还在——可能是“多半好评”,因为早期支持者给了好评,希望开发者能回来。但开发者没有回来。资金耗尽了。团队解散了。或者只是因为开发者意识到,他们最初设想的那种用玩家的反馈来引导开发的模式,在实践中比想象中更困难。

困难在哪里呢?困难在于,当一个游戏拥有了一个活跃的玩家社区之后,开发者的工作就不再只是做游戏了。他们还要管理社区。要回复帖子,要解释设计决策,要在互相矛盾的需求之间做选择。玩家A想要更多的战斗内容,玩家B想要更多的建造选项,玩家C觉得游戏已经太复杂了,应该回到早期版本的简洁。

每一种声音都是合理的,但它们指向不同的方向。开发者如果试图满足所有人,游戏就会变成一个臃肿的、没有核心的东西。开发者如果选择忽略某些声音,就会有人指责他们背叛了社区。这不是一种轻松的对话。

它是一种持续的、消耗性的协商。大型游戏公司有专门的社区经理来处理这些事。独立开发者通常没有。他们自己就是社区经理,自己就是客服,自己就是那个在凌晨两点回复论坛帖子的人。

佩尔松在 2014 年把 Mojang 卖给了微软,价格是二十五亿美元。他在交易完成后发了一篇博客文章,写了他离开的原因。他没有写得很详细,但字里行间有一种疲惫。他说他不喜欢成为一个符号。他说他只是想做游戏,但《Minecraft》的巨大成功让他变成了别的东西。他说他想回到那种在论坛上发一个小游戏看看大家觉得怎么样的状态。那篇博客文章后来也被删除了。

但它留下了一个问题:当“未完成”从一种生存策略变成一种商业模式,当它从个人选择变成平台制度,创作者本人还能不能回到那种野生状态?还是说,一旦进入了持续更新的循环,就没有真正的退出?这个问题不只属于佩尔松。它属于所有在早期访问时代做游戏的独立开发者。

当他们发布第一个 alpha 版本时,他们可能以为自己在做一个有限的项目——六个月,一年,做完就结束。但他们不知道,只要游戏还在更新,玩家就会期待下一次更新。只要玩家还在期待,开发者就会感到一种责任。这种责任没有合同约束,但它真实存在。它是一种软锁链,和 XBLA 认证流程里的那些技术规范一样软,一样真实。2015 年,一个叫《Cube World》的游戏在 Steam 上发布了 alpha 版本。它是由一对德国夫妻——沃尔夫拉姆·冯·芬克和莎拉·冯·芬克——开发的。游戏是一个体素风格的开放世界 RPG,画面明亮,战斗流畅,探索感很强。alpha 版本发布后卖出了大量拷贝。玩家们喜欢它,期待更新。冯·芬克夫妇在 Twitter 上说他们在继续工作。然后,更新停止了。Twitter 沉默了。论坛上的帖子越积越多。有人猜测开发者卷款跑了。有人为开发者辩护,说他们可能只是需要时间。有人开始制作 Mod 来修复 bug 和添加内容。

有人写了长篇分析,试图从代码里找出游戏未完成的原因。六年之后,2021 年,冯·芬克夫妇发布了一个更新。它改变了游戏的很多核心系统。一些老玩家喜欢,一些不喜欢。但无论如何,更新来了。游戏又开始生长了。它在早期访问阶段停留了六年,然后继续往前走。

六年。这个时间跨度本身就是一个陈述。它说:在早期访问的世界里,时间不是以开发周期来计算的,而是以生活来计算的。开发者会生病,会生孩子,会换工作,会经历抑郁,会对项目失去热情,会重新找回热情。游戏不是在这些事情之外独立生长的,它是和开发者的生活一起生长的。当生活暂停时,游戏也暂停。当生活恢复时,游戏也恢复。

这就是“未完成”的深层含义。它不只是关于版本号和更新频率,它是关于游戏和生活的边界变得模糊。在传统模式里,开发者做完游戏,游戏离开开发者,进入世界。在早期访问模式里,游戏从不离开开发者。它一直留在那里,像一个没有毕业的孩子。开发者不能真正说“我做完了”,因为总有下一个版本。

玩家不能真正说“我玩完了”,因为总有新内容。这种状态有它的美。它让游戏保持了一种活生生的、呼吸着的质感。一个不断更新的游戏像一个不断变化的城市——你离开一年再回来,会发现有些街道变了,有些建筑拆了,有些新东西在原来空着的地方长出来了。这种体验是封闭的、封装好的产品无法提供的。

但它也有它的代价。代价是创作者永远无法真正完成一件事。代价是玩家永远无法真正告别一个世界。代价是“做完”这个古老的人类需求——把事情做完,划掉清单上的条目,说好了下一个——在早期访问的世界里被系统性地剥夺了。

在《Minecraft》的早期论坛上,有一个帖子。发帖人是一个玩家,他报告了一个 bug:当他站在方块边缘时,角色会轻微地抖动。佩尔松回复了那个帖子。他说:这不是 bug。这是特性。角色在保持平衡。这不是 bug。这是特性。这句话后来成了《Minecraft》社区里的一个梗,但它也说出了某种更深的东西。

在“未完成”的世界里,“bug”和“特性”之间的界限是流动的。开发者可以决定一个意外行为是缺陷还是功能。玩家可以通过使用它的方式来决定它是缺陷还是功能。有时候,一个意外行为被使用了足够多次,它就变成了特性。有时候,一个特性被忽略了足够久,它就变成了遗迹。

这种流动性和前面提到的矿车拾取物品的机制是同一回事。玩家在游戏里发现的行为,开发者没有预料到,但它被保留下来,被扩展,最终改变了游戏的方向。这不是传统的设计师设计、玩家消费的模式。这是一种共同进化。游戏在玩家的手中变形,玩家在游戏的规则中寻找缝隙,开发者在缝隙中看到新的可能性,然后把缝隙扩大成门。

Mod 社区是这种共同进化最极端的表现。《Minecraft》从非常早期的版本就支持 Mod——佩尔松没有加密游戏代码,玩家可以相对容易地反编译和修改。这创造了一个庞大的 Mod 开发生态。有些 Mod 只是加了几种新的方块。有些 Mod 完全改变了游戏的玩法——加入复杂的工业系统、魔法系统、任务系统。

有些 Mod 变成了独立的存在,有自己的维基百科页面,有自己的论坛,有自己的子社区。有些 Mod 开发者后来被 Mojang 雇佣,参与官方版本的开发。一个 Mod 反向改变了原版游戏的设计。这不是修辞,是事实。2013 年的红石更新加入了很多机制——比较器、漏斗、日光传感器——这些机制在很大程度上受到了当时流行的工业 Mod 的启发。Mod 社区先探索了用红石建造复杂自动化系统的可能性,然后官方版本把这些可能性吸收进了核心游戏。

这意味着什么?意味着在《Minecraft》的生态里,开发者不是唯一的作者。Mod 作者也是作者。

服务器管理员也是作者——他们通过配置插件和规则来创造独特的多人游戏体验。视频主播也是作者——他们通过录制和叙事来赋予方块世界意义。玩家也是作者——他们通过建造、探索和社交来书写自己的故事。“谁有资格做游戏”这个问题,在这里被推进到了一个新的层面。

它不再是关于谁能拿到开发工具和分发渠道——那些问题在 Flash 时代和共享软件时代已经被部分解决了。它现在是关于谁能决定游戏应该长成什么样子。答案不再是单一的,它分散在一个网络里。但这个网络并不平等。Mojang 仍然拥有《Minecraft》的知识产权。他们可以决定哪些 Mod 是合法的,哪些不是——他们在 2016 年发布了 Mod 使用指南,划定了界限。他们可以决定哪些 Mod 机制可以被吸收进官方版本,哪些不可以。他们可以在任何时候改变游戏的基础代码,让某些 Mod 失效——这被称为版本更新杀 Mod,是每个 Mod 玩家都熟悉的痛。权力没有被消除。它只是被重新分配了:从发行商转移到了平台,从平台转移到了开发者,从开发者部分转移到了社区。但它始终存在,只是变得更分散,更难定位,因此也更难质疑。

半成品伦理——这个独立游戏领域中将“未完成”、“持续更新”、“早期访问”从缺陷转化为美学与商业策略的集体信念体系——在《Minecraft》的案例中找到了它最完整的表达。它让“产品”变成了“过程”,让“作者”变成了对话的召集人。但它没有让权力消失,只是让权力变得更柔软、更分散、更像空气。在传统的模式里,权力是可见的——发行商说不,你就不能做。在早期访问的模式里,权力是弥漫的——玩家的期待、平台的政策、Mod 社区的惯性、开发者自身的疲惫,共同构成了一张网。这张网没有中心。它不会说不。它只是让某些方向变得更容易,让另一些方向变得更难。2008 年 2 月,Havok 发布了 5.5 版本的 SDK。同一年,佩尔松开始在业余时间写一个关于方块的小游戏。这两件事之间没有直接的因果联系,但它们属于同一个历史时刻。

在那个时刻,工业化工具已经发展到了前所未有的完善程度——物理引擎、图形引擎、音频引擎,每一个都有版本号,每一个都有文档,每一个都有技术支持合同。但也是在那个时刻,有一个人决定不用这些工具。他决定从零开始,用 Java 写一个粗糙的、全是方块的世界。他决定不先做完再发布,而是先发布再慢慢做。他决定让玩家进入一个未完成的世界,然后和他们一起看这个世界会长成什么样子。

这个决定在当时看起来可能只是个人的偏好。但在接下来的十五年里,它变成了一种模式,一种制度,一种文化。它改变了人们对做游戏这件事的想象,让“完成”从一个终点变成了一个选项。

它创造了一种新的美学——未完成的美学,生长的美学,永远在路上的美学。但它也创造了一种新的疲惫。当游戏永远不会完成,开发者就永远不能说我做完了。当更新永远不会停止,玩家就永远不能说我玩完了。

这两个“永远”之间,是一条没有尽头的路。路上有很多人在走。有些人走得很快乐。有些人走得很累。

有些人已经停下了,但他们的游戏还在商店页面上,版本号停在某个小数点后面。像一个没有合上的眼睛。