第 3 章

引擎盖下的俱乐部

凌晨三点十七分,一个叫大卫·基尔希的程序员坐在得克萨斯州一间公寓的电脑前。IRC频道里他的昵称是Zoid。屏幕上不是游戏画面,是一行行代码——不是十六进制,不是机器码,而是一种长得像C的语言。关键字他都认识,结构也熟悉。但这些代码控制的东西不一样。它们控制的是重力、摩擦力、火箭的飞行速度、角色的跳跃高度。他改了一个数字。从800改成1600。编译。重启服务器。进入游戏。按下跳跃键。角色飞了起来。飞过了整张地图,飞过了所有他曾经需要绕路的障碍物,飞到了他从未到达过的屋顶上。他落下来的时候,嘴角是咧开的。就在涂鸦者们还在与十六进制代码搏斗的同时,另一群人已经拿到了更顺手的工具。

这不是1995年。1995年那些用Doom Construction Kit画地图的人,他们拖动墙壁,放置怪物,调整光照,做出来的关卡也是新东西。但他们做的是装修。一栋已经盖好的房子,你可以改墙纸,挪家具,敲掉一堵非承重墙。但房子的结构——哪根柱子撑屋顶,哪根梁承重,电线怎么走——这些东西你碰不了。房子的规则是建筑设计师定的。Doom的规则是id Software定的。

QuakeC不一样。QuakeC给你的是建筑图纸。不是让你看,是让你改。你可以把承重柱挪开,把屋顶掀掉,加一层楼,把楼梯改成滑梯,在房子里装电梯。你不再是装修工,你是建筑师。你不是在改内容,你是在改规则。这就是1996年划下的那条线。在此之前,玩家是游戏世界的装修工。在此之后,他们可以成为游戏规则的立法者。

这件事不是偶然发生的。id Software在1996年6月22日发布《雷神之锤》,同时放出了一个叫QuakeC的编程语言和编译器。这个决定在当时看来,只是这家公司一贯的技术极客做派。他们从《德军总部3D》开始就鼓励玩家修改游戏文件,到了Doom时代,干脆把游戏数据和引擎分离,让修改变得更容易。现在他们更进一步——把游戏逻辑的源代码开放给所有人。注意这个词:不是“泄露”,不是“破解”,是“公开”。id Software主动做了这件事。

约翰·卡马克,id的首席程序员,在发布说明里写了一段话:QuakeC允许你创建新的武器、新的怪物、新的游戏模式。我们期待看到你们会做出什么。语气很平静,像是在说一件理所当然的事。但如果你了解1996年游戏行业的常态,你会知道这件事有多不寻常。那一年,游戏公司对待代码的态度就像可口可乐对待配方。代码是商业机密,是竞争优势,是要锁在保险柜里的东西。任天堂的卡带里装着层层加密的锁闭芯片,世嘉的开发者文档要签保密协议才能拿到。整个行业的逻辑是:游戏是产品,玩家是消费者,代码是生产工具。消费者不应该看到生产工具,就像喝可乐的人不应该知道配方。

id Software不这么想。这不是因为他们不把代码当回事。恰恰相反,卡马克可能是那个时代最认真的程序员之一。他对代码质量有近乎偏执的要求,Quake的引擎是他花了两年时间重写的,从渲染管线到网络架构,每一行都经过精心设计。但他同时也相信另一件事:代码的价值不在于保密,而在于被使用。一个被人阅读、修改、重新编译的代码,比一个锁在保险柜里的代码更有生命力。

这种信念有它的根。id Software的人自己就是从黑客文化里长出来的。卡马克十几岁的时候因为闯入学校电脑系统被送进少年管教所,约翰·罗梅洛在加州的小镇上靠帮人修电脑赚零花钱。他们那一代人是在Apple II和Commodore 64上学会编程的,那些机器的设计哲学就是把用户当创造者——开机就是一个BASIC解释器,你第一眼看到的是光标,不是菜单。你被期待写程序,而不仅仅是运行程序。所以当卡马克写出QuakeC的时候,他做的不仅仅是提供一个技术接口。他做的是把黑客文化的一种核心信念——工具应该可以被使用者修改——嵌入了一个商业游戏产品。这在1996年是一个激进的姿态,激进到大多数同行都没看懂。他们以为id Software只是在讨好核心玩家,或者更天真一点,以为这只是一种营销策略——让玩家免费帮你做内容,你坐享其成。

但如果你真的去读卡马克在.plan文件里写的那些东西,你会看到一种完全不同的逻辑。他不是在谈商业模式,他是在谈认识论。他相信好的软件应该让用户看到它是如何工作的,因为只有看到内部结构,用户才能真正理解这个工具,才能真正发挥它的潜力。这是一种工程师的信念,不是商人的信念。而这个信念一旦被付诸实践,产生的效果远超任何人的预期。

QuakeC放出来之后,事情发展得很快。不是那种一个天才独自做出杰作的叙事。是那种一群人突然发现彼此存在的叙事。在Quake发布之前,修改游戏的人大多是孤独的。Doom的关卡作者们虽然在BBS上分享作品,但每个人的创作过程是独立的。你下载别人的WAD文件,玩一遍,觉得好,然后自己打开编辑器做一个。你们之间没有协作,没有分工,没有共同的技术语言。你们只是碰巧在用同一种工具。

QuakeC改变了这种状态。因为QuakeC是一门编程语言。编程语言意味着你需要学习语法、掌握调试技巧、理解编译错误。这些东西一个人琢磨当然可以,但效率极低。你需要问问题,需要看别人的代码,需要知道某个函数到底是干什么的。所以在QuakeC放出的几个星期内,互联网上出现了专门讨论这门语言的邮件列表、IRC频道和FTP站点。在这些地方,发生了一件很重要的事。一群分散在世界各地的人——美国中西部的计算机系学生、芬兰的Linux爱好者、澳大利亚的网络管理员、英国的退学少年——开始用一种共同的语言交流。这种语言不是英语,虽然他们用英语打字。这种语言是QuakeC的语法,是函数调用的约定,是变量命名的习惯,是对什么算优雅代码的共同判断。

他们开始形成一个社区。不是那种“我们都喜欢同一款游戏”的粉丝社区。是那种“我们都在做同一件事”的实践者社区。这两种社区的区别,就像喜欢看篮球的人和一起打篮球的人的区别。前者可以争论谁是最佳球员,后者需要知道怎么传球、怎么跑位、怎么在关键时刻把球交给手感最好的人。后者需要一套共享的技能、一套共享的规范、一套判断谁打得更好的标准。

QuakeC社区在1996年下半年迅速建立了这三样东西。共享的技能是QuakeC本身。你不需要是计算机专业毕业的,但你需要能读懂代码、能写出能编译通过的模组。这个门槛筛掉了一大批人,但也留下来一批最投入的人。共享的规范是关于代码的——变量怎么命名,函数怎么组织,注释怎么写,模组的文档怎么维护。这些规范不是谁制定的,而是在邮件列表的讨论中逐渐形成的。有人发了一段代码,别人看了,指出某个地方写得不好,然后给出建议。被批评的人可能会争辩,但最终,好的做法会被大多数人接受,变成默认规则。

而判断谁打得更好的标准——也就是声誉系统——也在这个过程中自然生长出来。在QuakeC社区里,声誉不是靠粉丝数、点赞量或者销售数字来衡量的。声誉是靠代码质量、创意和贡献意愿来衡量的。你写了一个改变重力的模组,代码干净,运行稳定,别人下载了觉得好玩,你的名字就会被记住。你在邮件列表里耐心回答新手的问题,你就会被看作值得尊敬的人。你把别人模组里的bug修好了,把修改后的代码发回去,你就会被当作可靠的合作者。

这套声誉系统运行得非常有效,因为它建立在同行评议的基础上。评价你的人不是外行,不是随便什么玩家,而是和你一样在写代码的人。他们能看懂你的代码,能判断你的设计选择是否合理,能识别出哪些是真正的创新、哪些只是小修小补。在这种环境里,你没法靠营销手段获得声誉。你只能靠做出好东西。

这种社区伦理有一个很具体的表现:代码共享是默认规则。在QuakeC社区,当你发布一个模组的时候,你通常会把源代码一起发布。不是因为你被要求这么做,而是因为这是正常做法。别人可以看你的代码,学习你的技巧,在你的基础上做改进。如果你不发布源代码,大家会问你为什么。如果你说这是我的成果我不想让别人抄,大家会觉得你不太对劲。不是觉得你违法了,是觉得你不懂规矩——这里的规矩是,我们都在互相学习,你从别人的代码里学到的,也应该让别人从你的代码里学到。这不是法律义务,这是社会规范。违反它不会被告上法庭,但会被社区冷落。你的模组可能还是有人下载,但没人会在IRC频道里提到你的名字,没人会邀请你加入他们的项目,没人会在讨论技术问题的时候引用你的做法。在声誉经济里,被无视比被批评更致命。

这种伦理的源头可以追溯到更早的黑客文化——MIT的人工智能实验室、伯克利的BSD团队、自由软件基金会的GNU项目。在这些地方,分享源代码是一种道德实践,是信息应当自由流动这一信念的具体体现。QuakeC社区没有发明这种伦理,但它是第一个在商业游戏的框架内大规模实践这种伦理的群体。这很重要,因为商业游戏的框架和黑客文化的框架是有冲突的。商业游戏的逻辑是所有权:代码是公司的财产,修改权是公司授予的许可,玩家是授权用户。黑客文化的逻辑是使用权:代码是工具,工具应该可以被使用者理解和修改,这是使用者的自然权利。这两种逻辑在1996年的QuakeC社区里是和平共处的——id Software主动开放了代码,所以没有冲突。但这种和平是脆弱的,因为它依赖一家公司的善意,而不是一种制度安排。当未来出现另一家公司,它不愿意开放代码,或者开放了但附加了限制条件,或者把玩家创作的内容据为己有的时候,这种和平就会破裂。QuakeC社区在1996年建立的伦理——代码共享、声誉驱动、同行评议——会在那个时刻与商业平台的逻辑正面碰撞。这是后话。

但在1996年,没有人想这些。他们在想的是更具体的问题:我能让这个引擎做什么?答案五花八门。有人写了一个模组,把所有武器的射速提高了十倍,火箭筒变成了机关枪,整个游戏变成了一场弹幕地狱。有人写了一个模组,把重力降到月球水平,所有人都在慢动作跳跃,对战变成了一种奇怪的芭蕾。有人写了一个模组,加入了钩爪——你可以发射一条绳索抓住墙壁,然后把自己拉过去。这个模组后来启发了无数游戏,包括几年后大火的《雷神之锤3》的一个官方模式。但在1996年,它只是一个叫Offhand Hook的模组,作者是一个名字已经不可考的程序员,他可能只是想试试如果蜘蛛侠进了Quake会怎样。

这些模组大部分是粗糙的。代码有bug,平衡性一团糟,玩上十分钟就可能崩溃。但它们是活的。每一个模组都是一个实验,一个假说,一个“如果这样会怎样”的问题。而QuakeC让这些问题可以被快速验证。你有一个想法,花一个晚上写代码,编译,架一个服务器,叫上IRC频道里的几个人进来测试。第二天你就能知道这个想法行不行。这种速度在1996年之前是不可想象的。在Doom时代,如果你想让火箭跳得更高,你需要用十六进制编辑器找到存储跳跃高度的那个字节,猜它的含义,改一个值,进游戏测试,发现改错了,崩溃,重新来。这个过程可能需要几天。现在只需要几分钟。

速度的改变带来了创作方式的改变。当修改的成本足够低,人们就会开始尝试更大胆的想法。不是“我确定这能行”,而是“我不知道这能不能行,但试试看”。这种心态是创新的土壤。

在这些尝试中,有一些东西开始浮现出来。不是单个模组,而是一类模组的共同特征。有人在试图改变的不只是武器的属性,而是游戏的根本目标。不是怎样杀人更爽,而是杀人的目的是什么。传统的Quake是死亡竞赛:你进入一个地图,见到人就杀,被杀之后重生,继续杀。目标是杀敌数。胜负条件是时间到了看谁的杀敌数多。这个规则是id Software定的,所有官方服务器都一样。但有人开始问:如果胜负条件不是杀敌数呢?

一个叫夺旗的模组出现了。两队人,各有一个基地,基地里有一面旗。你的目标是冲进对方基地,抢走旗,带回自己的基地。同时你要阻止对方抢走你的旗。杀敌不是目的,是手段。你可以杀很多人但输了比赛,也可以一个人都不杀但赢了比赛。这不是id Software发明的。这是玩家发明的。他们用QuakeC重写了游戏的目标系统,改变了“胜利”的定义。他们不是在游戏内部做选择,而是在游戏之上建立了一层新的规则。这层新规则,在技术上,只是一个服务器端模组。但在文化上,它是一个分水岭。它意味着玩家不再只是游戏的参与者,他们是游戏类型的发明者。夺旗模式后来成为几乎所有多人射击游戏的标配模式,但它的源头不是某个游戏公司的设计部门,而是一群玩家在IRC频道里的讨论和几周的通宵编程。

类似的事情还发生在另一个模组上。一个叫Team Fortress的模组把玩家分成不同的职业——侦察兵移动快但火力弱,重装兵火力猛但移动慢,医疗兵可以治疗队友,工程师可以建造炮塔。每个职业有自己的武器、自己的属性、自己的战术定位。你不再是一个通用的战士,你是一个团队里的一颗螺丝钉。胜负不再取决于个人技术,而取决于团队配合。这个模组的作者是一个澳大利亚的程序员团队,他们叫自己TF Software。他们做Team Fortress不是因为有人给他们钱,不是因为市场调研显示玩家想要职业系统,而是因为他们觉得如果Quake变成团队游戏会怎样。他们写了代码,架了服务器,然后发现很多人喜欢这个想法。他们继续迭代,加入新的职业,调整平衡性,写文档,维护社区。

他们做这些事情的动力是什么?不是钱。Team Fortress是免费的。TF Software没有从模组里赚一分钱。他们也没有把代码藏着掖着,而是公开发布,让其他人可以架设Team Fortress服务器。他们的动力是声誉。在QuakeC社区里,做出Team Fortress这样的模组,意味着你的名字会被成千上万的人知道,意味着你会在邮件列表里被尊敬,意味着当你在IRC频道里说话的时候,别人会认真听。这种声誉是实实在在的——不是可以兑换成金钱的声誉,但是一种社会资本,一种身份认同。

你可能会问,这有什么用?声誉又不能当饭吃。但如果你真的去读那个时期QuakeC社区的邮件列表存档,你会看到一种完全不同的价值观。这些人不是在牺牲经济利益换取声誉,他们根本就没把经济利益放在考虑的范围内。他们谈论的是这个想法很酷、这段代码很优雅、这个设计解决了之前的问题。他们的满足感来自于创造本身,来自于看到自己的想法变成可运行的代码,来自于看到别人在自己的模组里玩得开心。这是一种业余者的伦理。不是“业余”作为“不专业”的贬义,而是“业余”作为“为爱而做”的本义。业余者做一件事,不是因为这是他的工作,而是因为他热爱这件事。他的回报是内在的——创造的快乐、学习的满足、社群的认可。

这种业余者伦理在QuakeC社区里是主流。但这不意味着社区里没有等级。恰恰相反,正因为没有金钱这个通用的衡量标准,社区发展出了一套更微妙的等级制度。顶层是那些写出了开创性模组的人。Team Fortress的作者,夺旗模式的作者,钩爪模组的作者。这些人的名字在社区里如雷贯耳,他们的代码被反复阅读和模仿,他们的设计选择被当作标准答案。中间层是那些积极贡献的人。他们可能没有写出轰动性的模组,但他们在邮件列表里回答问题,在别人的项目里帮忙修bug,维护着FTP站点的文件归档。他们是社区的结缔组织,没有他们,顶层的人无法独自运转整个生态。底层是新手。他们刚学会QuakeC,发出来的第一个模组可能到处都是bug,在邮件列表里问的问题可能很初级。社区对他们的态度是复杂的——有人耐心指导,有人不耐烦地让他们去读文档,有人直接忽略。但总体而言,只要他们表现出学习的意愿,社区是会接纳他们的。

这个等级制度不是固定的。一个新手可以通过写出好模组晋升到中层甚至顶层。一个顶层的作者如果长期不活跃,名字也会被慢慢淡忘。等级是流动的,升降的依据是贡献,不是资历。这种结构在1996年的QuakeC社区里运转得很好。但它也埋下了一个问题:当这个社区变得足够大,当模组的复杂度和制作成本变得足够高,当商业公司开始介入的时候,这种基于业余者伦理的等级制度还能维持吗?这个问题在1996年还不会爆发。但它已经潜伏在社区的基因里了。

1996年下半年,在QuakeC社区如火如荼的时候,距离id Software总部不到两百英里的地方,另一件事正在发生。两个前微软员工,加布·纽维尔和麦克·哈灵顿,在1996年创立了一家叫Valve的软件公司。他们在1996年下半年取得了雷神之锤引擎的使用许可——在id Software的朋友迈克尔·亚伯拉什的帮助下——用来开发一款叫《半条命》的游戏。最初的计划是在1997年晚些时候发布,但最终日期被确定为1998年10月31日。

在1996年,没有人知道Valve会变成什么。没有人知道《半条命》会成为模组文化的下一个引爆点。没有人知道Valve后来会收购TF Software,把Team Fortress变成一款独立游戏——Team Fortress Classic游戏模式最初是一个由TF公司为《雷神之锤》制作的模式,它的半衰期版本于1999年发布。没有人知道Valve会在2003年发布Steam——Steam客户端的第一个测试版本于2003年1月《反恐精英1.6》公测时发布,当时作为必须安装和使用的组件。没有人知道2004年11月《半衰期2》会成为首款在Steam数字分发的游戏,零售版也需要安装Steam客户端才能运行。没有人知道到了2008年,育碧、THQ、世嘉、Take-Two Interactive、动视、艺电这些巨头都会与这个平台合作。在1996年,Valve只是一家小公司,十几个程序员和设计师挤在一间办公室里,试图做出一款好游戏。

他们选择Quake引擎,不是因为预见了模组经济的未来,而是因为Quake引擎是当时最好的3D引擎之一,而且id Software愿意授权。但Valve的创始人有一个特殊的背景:他们来自微软。他们见过平台是怎么建立的,见过操作系统如何通过开放API吸引开发者,见过第三方应用如何让一个平台变得不可或缺。这些经验在他们做游戏公司的时候,会以一种id Software从未采用过的方式发挥作用。id Software是产品公司。他们做游戏,卖游戏,赚钱,然后做下一款游戏。他们开放代码是因为黑客文化的信念,不是因为商业策略。他们慷慨,但他们的慷慨没有系统化。Valve不一样。Valve后来做的事情——把模组作者的作品变成独立游戏,把玩家创作的内容集成到商店里,把用户生成内容变成平台经济的引擎——这些是系统化的。它们是商业模式,不只是信念。

但在1996年,这个分叉还没有出现。1996年的QuakeC社区和1996年的Valve,是两条还没有交汇的河流。一条是业余者的俱乐部,靠声誉和分享伦理运转;另一条是商业公司的雏形,靠资本和雇佣关系运转。它们暂时相安无事,因为它们还没有直接的利害关系。但碰撞是迟早的事。因为QuakeC社区正在生产的东西——新的游戏模式、新的设计范式、新的玩家需求——是有价值的。不是“文化价值”那种抽象的东西,是可以变成钱的价值。Team Fortress证明了职业射击游戏有巨大的市场,夺旗模式证明了目标导向的多人对战比纯粹的死斗更有黏性。这些发现不是市场调研公司做出来的,是玩家自己做出来的。它们躺在那里,等着被商业化。

谁来商业化?怎么商业化?商业化之后,原创作者能得到什么?这些问题在1996年没有人能回答。但QuakeC社区在无意中已经为这些问题的回答准备好了材料——一个拥有共同技术语言、共享价值观和内部等级的生产者共同体。这个共同体在1996年还很小。QuakeC的邮件列表可能只有几百个活跃用户,IRC频道的同时在线人数可能不超过一百。但这些人分布在世界各地,他们在自己的本地环境里是异类——那个在芬兰赫尔辛基大学机房熬夜写模组的学生,那个在澳大利亚珀斯的车库里调试Team Fortress代码的程序员,那个在得克萨斯州公寓里让火箭跳高度翻倍的Zoid。他们在物理世界是孤独的,但在互联网上,他们找到了同类。

他们不是在“加入一个社区”,他们是在“发现一个已经存在的部落”。这个部落有自己的语言——QuakeC的语法和约定;有自己的仪式——发布模组、提交补丁、在邮件列表里争论设计哲学;有自己的英雄——那些写出开创性模组的人;有自己的道德准则——代码共享是好的,闭源是坏的,帮助新手是美德,剽窃是可耻的。这是一个完整的文化场域。它的规则不是写在法律条文里的,而是刻在参与者的日常实践里的。一个新来的人,如果他想被这个部落接纳,他需要学习这些规则。他不是通过阅读一份社区行为准则来学习的——1996年还没有这种东西。他是通过观察、模仿、犯错、被纠正来学习的。他发布第一个模组的时候,如果附上了源代码,会有人给他发邮件表示感谢。如果他没附源代码,会有人问他能不能发一下源码。这些细微的互动在教他什么是对的、什么是错的。

这种社会化过程非常有效,因为它不是强制性的。没有人能禁止你发布闭源模组,没有人能把你踢出互联网。但如果你不遵守规则,你会被无视。你的模组可能有人下载,但没有人会认真对待你。你不会被邀请参与合作项目,不会有人在讨论技术问题时引用你的做法,你的名字不会出现在任何人的致谢名单里。对于真正在乎这个社区的人来说,这种惩罚比任何正式的惩罚都更难以忍受。因为他们在这里投入了身份认同。他们不仅仅是Quake的玩家,他们是QuakeC的作者。这个身份是他们自己选择的,是他们通过无数个小时的学习和创作挣来的。被这个身份所属的社区排斥,意味着失去了一部分自我。

这就是为什么QuakeC社区能在没有正式治理结构的情况下运转良好。治理不是靠规则和惩罚,而是靠身份和声誉。这是一种比法律更古老、也更有效的社会控制机制。它存在于每一个真正的共同体里——学术圈、开源社区、街头篮球队、即兴爵士乐队。QuakeC社区只是这种古老机制在数字时代的一个新变体。

但这个变体有一个特殊性:它的全部互动都发生在网上。这意味着地理边界消失了。一个芬兰学生和一个澳大利亚程序员可以像在同一间屋子里一样协作。也意味着互动是有记录的。邮件列表的存档可以追溯到每一个技术决策的讨论过程,IRC的日志可以还原每一次争吵的来龙去脉。这种透明性在物理世界的共同体里是罕见的。在物理世界,很多事情发生在私下交谈里,发生在没有记录的场合。但在QuakeC社区,几乎所有的决策过程都是公开的,可以被后来者追溯和学习。这种透明性加速了知识的传播,也加速了规范的建立。当所有的讨论都公开可见时,什么是好的做法这个问题可以通过引用过去的讨论来回答。新来的人可以搜索邮件列表的存档,看到几个月前关于某个设计模式的争论,理解为什么社区选择了方案A而不是方案B。这种历史意识让社区的规范有了深度,不只是“我们现在这样做”,而是“我们经过争论之后选择了这样做”。

到1996年底,QuakeC社区已经形成了这种历史意识。他们知道自己不是第一批修改游戏的人——Doom的关卡作者们是前辈。但他们也知道自己做的是不同的事情。Doom的关卡作者改变的是游戏的内容,他们改变的是游戏的规则。这种自我意识在社区的讨论中反复出现,形成了一种集体叙事:我们是规则的制定者,不只是内容的创作者。

这个叙事是准确的,但它也埋下了一个张力。当你认为自己是一个规则的制定者时,你会对规则的所有权产生一种期待。你会觉得,你创造的规则——夺旗模式、职业系统、钩爪机制——是你的创造,你应该对这些创造有一定的权利。不是法律意义上的版权,而是某种道德意义上的归属权。如果有人把你的规则拿去用,至少应该提一下你的名字。如果有人把你的规则拿去卖钱,你应该有资格分一杯羹。这种期待在1996年是模糊的,没有被明确表达。因为当时没有人拿这些模组去卖钱。Team Fortress是免费的,夺旗模式是免费的,所有模组都是免费的。商业化的压力不存在,所以所有权的问题没有被触发。但这个问题是存在的,它只是睡着了。

当它醒来的时候——当Valve决定把Team Fortress做成独立游戏,当模组作者发现自己的创造被别人商业化,当用户生成内容从一种爱好变成一种经济——QuakeC社区在1996年建立的那套伦理就会受到考验。代码共享是默认规则,但如果共享的代码被别人拿去赚了几百万美元呢?声誉是主要货币,但如果声誉不能兑换成任何物质回报呢?同行评议是质量保障,但如果市场成功和同行评价不一致呢?这些问题在1996年没有答案。但它们已经潜伏在IRC频道的每一次讨论里,潜伏在每一行共享的代码里,潜伏在每一个凌晨三点盯着屏幕的程序员的眼睛里。

那个让火箭跳高度翻倍的人,那个写钩爪模组的人,那个在邮件列表里耐心回答新手问题的人——他们不知道自己正在参与建造一个后来会变成数十亿美元经济体的地基。他们只是在做一件他们认为理所当然的事:看到一个工具,学会使用它,改造它,然后把自己改造的结果分享出去。这件理所当然的事,在1996年,有一个名字。它叫QuakeC社区。它是一个俱乐部,引擎盖下的俱乐部。入会资格不是钱,不是学历,不是国籍,而是你能不能写出一段让游戏变得不一样的代码。

这个俱乐部的大门在1996年是敞开的。走进去的人,发现里面有很多房间,每个房间都亮着灯,每盏灯下都坐着一个人,盯着屏幕,手指在键盘上敲打。他们偶尔抬起头,在IRC频道里打一行字:嘿,你们看这个。然后其他人会抬起头,看过去。如果那东西够酷,他们会说牛逼。如果不够酷,他们会说你可以写得更好。如果那东西有bug,他们会说我帮你修了。

这就是1996年的声音。不是钱的声音,不是平台的声音,不是法律纠纷的声音。是键盘的敲击声,是编译器的运转声,是服务器启动时硬盘的转动声。是一群人在深夜,在世界的不同角落,同时按下回车键的声音。他们按下回车键之后,屏幕上的世界改变了。重力变了,武器变了,胜利的条件变了。他们自己可能没有意识到,但他们按下回车键的那个动作,也改变了屏幕之外的世界。他们改变了一个行业的规则,改变了一家公司的命运,改变了几百万人的娱乐方式,改变了对“谁是创造者”这个问题的回答。

但在1996年,他们只是在按回车键。然后他们进入游戏,测试自己的模组。如果火箭跳的高度正好,他们会笑。如果游戏崩溃了,他们会骂一句,然后打开代码,开始找bug。这个循环——写代码、编译、测试、修改、再测试——一旦启动,就不会停下来。因为它满足了一种深层的需求。不是赚钱的需求,不是成名的需求,而是理解一个系统如何运作、然后让它按照你的意愿运作的需求。这种需求在1996年之前被锁在专业开发者的大门后面。1996年,id Software把门打开了。

门打开之后,涌进来的人潮,把修改游戏变成了一种公共技能,把创造规则变成了一种集体实践,把分享代码变成了一种道德准则。他们接下来要面对的,就不再是“怎么改”的问题了。他们要面对的是谁拥有这些修改、谁有权决定什么可以商业化、创造者的劳动如何被承认和回报。1996年的QuakeC社区没有能力回答这些问题,但他们已经站在了这些问题的门口。门里面,是整个UGC经济未来近三十年的争吵、妥协、创新和崩溃。而他们手里,还握着那行让火箭跳高度翻倍的代码。