第 1 章

源代码里的涂鸦者

房门关上。不是游戏里的门——是宿舍那扇薄木板门,下午两点,外面走廊有人在打乒乓球,球弹在墙上啪嗒啪嗒响。屏幕上是《毁灭战士》,刚刚打过第三关,火星基地的走廊还在冒烟,尸体倒在地上,像素血溅了一墙。按说这时候应该存盘、喝水、活动活动手腕。但这个人没存盘。他退出游戏,打开了一个叫十六进制编辑器的东西。屏幕上跳出来的东西,今天的玩家看了会以为是乱码。密密麻麻的数字和字母,一行一行,像天书。但他不是在读天书。他在找东西。他翻到某个位置,停下来,改了一个数字。保存。重新打开游戏。霰弹枪开火。打出来的不是子弹,是火箭炮。整个房间被炸得晃起来,音箱里轰的一声,他自己吓了一跳,然后笑出声。不是那种“我通关了”的笑,是另一种笑——你小时候把闹钟拆开、把弹簧拽出来、把齿轮装反了、闹钟不走了但你觉得自己赢了的那种笑。这件事发生在1994年。干这件事的人叫什么名字,我们不知道。

他可能叫本,可能叫杰森,可能在威斯康星某所大学的宿舍里,也可能在德国某间地下室的电脑前。没人记录他的名字。他自己也没觉得这件事值得记录。他不是黑客,不是程序员,不是创业者。他只是买了一份《毁灭战士》,打通了,然后觉得——这游戏还不够我的。他要把别人的东西变成自己的东西。这个冲动,我们每个人身上都有。你买一件白T恤,穿两天就想往上画东西。你租一间房子,第一件事是挪家具。你拿到一本空白笔记本,先翻开第一页写自己的名字。这不是创作欲,这是占有欲。你把一个现成的东西打开,动一动,改一改,留下自己的指纹,然后它才真正属于你。游戏玩家干的事,本质上就是这一件。但问题是,软件不是T恤。软件是锁着的。你花钱买一份游戏,买到的是一串编好的代码,封装在光盘或软盘里,塞进电脑,它跑起来,你只能按它规定的路线走。它给你三把枪,你不能造第四把。它给你九个关卡,你不能进第十个。它把怪物设计成火球骷髅,你不能把它换成你老板的脸。游戏是个黑箱。

你只能消费它,不能拥有它。这就是为什么那个下午在宿舍里发生的事如此重要。那个人打开十六进制编辑器,找到那行控制武器参数的代码,把霰弹枪的子弹数量从七改成二十,把单发伤害从三改成五十——他做的事,用今天的语言说,叫修改游戏文件。但在1994年,这件事没有名字。他不是在“修改游戏”。他是在撬锁。而他能撬开这把锁,是因为有人无意中给他留了一道门缝。1993年12月10日,《毁灭战士》上市。制作它的公司叫id Software,当时在得克萨斯州梅斯基特市一栋不起眼的办公楼里,团队不到十个人。领头的两个人,约翰·卡马克和约翰·罗梅洛,一个写代码,一个做设计,配合得像一个人的左右手。卡马克是个安静的天才,说话声音很低,脑子转得比嘴快十倍。罗梅洛是个精力过剩的疯子,长发,紧身裤,法拉利跑车,恨不得让全世界的玩家都跪在他设计的关卡面前。这两个人在1993年做了一个决定。

这个决定在当时看纯粹是技术性的、为了方便内部开发,没有任何商业考量,更不可能想到三十年后会因此长出几百亿美元的产业。这个决定是:把游戏引擎和游戏数据分开。什么意思?你打开《毁灭战士》,看到的是火星基地、恶魔士兵、霰弹枪、血包、门、开关、灯光。这些东西,一半是“引擎”——那套让游戏跑起来的底层程序,负责渲染画面、计算物理、处理输入输出。另一半是“数据”——具体的关卡地图、怪物属性、武器参数、贴图、音效。卡马克的架构设计把这两样东西拆开了。引擎是一个可执行文件,数据存在另一个文件里,格式叫WAD。WAD,全称是“Where‘s All the Data?”——所有数据在哪儿?就在这个文件里。这个名字起得轻描淡写,像一个程序员随手敲出来的。但它实际上是一把钥匙。因为数据和引擎分开了,玩家不需要看懂卡马克写的引擎代码——那是天书里的天书——他们只需要摸到WAD文件,就能碰到游戏的骨肉。关卡怎么摆,WAD里写着。

怪物有多少血,WAD里写着。墙壁贴什么图,WAD里写着。这些东西不是加密的。id没有给WAD上锁。不是忘了,是没必要。在他们看来,谁会去翻这些东西?玩家买游戏是为了玩,不是为了拆。他们低估了玩家。低估到什么程度呢?《毁灭战士》上市不到一周,网上就有人贴出了WAD文件的结构解析。不是官方文档——id根本没写这种东西——是一个玩家自己摸索出来的。他用十六进制编辑器一个字节一个字节地看,找到规律,画成表格,贴到Usenet新闻组上。那个帖子的语气很平淡,大意是:从某个偏移量开始是关卡数据,每个关卡由若干个“块”组成,块的结构如下。平淡得像在写实验报告。但如果你仔细读,能读出字里行间那种压不住的兴奋。就像一个人拆开收音机后盖,发现里面不是一团乱麻,而是整整齐齐的模块,每个模块上还贴着标签。这太友善了。id的架构师们为了自己开发方便,把游戏内部结构做得干净、模块化、可替换。

他们为了方便自己修改关卡,把地图数据放在独立文件里,而不是硬编码进引擎。他们为了方便美工迭代贴图,把图像资源也塞进WAD,用简单的索引号调用。这些全部是为了方便开发的设计。但每一个为了方便开发的设计,都是为了方便修改的邀请。第一个人改了贴图。这件事的技术门槛低到不可思议。WAD里的贴图是像素图,格式简单,只要你找到它的位置,用另一张同样尺寸的像素图覆盖它就行了。于是有人把游戏里那个漂浮的独眼怪物——玩家叫它“cacodemon”——的贴图换掉了。换成了什么?说法不一。最早的记录里有人换成了同事的照片,有人换成了自己养的猫,有人换成了当时另一个游戏里的角色。但最出名的一个版本,是把cacodemon换成了id Software的老板约翰·罗梅洛的脸。那颗漂浮的、吐火球的、狰狞的恶魔脑袋,变成了罗梅洛的长发、墨镜、露齿笑。你开枪打它,罗梅洛的脸炸开,血肉横飞。这个改动没有任何技术含量。它就是好玩。

id Software的人看到这些事的时候,反应是什么?不是愤怒,不是起诉,不是发律师函。是一种混合着惊讶和好笑的表情。卡马克后来在采访里说过一段话,大意是:我们看到有人改了贴图,第一反应是“这怎么做到的?”然后看了他们用的方法,发现比我们想的简单得多。我们内部讨论过要不要加密WAD文件,最后决定不加密。因为这些人买我们的游戏,他们想怎么玩就怎么玩。这段话今天读起来,你会觉得卡马克很开明、很有远见。但放在1994年的语境里,他的“开明”其实是一种无所谓。id Software当时赚的钱不靠卖贴图、不靠卖武器参数,他们靠卖引擎。卡马克的商业模式是把《毁灭战士》的引擎授权给其他公司做新游戏,至于玩家在自己电脑上怎么折腾WAD文件,跟他们的收入没关系。所以id的“开放”不是出于理念,而是出于漠不关心。你们爱改就改,关我什么事。但这种漠不关心,恰好是那道门缝不被堵上的原因。如果id当时是一个靠卖游戏内道具赚钱的公司,它一定会把WAD加密得死死的。

不是愤怒,不是起诉,不是发律师函。是一种混合着惊讶和好笑的表情。卡马克后来在采访里说过一段话,大意是:我们看到有人改了贴图,第一反应是“这怎么做到的?”然后看了他们用的方法,发现比我们想的简单得多。我们内部讨论过要不要加密WAD文件,最后决定不加密。因为这些人买我们的游戏,他们想怎么玩就怎么玩。这段话今天读起来,你会觉得卡马克很开明、很有远见。但放在1994年的语境里,他的“开明”其实是一种无所谓。id Software当时赚的钱不靠卖贴图、不靠卖武器参数,他们靠卖引擎。卡马克的商业模式是把《毁灭战士》的引擎授权给其他公司做新游戏,至于玩家在自己电脑上怎么折腾WAD文件,跟他们的收入没关系。所以id的“开放”不是出于理念,而是出于漠不关心。你们爱改就改,关我什么事。但这种漠不关心,恰好是那道门缝不被堵上的原因。如果id当时是一个靠卖游戏内道具赚钱的公司,它一定会把WAD加密得死死的。

如果当时的商业环境像今天一样把每一行代码都当作知识产权堡垒来防守,那个在宿舍里改霰弹枪参数的人可能刚打开十六进制编辑器就撞上了一堵密码墙。但1994年不是这样。1994年的游戏产业还年轻,年轻到不知道自己的边界在哪里,年轻到还没来得及把所有东西都锁起来。于是门缝一直开着。更多的人挤进来。他们没有教程。1994年没有视频网站,没有图文攻略,没有教你三分钟修改贴图的短视频。Usenet新闻组上有一些零散的帖子,但大多数是片段,是某个人摸索出来的某个技巧,不成体系。你要学,只能自己动手。打开十六进制编辑器,对着WAD文件发呆,一个字节一个字节地试。改错了,游戏崩溃,黑屏,重启,再试。这种学习方式筛选出了一批特定的人:他们不是程序员,但不怕数字。他们不是设计师,但脑子里有画面。他们不是黑客,但享受把封闭系统撬开的过程。他们唯一的共同点是——不愿意接受“这东西就这样了”。这批人里有一个叫格雷格的人,我们只知道他的网名叫“Mordeth”。

1995年,他发布了一个《毁灭战士》的修改版,包含他自己从头做的五个新关卡。五个。每一个都有新的房间布局、新的敌人配置、新的陷阱设计。他把这些关卡打包成一个WAD文件,传到网上,供人下载。下载的人要自己有一份《毁灭战士》,把Mordeth的WAD文件替换进去,就能玩到全新的内容。今天你打开Steam创意工坊,看到有人上传了一个《上古卷轴5》的新地牢模组,点击订阅,自动下载,进游戏就能玩。那个体验的源头,就是1995年Mordeth做的这件事。区别在于,Mordeth没有一键订阅。他的用户要手动下载文件,手动放进游戏目录,手动备份原文件以防万一。每一步都可能出错,每一步都需要基本的电脑操作知识。但有人愿意做。有人愿意下载。有人愿意玩完之后写邮件给Mordeth,告诉他第三关某个角落的弹药放得太少了。这些邮件,Mordeth都留着。他后来在一个采访里说,收到第一封反馈邮件的时候,他坐在电脑前愣了好一会儿。

那封邮件来自芬兰,一个他从来没去过的地方,一个他永远不会认识的人。那个人玩了他做的关卡,花了四十分钟,死了好几次,最后打通了,然后坐下来写了一封邮件,详细地说哪里好玩、哪里太难、哪里有个门打不开可能是bug。Mordeth说,他读完邮件的那一刻,觉得自己做的这件事不是自娱自乐。他是在给一个真实的人做东西。这就是那个转折。从“我把游戏改成我的”到“我做成东西给别人玩”。占有欲变成了分享欲。涂鸦变成了创作。私人的、带着破坏快感的乱改,开始长出公共性的芽。但id Software的态度在这一刻开始变得微妙。Mordeth的关卡需要原版《毁灭战士》才能运行,他没有盗版id的引擎,他只是做了一个WAD文件。id不反对。但另一些人走得更远。有人把《毁灭战士》的引擎文件、WAD文件、自己做的修改全部打包,做成一个完整的游戏,传到网上,标题写着“不需要原版,下载即玩”。这就踩到了线。

id的引擎是有商业授权的,你把引擎打包免费分发,等于断了id的财路。1995年,id发布了一份声明,用词很克制,但意思很清楚:你们可以改WAD,可以自己做关卡,可以做任何基于我们游戏数据的修改,但不要把引擎文件打包分发。这是底线。这份声明是一个分水岭。它第一次在玩家修改的行为上画了一条法律和商业的线。线这边是“你可以玩”,线那边是“你不能抢”。这条线在后来的三十年里不断被重画、被争议、被诉讼、被重新谈判,但它的原型就在1995年这份声明里。id不是通过加密技术来守这条线——他们没加密WAD——而是通过说“我们允许你做这个,但不允许你做那个”。这是一种基于信任和默契的治理,而不是基于代码的锁死。它起作用了。大部分玩家尊重了这条线。不是因为怕被告,而是因为他们觉得id够意思——人家把门缝留给你了,你别把整扇门卸走。这种默契,在今天的平台经济里几乎绝迹。

今天你打开任何一个带UGC功能的平台,用户协议长得像一部长篇小说,每一句话都是律师写的,每一个“允许”后面都跟着十七个“但是”。但在1995年,玩家和游戏公司之间的规则是靠默契维持的。默契的前提是双方都觉得自己得到了合理的对待。id觉得玩家没有伤害他们的核心商业模式。玩家觉得id给了他们足够的空间折腾。这种平衡脆弱得像薄冰,但它在1995年到2000年之间,奇迹般地没有碎。回到那些涂鸦者身上。我们不知道他们的名字。Mordeth留下了网名,但更多人是彻底匿名的。他们改了贴图,改了参数,自己玩了两天,觉得没意思了,就把修改版删掉,或者存在一张软盘里扔进抽屉。他们没有上传到任何地方,没有发帖,没有留下任何痕迹。他们的修改行为没有变成“作品”,没有进入公共领域,只是自己和自己玩的一场游戏。但这些人的存在,恰恰是整个UGC经济史前史里最重要的一块拼图。因为他们证明了这件事不是少数技术精英的专利。

任何一个愿意花一个下午对着十六进制编辑器发呆的普通玩家,都有可能把游戏拆开再拼回去。他们不写代码,不懂引擎架构,甚至不知道“模组”这个词是什么意思。但他们做了一件根本性的事:他们拒绝把软件当作一个完成品来接受。他们用最笨的办法、最原始的工具、最蛮横的好奇心,把产品变回了原料。产品变回原料——这六个字是整件事的核心。一个游戏公司花两年时间做出一款产品,封装好,压盘,运到商店,你花钱买回家。在正常的商业逻辑里,这件事到此结束。你是消费者,你消费这个产品,获得娱乐,然后把它放在书架上落灰。但那些涂鸦者不这么想。他们拿到产品之后的第一反应是:这东西是用什么做的?我能把它拆开吗?拆开之后我能重新拼成别的吗?这不是消费者的心态。这是工匠的心态。一个木匠看一把椅子,看到的不是“我可以坐”,而是“榫卯怎么打的,用了什么木头,我能不能照着做一把”。

那些涂鸦者看《毁灭战士》,看到的不是“我可以玩”,而是“WAD文件里有什么,贴图怎么换,参数怎么调”。他们没有学过做游戏,没有进过游戏公司,但他们用十六进制编辑器完成了第一次逆向工程。这种工匠心态,在人类历史上一点都不新鲜。中世纪的抄书匠拿到一本手抄本,边抄边在页边空白处画小人、加注释、改写某段他觉得写得不好的文字。十八世纪的家具工匠拿到一把英国来的奇彭代尔椅子,拆开量尺寸,做出“奇彭代尔风格”的本土仿品。二十世纪初的无线电爱好者买回一台成品收音机,第一件事是打开后盖看电路。人类面对人造物的时候,总有一小部分人忍不住要把它拆开。这不是盗版,不是剽窃,是一种更深层的本能:我们要理解我们使用的东西。游戏玩家在1994年做的事,和抄书匠、家具工匠、无线电爱好者一模一样。区别只在于,他们的原材料是代码,他们的工具是十六进制编辑器,他们的作坊是宿舍和车库。而id Software给他们的,是一套拆起来特别顺手的家具。

卡马克的引擎-数据分离架构,就像奇彭代尔椅子用了标准化的螺丝而不是暗榫,你拿一把普通螺丝刀就能拆开。id不是故意的。他们没有坐在会议室里讨论“我们要让玩家方便修改”。他们只是为了自己开发方便。但这个“为了方便自己”的设计选择,恰好踩中了历史的关节。如果卡马克当年把引擎和数据焊死在一起——技术上完全可以做到——那么玩家要修改游戏,就必须反编译整个可执行文件,那个门槛高到只有专业程序员才跨得过去。涂鸦者不会出现。Mordeth不会出现。后来的反恐精英、DOTA、创意工坊、Roblox,都不会出现。整个UGC经济的历史起点,会被推迟至少五年,而且可能长成完全不同的样子。这不是夸大其词。你去看1994年同期的其他游戏。《神秘岛》是封闭的。《命令与征服》的数据格式复杂到没人愿意碰。《魔兽争霸》倒是后来开放了地图编辑器,但那是暴雪主动提供的工具,不是玩家自己撬开的门缝。

只有《毁灭战士》,因为架构上的一个无意选择,成了第一个被大规模“拆解”的游戏。它不是被设计成开放的。它是被玩家撬开的。这两件事有本质区别。设计出来的开放是公司的恩赐,撬出来的开放是玩家的主权。主权。这个词很重,但放在这里一点都不夸张。当你在宿舍里打开十六进制编辑器,找到那行控制霰弹枪伤害值的代码,把它从三改成五十,然后重新进入游戏,对着墙开一枪,整面墙炸飞——那一刻,你不再是id Software的用户。你是这个游戏的主人。你决定了它的规则。你重写了它的物理。你把它从一个“他们做的”东西变成了“我的”东西。这种感觉,玩过修改版的人都知道。它是一种很难描述的满足感。不是通关之后的成就感——通关是你按照别人设计的路线走到了终点,你赢了,但赢的规则是别人定的。修改之后的满足感是另一种:你掀翻了棋盘,重新画了格子,然后在这个你自己画的棋盘上走了一步。这步棋可能很蠢,可能让游戏变得完全没法玩,但没关系。因为棋盘是你的。

1994年到1995年,成千上万的人体验到了这种感觉。他们没有名字,没有组织,没有共同的宣言。他们只是各自在各自的房间里,对着各自的屏幕,做同一件事:把产品变回原料。他们之间唯一的联系是Usenet新闻组上那些零散的帖子,像漂流瓶一样在早期的互联网上漂着。有人发帖问“怎么改怪物的血量”,有人回帖说“在WAD文件的某个偏移量,试试看”。一问一答之间,一种最原始的知识共同体开始形成。这个共同体没有领袖,没有章程,没有会员费。它的成员互相不知道真名,只认网名和发帖记录。它的知识传递方式极其低效:一个人花了三个晚上摸索出来的技巧,写成几百字的帖子发出去,可能要过好几天才有人看到,再过好几天才有人回复“试了,有用,谢谢”。但就是这种低效的、原始的、靠兴趣驱动的知识共享,在没有任何商业激励的情况下,自发地运转起来了。为什么?因为那些涂鸦者有一个共同的处境:游戏是封闭的,代码是封闭的,知识是封闭的。他们撬开游戏的壳,也撬开了知识的壳。

一个人发现了WAD文件的结构,他可以选择保密,当作自己的独门秘籍。但更多人选择了分享。不是因为高尚,是因为分享本身带来的快乐——你发现了一个秘密,你告诉别人,别人试了之后告诉你“真的可以”,那一刻你觉得自己不是一个人在地下室里瞎折腾。你是一个更大的东西的一部分。这个“更大的东西”,在1995年还没有名字。后来人们叫它“模组社区”,再后来叫“UGC生态”,再后来叫“平台经济”。但在1995年,它就是一群不愿意接受“这东西就这样了”的人,各自在各自的房间里,用十六进制编辑器撬锁。锁被撬开的声音很轻。没有人注意到。id Software没有注意到,游戏媒体没有注意到,商业世界更没有注意到。那些涂鸦者自己也没有意识到他们正在做一件会在三十年后被写进历史书的事。他们只是在玩。把游戏当玩具拆开来玩。但历史就是这样开始的。

不是从某个天才的灵光一闪开始,不是从某家公司的战略决策开始,而是从一个最普通的日常动作开始:一个人坐在电脑前,打开一个他不完全理解的工具,对着他不完全理解的数据,改了一个数字,然后看到了他完全没有预料到的结果。那个结果让他笑出了声。然后他继续改下一个数字。房门还是关着的。走廊上的乒乓球还在响。下午的光从窗户斜进来,照在显示器的边角上。屏幕上,霰弹枪打出的火箭炮炸飞了一整面墙的恶魔。他放下键盘,靠回椅背,盯着屏幕上的废墟,心里想的是同一句话——这句话后来被几百万人在不同的时间、不同的地点、对着不同的游戏想过。现在,这是我的了。但这个念头一旦落下来,紧跟着的就是另一个问题:接下来还能改什么?贴图换了,参数调了,关卡的结构能不能动?怪物的行为逻辑能不能动?游戏的底层规则能不能动?每一个被撬开的门后面都站着另一扇门。那些在1994年拿起十六进制编辑器的人,很快就发现自己站在一条没有尽头的走廊里。有人停在了第一扇门后面,改完贴图就满足了。

有人往前走了一步,开始研究关卡编辑器——不是id官方提供的,id直到1997年才发布官方关卡编辑工具,而是玩家自己写出来的第三方工具,粗糙、不稳定、动不动就崩溃,但能用。还有人走得更远,开始碰引擎本身,开始写自己的程序,开始从“修改者”变成“开发者”。这条路一旦走上去,就回不了头。因为你已经知道了——游戏不是天上掉下来的完成品。它是人做的。既然是人做的,你就可以做。这个认知,比任何技术发现都更重要。它不是一种技能,它是一种视角的转换。在你拆开第一个WAD文件之前,游戏在你眼里是一个整体,一个魔法黑箱,你只能接受它给你的所有东西。在你拆开第一个WAD文件之后,游戏在你眼里变成了一堆零件。你看到了它的接缝,看到了它的螺丝,看到了它是怎么拼起来的。你不再敬畏它了。你开始挑剔它——“这个参数设得不对”,“这个贴图可以更好”,“这个关卡设计有毛病”。你从一个被动的接受者变成了一个主动的判断者。这个视角转换,发生在每一个涂鸦者身上。

他们可能没有意识到这个转换有多深刻,但它的后果是实实在在的。一旦你开始用拆解的眼光看游戏,你就再也回不到那个单纯“玩”的状态了。你打开任何一款新游戏,脑子里想的不是“这关怎么过”,而是“这个门是怎么实现的”,“这个特效是怎么做的”,“这个数据结构可能是什么样的”。游戏对你来说不再是娱乐产品,而是教材、是原料、是待拆解的物件。id Software在1993年无意中打开的那道门缝,放出来的不只是几个改贴图的玩家。它放出来的是一种全新的关系——玩家和游戏之间的关系,从“生产者-消费者”变成了“制作者-材料”。这个关系在后来的三十年里不断演化、不断扩展、不断被商业力量收编和重塑,但它的原点就在这里:一个没有名字的人,在一间关着门的宿舍里,对着十六进制编辑器,改了一个数字。那个数字改完之后,他没有关掉编辑器。他继续往下翻,翻到另一行,停下来,盯着那串十六进制数字看了几秒钟。他不确定这一行控制的是什么。可能是怪物的索敌范围,可能是门的开启速度,可能什么都不是,改错了游戏就崩溃。他犹豫了一下,然后改了它。保存。重新打开游戏。屏幕闪了一下。他走进下一个房间,等着看会发生什么。