第 5 章
补丁工具里的特洛伊木马
第5章 补丁工具里的特洛伊木马
白板上的那个词,周围被擦掉的痕迹还没有完全干透。纽维尔写下的是“更新”。不是“平台”,不是“社区”,不是后来那些被反复引用的宏大概念。只是一个动词。
这个动词的背后有一份文件。2001年11月,哈灵顿把一份玩家投诉统计摊在轮子桌的中央,那叠纸将近两厘米厚,按照时间顺序排列,最早的一页日期是2001年3月,最晚的一页是三天前。统计表上每一行都是一个案例:无法连接服务器、版本不匹配、下载链接失效、FTP站点超时。哈灵顿用红笔在右侧空白处做了归类标注,出现频率最高的词组是“补丁下载失败”。
《反恐精英》当时的玩家基数已经超过三百万。这个数字在2001年的PC游戏市场是一个异类——一款从MOD成长起来的多人在线射击游戏,没有零售渠道的货架陈列,没有发行商的营销预算,只靠服务器列表和玩家口碑,就达到了大多数商业游戏无法企及的规模。但规模本身制造了压强。CS的更新频率是按周计算的:平衡性调整、新武器数据、地图修正、反作弊机制升级。
每一次更新都生成一个新的补丁文件,每一个补丁文件都需要到达三百万台电脑。而到达的方式,在2001年,是玩家自己想办法。Valve的官方网站提供补丁下载,但服务器带宽在更新发布后的头四十八小时内基本耗尽。玩家挤在论坛里互相传递非官方镜像站的地址,那些地址有的藏在个人主页的角落里,有的挂在大学FTP服务器上,有的干脆就是某个玩家用自家宽带临时搭建的共享文件夹。论坛上的帖子从“求补丁”变成“求可用链接”,再到“这个链接有毒别点”,最后演变成一场混乱的自发互助——版本碎片化随之而来。一部分玩家更新了,一部分没有,还有一部分装错了补丁,游戏崩溃后重新回到论坛发帖。这个循环每两周重复一次。
哈灵顿在会议记录里把问题归结为渠道失效。他写的不是“技术问题”。他写的是“我们没有能力把补丁送到玩家手中”。措辞是克制的,但判断是明确的。
在光盘时代,这个矛盾被物理介质遮住了——游戏装在光盘里,更新补丁是可有可无的附加品。但《反恐精英》已经脱离了光盘时代。
多人游戏的生命线是持续更新,更新频率决定了游戏能否持续运作,而更新本身没有通路。Valve控制着代码,但控制不了代码的传播。这不是服务器扩容能解决的问题。这是结构性的断裂。
另一个问题在平行发酵。《半条命》的CD-Key验证机制到2001年底已经基本失效。互联网上流传着至少几十个可以生成伪CD-Key的工具,其中一些的生成速度比Valve官方的验证程序还快。在线对战依赖WON系统进行验证,但WON只能判断CD-Key是否合法,不能判断同一张CD-Key是否同时在几十台电脑上登录。结果是,一个合法购买的CD-Key可以被无限复制,而Valve对此没有任何技术手段干预。
零售渠道对此的反应比技术社区更直接。2001年圣诞节前,一家大型连锁零售商给雪乐山发了一封邮件,措辞相当明确:如果你们不能解决盗版问题,我们明年不会再采购《半条命》的库存。这封邮件被转发到纽维尔的收件箱里,他把它转发给了核心团队,附了一句评论:我们得自己解决这个问题。
解决。在当时,这个词不被任何人理解为“做一个平台”。它是一个技术方案。一个能让补丁自动到达玩家、让CD-Key无法被重复使用的技术方案。一个工程问题。
但工程问题有它自己的重力。2002年1月,Valve在柯克兰办公室的会议室里召开了第一次Steam技术讨论会。与会者包括纽维尔、哈灵顿、约翰·库克——一位在1999年加入Valve的资深网络工程师——以及另外五名程序员。库克在白板上画出了第一个架构草图:一个客户端-服务器模型,玩家电脑上安装一个轻量级客户端,Valve的服务器上维护一个补丁数据库。当玩家启动游戏时,客户端自动检查版本号,下载差异文件,完成更新。
这个模型本身并不新鲜。杀毒软件公司已经用了好几年类似的技术。但库克在草图的右下角加了一个小框,标注着“账户验证”。库克的理由是纯粹的工程直觉:如果系统不知道谁在连接,就无法判断该给谁推送什么文件。
但在这个会议室里,所有人都立刻意识到,这个“账户验证”的小框一旦被实现,意味着Valve第一次可以直接看到每一个玩家。不是通过零售渠道的销售数据,不是通过WON的模糊统计。是每一个玩家,每一个安装,每一次启动。
哈灵顿在会议记录里写了三行字,每行一个问题。第一行:自动更新需要客户端,客户端需要账户。第二行:账户需要验证所有权,验证需要DRM。第三行:DRM需要绑定游戏,绑定意味着平台。这三行字不是按时间顺序排列的。它们是同时出现的。哈灵顿后来在一次采访中回忆说,他写下这些句子的时候,并没有意识到自己正在描述一个平台的骨架。他只是在记录一个技术方案的逻辑链条。但这个链条,一旦开始运转,有自己的重力。
讨论持续了整个冬天。2002年2月,库克的小组完成了第一个原型——一个能够自动检测《半条命》版本号并下载补丁的命令行工具。它没有图形界面,没有账户系统,只有一个简单的版本比对功能。在内部测试中,补丁到达率从不到40%提升到了接近100%。
纽维尔看到这个数字之后,开始更多地在会议上提到“数字分发”这个词。如果补丁可以自动到达,游戏本体为什么不能?这是一个被困境逼出来的逻辑延伸。
2002年的Valve正在全力开发《半条命2》,所有现金流都依赖《半条命》和《反恐精英》的持续销售。如果盗版继续侵蚀零售端收入,如果补丁分发继续让玩家流失,那么《半条命2》的发行将面临一个极其脆弱的渠道基础。纽维尔不是在规划一个未来帝国的版图。他是在找一条出路。
2002年3月,Valve在游戏开发者大会上第一次公开提到了这个还在开发中的系统。当时它还没有名字。纽维尔在演讲中把它称为“一个基于网络的游戏更新和验证系统”。幻灯片上列出了三个关键词:无缝更新、安全验证、社区整合。头两个是技术承诺,第三个是愿景。
但台下的人几乎没有人注意到第三个词。他们的注意力集中在第二个词上。因为2002年的PC游戏行业,盗版问题已经恶化到了临界点。发行商每年在反盗版技术上投入数百万美元,效果越来越差。
CD-Key验证被破解,光盘加密被绕过,在线激活系统被虚拟服务器欺骗。整个行业都在寻找解决方案,但没有人认为纽维尔能提供答案。在演讲后的问答环节,一位来自育碧的代表站起来提问。他的问题很直接:这个系统怎么防止盗版?纽维尔的回答同样直接:让游戏本身变成一个需要验证的服务。这句话在2002年的行业语境里是激进的。它意味着游戏不再是光盘里的产品,而是服务器上的服务。它意味着玩家不再拥有游戏,而是拥有访问游戏的许可。
这个逻辑在今天已经司空见惯,但在当时,它挑战了PC游戏分销的基本商业模型。零售渠道的利润建立在销售实体光盘上。如果游戏变成服务,零售渠道就没有存在的必要。育碧的代表没有再追问。
但演讲结束后,纽维尔在走廊里被几位发行商的高管围住了。他们的问题集中在同一个点上:如果游戏变成了服务,零售渠道怎么办?这是一个没有答案的问题。或者说,这是一个答案对Valve有利、但让发行商们恐惧的问题。
Valve作为游戏开发商,它最大的成本是零售渠道吃掉的分成——发行商拿走批发价的大约50%,零售商再拿走零售价的30%到40%,最终开发商能拿到的只有零售价的30%左右。如果数字分发能绕过这个链条,Valve的利润率将大幅提升。但发行商们不一样。他们的商业模式建立在渠道控制上。如果数字分发瓦解了零售渠道,发行商自己也会被瓦解。他们听到纽维尔的回答,不是看到了未来,而是看到了威胁。
2002年春天,Valve正式向外界公布了Steam项目。官方的新闻稿措辞非常克制:Steam是一个帮助玩家自动更新游戏补丁的工具,同时提供反盗版验证功能。没有提到数字分发。没有提到平台。只有补丁和反盗版。
但在这份新闻稿发布的同一天,纽维尔在Valve内部发了一封邮件。邮件的标题是“Steam的下一步”。内容只有一段话,大意是:自动更新是我们进入玩家电脑的入口。一旦我们有了入口,我们就可以做任何事。
这段话揭示了一个基本事实:Steam从一开始就不只是一个补丁工具。它被设计成一条通道。通道的目的地,在设计之初被有意留白了。但“留白”不等于“无意”。留白是一种策略。如果Valve在2002年公开宣布Steam是一个数字分发平台,零售渠道会立刻做出反应——雪乐山会抗议,零售商可能削减订单,整个《半条命2》的发行计划会陷入被动。但如果说它只是一个补丁工具,没有人会觉得被威胁。一个补丁工具不需要在零售渠道的雷达上出现。
2002年夏天,Valve的工程师团队开始解决一个更具体的技术问题:如何让Steam在分发补丁的同时,不占用太多带宽。《半条命》和CS的补丁大小不一,小的只有几兆,大的超过一百兆。如果三百万玩家同时通过Valve的服务器下载一个一百兆的补丁,服务器会瞬间崩溃。库克提出了一个解决方案:P2P分发。原理很简单:玩家在下载补丁的同时,也作为上传节点向其他玩家提供文件。
这是BitTorrent协议在2001年刚刚验证过的技术路线,库克把它移植到了Steam的架构里。在技术文档里,他写了一句后来被反复引用的话:每个客户端都是一个潜在的服务器。这句话在工程上是准确的。但在商业上隐含着一个更深的逻辑:当每一个玩家都成为Steam网络的一部分时,他们就不再只是用户。他们是这个网络的基础设施。
P2P分发大大降低了Valve的服务器成本,但更重要的是,它让Steam的客户端程序有了一个安装到玩家电脑上的理由。这个理由不是“我们要控制你的游戏”,而是“你需要帮助我们来帮助其他玩家”。这是一个精巧的道德设计。玩家接受Steam,不是出于对DRM的认可,而是出于对补丁便利性的需求。而一旦他们安装了Steam,他们就已经进入了平台。工程师们在这个夏天的工作节奏是Valve式的——没有截止日期,但每个人都清楚问题的紧迫性。
库克的小组在办公室里搭了一个小型服务器集群,几台淘汰的惠普工作站堆在一起,跑着Linux系统,模拟不同网络条件下的补丁分发效率。他们测试了各种P2P传输策略:优先从同一网段的节点下载、限制上传带宽以避免影响玩家的正常游戏、设计断点续传机制以应对不稳定的网络连接。这些技术决策在当时看起来只是工程优化,但每一条都在为未来的平台基础设施打下桩基。
另一个小组在Steam的DRM模块上工作。这个模块的核心功能是验证CD-Key的唯一性——当一个CD-Key被绑定到一个Steam账户后,其他账户不能再使用。但对Valve来说,这个功能有一个更精细的目标:他们需要让合法玩家几乎感觉不到DRM的存在,同时让盗版玩家无法绕过。这个目标在技术上是矛盾的。越严格的DRM越容易被察觉——频繁的在线验证、硬件指纹检测、游戏文件加密,这些措施都会增加合法玩家的等待时间和系统负担。越轻量的DRM越容易被破解。
库克的选择是,在Steam里只做最基础的CD-Key绑定,不做硬件指纹,不做文件加密。他把DRM的安全边界模糊化,让玩家感觉Steam只是一个更新工具,而不是一个防盗版系统。这个选择在2002年看起来是务实的妥协,但它为Steam赢得了最关键的东西——玩家的接受度。
2002年秋天,Valve内部开始讨论Steam的商业模式。这个讨论的起点是库克的账户系统。当每一个玩家都有一个唯一的Steam账户时,这个账户就可以绑定购买记录。当购买记录可以被绑定时,Steam就可以直接向玩家销售游戏。但销售游戏需要分成协议。
2002年10月,纽维尔召集了一次商业团队会议。与会者包括哈灵顿、Valve的业务发展总监杰森·霍尔特曼,以及公司法律顾问卡尔·奎肯布什。会议的主题是:如果Steam上销售第三方游戏,Valve应该抽取多少分成?霍尔特曼在会议上提出了一个数字:30%。这个数字不是凭空来的。
零售渠道的分销成本大约是50%到60%,开发商最终能拿到的是零售价的30%左右。如果Steam能把比例反过来——开发商拿70%,Valve拿30%——那么对于开发商来说,数字分发的利润率将远高于零售。但问题是,30%凭什么?在会议上,霍尔特曼列出了三个理由。第一,Steam提供免费的分发基础设施——服务器带宽、支付处理、用户账户管理。第二,Steam提供反盗版保护——DRM可以让盗版率大幅下降,这对开发商来说意味着更多的销售额。第三,Steam提供用户入口——每一个安装了Steam的玩家都是潜在的购买者。这三个理由在逻辑上是成立的,但前提是Steam必须拥有足够多的用户。如果用户基数不够大,30%就是一张空头支票。如果用户基数够大,30%就成了一个收租的起点。纽维尔在会议结束时说了一句话:我们先把用户做起来。这句话的意思很明确:2002年的Steam不需要讨论分成比例,因为它还没有用户。
但它也暗示了一个战略顺序——先建入口,后定规则。入口建起来之后,规则由入口的拥有者制定。2003年春天,Steam的第一个公测版本上线。这个版本的功能非常简单:一个深灰色的客户端窗口,一个游戏列表,一个更新按钮。没有商店。没有好友列表。没有社区功能。它看起来就像一个普通的补丁工具,和后来人们熟悉的Steam没有半点相似之处。但在这个简陋的界面背后,账户系统已经在运行了。每一个下载Steam的玩家都被要求注册一个账户,绑定一个邮箱地址,输入CD-Key。这个CD-Key一旦被绑定,就不能再被其他账户使用。这解决了盗版问题。它也解决了渠道问题。它同时创造了一个新的问题:Valve现在可以决定谁能玩《半条命》。这个权力在2003年春天还没有被使用。但它已经存在了。嵌入在代码里,存储在数据库中,等待一个被激活的时刻。2003年夏天,Valve开始向玩家推送Steam客户端。
2003年8月的西雅图,柯克兰办公室里没有人休假。库克的小组把旧的模拟脚本改成了一个更残酷的版本:在实验室里用六十台机器模拟三十万次同时登录请求,所有节点在同一个小时发起补丁下载,网络带宽被压到当时Valve服务器出口上限的三倍。结果显示,如果只靠中心服务器,完成率会在头十分钟跌到百分之三十以下;而启用P2P后,完成率回到九十七。库克把结果投影在会议室幕布上,没有说话,只是在第三页数据图旁边画了一个圈。圈里是一行手写小字:“客户端越多,分发越快。”这个结论在工程上是好事,但被留在技术文档里,没有进入任何商业演示。工程师们继续测试断点续传和节点优先级。有人提议,如果玩家离线后再上线,应该允许他们从最近的节点继续下载。这个提议被记入排期表,归类为“用户体验改进”。他们仍然把玩家叫做“客户端”。
8月底,霍尔特曼把一年前那份写着“DRAFT”的协议草案从抽屉里翻出来,放在纽维尔办公室的茶几上。草案里有一条铅笔写的分成条款:“Valve就通过Steam平台销售第三方游戏所得净收入,收取百分之三十作为服务费。”霍尔特曼指着“Steam平台”四个字说,我们当时还不该这样写。纽维尔没抬头。他说,现在就合适了。霍尔特曼摇头:公测还没结束,零售渠道还在,我们得先把1.6的强制升级完全铺开。两人沉默了一会儿。霍尔特曼提起2002年GDC上那位维旺迪环球游戏发行部门的中年高管,在电梯口说过的那句话:“这不比补丁大多少。”他说,当时所有人都在嘲笑,只有你现在坐在这里。纽维尔说,我没有坐在那里等嘲笑结束。他站起来走到窗边,补了一句:他们嘲笑的是补丁,我们做的是入口。然后转身看向霍尔特曼:等他们发现的时候,我们已经装进玩家电脑里了。这段对话没有被记录下来,但它准确地标出了Valve内部对Steam认知的偏移:从“工具”到“入口”,并不需要多少时间。
9月的第一周,公测客户端更新到第三个候选版本。界面仍然简陋,甚至比很多内部工具还粗糙,但它有了一种新的稳定性。测试组把客户端发给玩家论坛上一些活跃用户,要求他们卸载旧版重装。有人截图发帖:“这软件的更新按钮比游戏本身还大。”另一个回复说:“但它真的能把1.6的更新从四小时变成四十分钟。”第三个回复说:“我宁愿它丑一点,只要我能和室友同时进服务器。”当服务器日志显示多台机器从同一个家庭宽带IP地址同时登录不同账户时,库克在日志旁边写了备注:“共享连接下的节点识别问题。”这个备注后来成了一项优化任务的起点。但当时,他和其他人一样,只看到技术问题。9月11日晚上八点,霍尔特曼把官网公告发给纽维尔审核。初稿里的“Steam是Valve的数字发行平台”被霍尔特曼自己划掉了,改成“帮助玩家自动更新和验证的免费工具”。纽维尔看了一遍,只加了一句“安装需拥有《反恐精英》或《半条命》”。他没有把“平台”加回去。
上线前两小时,办公室的灯还亮着。库克最后一次检查服务器负载,确认所有节点都在响应。运营组在监控屏前铺开一张纸,上面列出可能出现的故障情形:登录风暴、CD-Key验证超时、支付模块空白。支付模块其实还不存在,但他们在纸的右下角写了一句“不适用”。纽维尔从办公室出来,走到公共区,看了一眼那张纸,什么也没说。他回到电脑前打开邮件草稿。屏幕上只有一个短句。鼠标指针停在发送键上。窗外天还没亮。
推送的方式是捆绑——《反恐精英》的1.6版本更新强制要求玩家安装Steam。如果不安装,就无法联机。这意味着三百万CS玩家必须在升级游戏和放弃游戏之间做出选择。绝大多数玩家选择了升级。这不是一个自愿的选择。论坛上出现了大量抱怨帖,玩家们质疑为什么一个补丁工具需要常驻后台,为什么需要注册账户,为什么CD-Key从此被锁定。但这些抱怨没有形成有组织的抵抗,因为CS 1.6带来了足够多的新内容——新武器、新地图、新的反作弊系统。纽维尔的策略是精准的:不强推Steam本身,而是把Steam捆绑在一个玩家无法拒绝的更新上。玩家接受Steam,不是因为认可它的价值,而是因为不接受就无法继续玩CS。这是平台逻辑的第一次完整展示:控制入口的人,不需要说服用户。只需要让入口成为唯一的选择。2003年9月12日,Steam正式上线。
官网发布了一条简短的公告,措辞和一年前的新闻稿一脉相承:Steam是帮助玩家自动更新游戏补丁的工具,同时提供反盗版验证功能。公告下面列出了Steam客户端的功能说明,几条干巴巴的条款,和一个下载链接。没有发布会。没有媒体通稿。没有行业分析。纽维尔在当天凌晨两点十四分给核心团队发了一封内部邮件。邮件内容是:这是第一步。他没有说第一步通向哪里。收件人列表里是哈灵顿、库克、霍尔特曼和奎肯布什。邮件的字符数不超过十个字。文件留在Valve的内部服务器上,和几千封工作邮件混在一起,没有归档,没有标记,没有人在当时意识到它将在未来被反复引用。补丁工具已经上线。入口已经打开。游戏变成了服务,而服务需要验证,验证需要账户,账户绑定购买,购买产生分成,分成建立收租结构。这个链条的每一个环节都在2003年9月12日之前被设计、编码、测试、部署。但部署者自己,在那个凌晨,也许还没有完全看到这个链条的终点。他们看到的是一条出路。一个解决了补丁分发和盗版验证的技术方案。一个让《半条命2》的发行不再依赖零售渠道的数字通路。一个被渠道失效逼出来的自救方案。但出路的尽头,引力已经在形成。