第 1 章

卧室里的编译器

显示器亮着,房间里只有屏幕的光。一个高中生把键盘往桌沿推了推,腾出地方放那本从学校图书馆借来的C语言教程,书脊已经裂开,第两百多页夹着一张从杂志上撕下来的光盘。光盘上印着编译器的版本号和“附赠完整版”字样,字体是九十年代末软件广告特有的那种带投影的立体字。他盯着屏幕上那行编译错误看了两分钟,然后伸手去够床头的座机电话线。他要拨号上网,去一个BBS上问一个问题。这个问题在后来看不算什么——忘记声明一个头文件——但在当时,在他把自己关进卧室的第三个深夜,这个问题就是他面前的全部。电话线被拔下来,从调制解调器那头重新插上。他听见拨号音,听见那串十七个数字的调制解调器握手声,然后屏幕右下角两个小电脑图标亮起来,显示连接速率:33.6 kbps。

够用了。编译器的安装文件是从光盘上拷进来的,但帮助文档不全,光盘里塞了太多东西——游戏试玩版、三个版本的显卡驱动、一个德语学习软件、还有一整期杂志的电子版。

编译器被放在一个叫“Tools”的文件夹里,安插得很潦草,像是杂志编辑在截稿前夜临时决定加上去的。这间卧室在任何一个城市郊区都可能存在。书桌上堆着课本和模拟试卷,墙上贴着从计算机杂志上撕下来的游戏海报,门关着,门外面是父母看电视的声音。这个高中生没有团队,没有预算,没有老板,没有排期会议。他唯一需要对付的,是那行编译错误。

而当他最终在BBS上收到回复,照着修改,按下编译键,屏幕上跳出编译成功的提示时,他做了一件他后来会反复记起的事:他回头看了一眼关闭的房门,确认没有人进来,然后继续写下一行代码。不是因为有人在等他交活,而是因为他想看看那个东西到底能不能跑起来。这个动作——回头看一眼关闭的房门,然后继续——在独立游戏被正式命名之前,首先是一个空间性的动作。它发生在卧室里,而不是在办公室里。它发生在深夜,而不是在上班时间。它没有经过批准,没有被分配,没有被审批。它只是一个人对着屏幕的私密决定。

在卡带与光盘的时代,做游戏是一门必须先获批准的生意。这不是修辞,而是物理事实。卡带需要产能,光盘需要压盘厂,货架需要发行商去谈,广告需要发行商去买。一个游戏从完成到被玩家拿到手里,中间要经过至少五层组织:制作公司、发行商、压盘厂、分销商、零售店。每一层都意味着成本,每一层都意味着审查,每一层都意味着资格问题。发行商的品控会议不是讨论这个游戏好不好玩,而是讨论这个游戏能不能卖。能不能卖,取决于它是不是像上一个卖得好的游戏。这种逻辑之下,游戏开发是一个职位,不是一个身份。你得先被一家公司雇佣,才能写游戏代码。你写的代码属于公司,不属于你。你的名字不会出现在封面上,或者即使出现,也被印在说明书最末页的某个角落,字号小到需要拿放大镜。

而一台个人电脑、一份从杂志附赠光盘里拷贝来的编译器,以及一根电话线,就让这个门槛在物理意义上坍塌了。这不是比喻。卡带时代的门槛是物理的——你得租用生产线,你得租用货架,你得把做好的游戏装进一个物理载体。

当编译器进入卧室,物理载体暂时消失了。你写出来的代码不需要被装进卡带,不需要被压进光盘,甚至不需要被任何人看见。你可以写完一个程序,然后把它留在硬盘里,关掉电脑,去睡觉。第二天醒来,它还在那里。你做这件事不需要获得任何人的批准。

这个转变在九十年代末至新世纪初发生了,但它发生得如此安静,如此分散,以至于行业雷达几乎没有捕捉到它。行业雷达监测的是销售额、市场份额、发行量、招聘需求。它监测不到一个高中生半夜在卧室里写代码,也监测不到一个大学生在学校的服务器上偷偷托管自己的第一个项目。这些行为不构成一个产业,甚至不构成一个明确的社群。它们更像是一种地衣式的生长——分散、缓慢、几乎不被看见。地衣不需要被批准才能长在岩石上。它只需要一点点水分,一点点光,然后它就开始生长。它不向任何人报告,不向任何人申请,不向任何人证明自己的价值。它只是在那里,安静地扩大自己的表面积。卧室制作者们也是这样。

他们在父母家的地下室拼贴像素,在合租公寓的角落里调试碰撞检测,在大学机房的服务器上偷偷运行一个多人游戏的服务端。他们不觉得自己在做“独立游戏”,这个词在当时还没有被广泛使用。他们只是在做游戏。做游戏这件事,在他们手里,从一项职业变成了一种日常实践。

这种日常实践的物理条件值得被仔细审视。一台上世纪九十年代末的个人电脑,在中等配置下,需要花掉一个普通家庭大约两个月到三个月的收入。它不是一件便宜的设备。但它的昂贵是一种一次性投入,买回来之后,它属于家庭,不属于公司。它被放在客厅的角落,或者父母的卧室,或者——越来越多的——被放在孩子的房间里。父母买电脑的理由通常是“学习”:学习打字,学习编程,学习用电脑。九十年代末的电脑广告反复强化这个叙事:一台电脑,投资孩子的未来。但实际上,这些电脑在深夜运行的,常常是游戏——不是买的游戏,而是自己写的游戏。自己写的游戏和买的游戏,在空间上占据的是同一个位置:硬盘。

硬盘是九十年代末个人电脑上最安静的革命者。一块八点四GB的硬盘,可以藏下从BBS上下载的几十个免费游戏、编译器的安装文件、自己在周末写的半成品程序、从杂志光盘上拷来的像素画素材、还有一份从同学那里拷来的RPG Maker。这些东西在硬盘里安静地躺着,不占用物理空间,不需要货架,不需要库存。它们的存在本身,就是对卡带时代的物理门槛的否定。

杂志附赠的光盘是这个时期最值得被记住的细节。它同时承载了技术获取渠道和时代质感。一张光盘的成本不超过几块钱,但它的容量是六百五十MB——相当于四百多张三寸软盘。杂志社把编译器、游戏试玩版、驱动程序、电子书、壁纸包塞进同一张光盘,附在杂志封面上,售价不变。一个高中生花十五块钱买一本杂志,得到的不只是阅读材料,还有一整套软件开发生态。这个生态的完整程度,在2000年前后达到顶峰:某些杂志的光盘里同时包含编译器、教程、美术资源、音效库、以及一个完整的游戏引擎。

虽然这些工具的版本通常比商业版本落后一到两个迭代,但这对一个初学者来说没有区别。他用不着最新的功能,他用得着的,只是一个能跑起来的环境。这个环境的门槛低到什么程度?低到只需要一台电脑、一张光盘、一份耐心。

耐心是唯一不能被批量复制的资源。编译器安装需要时间,学习语法需要时间,调试错误需要时间,拨号上网查资料需要时间,等待下载需要时间。这些时间累加起来,构成了卧室制作者最核心的投入。他们投入的不是钱,或者不主要是钱,而是时间。而时间,正好是卧室里最充裕的东西。高中生的暑假,大学生的课余,刚毕业的年轻人待业在家的那段日子——这些时间在机构化的游戏产业里毫无价值,因为没有公司会为这些时间付钱。但在卧室里,这些时间变成了像素、代码、关卡设计、以及凌晨三点编译成功时那一瞬间的沉默。沉默是卧室制作者们共享的体验。他们独自面对屏幕,键盘敲击声被房间的墙壁吸收,没有同事在旁边讨论,没有老板在身后巡视,没有会议室的电话铃声。

这种沉默不意味着孤独——或者至少不完全是孤独——它意味着专注。专注是一种在办公室环境里很难获得的状态。办公室里的专注不断被中断:邮件、会议、同事的提问、打印机的噪音、午休的铃声。而卧室里,唯一的干扰是父母在门外喊你吃饭,或者电话响起,或者调制解调器掉线。这些干扰很容易被处理:把门关紧,把电话线拔掉,把调制解调器的音量调低。然后沉默重新降临,代码继续增长。

这种沉默里生长出来的,是一种新的自我想象。在机构时代,做游戏的人想象自己是一个职位——程序员、美术、策划、制作人。职位意味着服从分配,意味着完成上级布置的任务,意味着在年终考核时证明自己的价值。但在卧室里,做游戏的人开始想象自己是一个“制作者”。制作者的身份不需要被雇佣来确认。它只需要那个回头看一眼关闭的房门然后继续的动作。这个动作重复足够多次之后,制作者开始意识到:我可以在任何时间开始,我可以在任何地方开始,我可以做任何我想做的游戏。这个意识一旦产生,就不可逆转。

不可逆转的并不是市场格局,而是制作者对自己的理解。当一个人在没有预算、没有团队、没有发行商的情况下,独自写完一个游戏,然后把它发给朋友玩,或者上传到某个BBS,或者干脆就放在硬盘里——他完成了“做游戏”这件事的完整闭环。这个闭环不包含任何外部审批环节。他不需要向任何人证明这个游戏有没有商业价值,不需要向任何人解释这个游戏的目标用户是谁,不需要向任何人提交版本计划。他做完了,就是做完了。这个经验一旦获得,就永远改变了“做游戏”这三个字在他心里的含义。但这里埋着一个容易被忽略的问题。

当编译器进入卧室,当“做游戏”从“被允许”变成“一个人随时可以开始”,这个转变本身携带着新的依赖形式。那个高中生从杂志光盘上安装的编译器,版本号落后于同时期的商业版本。那两个版本之间的差距,他不知道,也不在意。但如果他用的不是这一款编译器,而是别的什么编译器,他写的代码就会不一样。

如果杂志光盘上附赠的不是C++编译器,而是某个特定的游戏引擎,他做的游戏就会不一样。工具给了他自由,同时也塑造了他使用自由的方式。自由不是抽象的,自由总是通过具体的工具来实现。而工具,永远携带着制造者的预设。这种预设,在后来会发展成一条贯穿独立游戏二十年的软锁链。编译器、引擎、分发平台、社交网络——它们以赋予自由的方式,塑造创作语法。它们提供便利,提供可见度,提供社群认同。它们让创作者自愿接受约束,而这些约束比硬性审查更隐蔽,因为它们看起来像是创作者自己的选择。

但在本书的开端,在九十年代末那些深夜的卧室里,这条锁链还没有成形。它刚刚露出第一环:那个编译器。那个编译器是免费的,或者说,是杂志附赠的。它不需要授权费,不需要注册码,不需要向任何公司申请使用许可。它就这么被塞进一张光盘里,和德语学习软件、显卡驱动、游戏试玩版挤在一起。但正是这个被塞进光盘角落里的编译器,让门槛坍塌了。

它让一个高中生可以在半夜三点写代码,让一个大学生可以在宿舍里拼贴像素,让一个待业青年可以在父母家的地下室里搭建自己的游戏世界。这些行为不被行业承认,不被市场承认,不被任何权威承认。但它们发生了。它们在地衣般生长,覆盖了从北美到欧洲再到亚洲的无数个卧室。

谢默斯·麦克纳利是这种地衣式生长中最早被看见的名字之一。他是独立游戏公司Longbow Digital Arts的创始人,凭借游戏《越野坦克》赢得2000年度独立游戏节大奖。但在获奖后不久,他因患霍奇金氏病去世。为纪念他对独立游戏的贡献,独立游戏节大奖于2001年更名为谢默斯·麦克纳利大奖。这个命名行为本身,是一种承认,但也是一种悼念。麦克纳利获奖时,“独立游戏”这个词还没有被广泛使用。他的公司叫Longbow Digital Arts,不是后来人们会说的那种“独立游戏工作室”。他做的《越野坦克》是一款坦克对战游戏,和后来那些被贴满“独立”标签的文艺游戏完全不同。

但他代表了一种新的可能性:一个小团队,一个自己的项目,一个不被大发行商控制的游戏,可以被看见,可以被认可,可以在一个正式的奖项里获得大奖。他获奖的那一年,是2000年。同一年,无数个卧室里的制作者还不知道这个奖项的存在。他们继续写代码,继续从杂志光盘上安装编译器,继续在深夜拨号上网查资料。他们的作品没有被提交到独立游戏节,没有被任何奖项评审,甚至没有被任何外人玩过。但他们的存在,构成了独立游戏这座冰山水面以下的部分。

谢默斯·麦克纳利是浮现出来的那一角,而水面之下,成千上万个卧室里的屏幕亮着,成千上万行代码在深夜被编译,成千上万次编译成功的提示在安静的房间里无声地闪烁。这些闪烁的瞬间,从九十年代末延续到新世纪初,从北美延续到欧洲、日本、中国。在日本的秋叶原,同人游戏社团开始在Comiket上贩卖自己制作的游戏,这些游戏通常改编自动漫或同人小说,但也有一些是原创作品。

同人游戏的制作者们,往往是在自己的房间里用业余时间完成作品,然后拿到展会上卖给同好。他们的行为模式和北美那些卧室制作者几乎一模一样:自己出钱、自己制作、自己发行。唯一的区别是,日本的同人文化为他们提供了一个现成的展示和交易平台——同人展。而在北美,类似的平台还要等几年才会出现。

在中国,情况又不同。九十年代末,中国个人电脑的普及率远低于北美和日本。一台电脑对于一个中国家庭来说,可能意味着半年甚至更多的收入。

但即便如此,卧室制作者依然出现了。他们可能是在大学机房蹭电脑的学生,可能是在网吧包夜写代码的年轻人,可能是从父母单位借来电脑的初中生。他们的工具来源和北美制作者一样:杂志附赠的光盘。中国的计算机杂志在九十年代末同样繁荣,《电脑报》《大众软件》《软件世界》每一期都附赠光盘,光盘里塞满了编译器、教程、素材、以及各种共享软件。

一个中国高中生花十几块钱买一本杂志,得到的东西和北美高中生花五美元买一本杂志得到的东西,在本质上是一样的:一个完整的、可以随时开始的开发环境。重庆柚子猫工作室的《戴森球计划》在2021年1月21日上线Steam和WeGame抢先体验版时,距离那个杂志附赠光盘的时代已经过去了二十年。柚子猫工作室的团队成员只有五个人:两个程序、两个美术、一个策划。游戏于2019年4月正式立项,从立项到发售,只用了1年10个月。他们使用的引擎是Unity,一个在二十一世纪第二个十年成为独立游戏标配的工具。Unity不是从杂志光盘上拷来的,它是从官网下载的,免费版本拥有完整的功能。从杂志光盘上的编译器到Unity免费版,中间隔了二十年。这二十年里,工具变便宜了,分发渠道变多了,独立游戏从地衣变成了森林。

但《戴森球计划》的五个制作者,和九十年代末那个深夜在卧室里写代码的高中生,共享着同一个核心动作:他们都在一个没有被批准的空间里,做出了一个没有被批准的决定。那个决定是:开始做游戏。

这个决定,从九十年代末开始,被无数人重复了无数次。它发生在卧室里,发生在父母家的地下室,发生在大学宿舍,发生在合租公寓的客厅角落,发生在网吧的包夜时段。它发生的时候,没有人觉得它有什么历史意义。它太普通了,普通到就像打开一本编程书,插入一张光盘,敲下第一行代码。

但每一个这样的决定,都在悄然改变“制作者”这个词的含义。制作者不再是一个等待被雇佣的职位,而是一种可以自行主张的身份。你不必等一家公司给你发offer,你只需要一台电脑、一份编译器、以及愿意在深夜关上门的那份耐心。

这份耐心,以及它所需要的沉默,是卧室制作者们最共通的经验。深夜的卧室里,只有屏幕的光和键盘的声音。调制解调器偶尔发出那串标志性的握手声,然后重新安静下来。

代码在编译,进度条在屏幕上缓慢移动。制作者盯着进度条,手里捏着那张从杂志上撕下来的光盘,光盘背面反射着屏幕的蓝光。这个画面,在独立游戏被正式命名之前的那些年里,被重复了无数次,在不同的大陆,不同的时区,不同的语言里。

它不是一个浪漫的画面,它是一个物理的画面。它说的是:当编译器进入卧室,做游戏这件事的主体,从机构变成了个人。

这个转变的后果,要等到后来才逐渐显现。当这些卧室制作者终于把作品拿出来,寻找观众,他们才发现在卧室之外,世界还没有准备好接受他们。他们做的游戏没有发行商愿意接,没有媒体愿意评测,没有商店愿意上架。他们的作品太奇怪了,太个人了,太不像上一个卖得好的游戏。

他们被挡在行业之外,但这一次,挡在门外的不是物理门槛,而是注意力门槛。他们可以做出游戏,但他们找不到观众。

这个矛盾,在卧室编译器时代已经埋下了种子。当工具的门槛坍塌,新的门槛在别处悄悄升起。那扇卧室的门,可以关起来挡住父母的视线,但打开之后,外面是更大的沉默。

这种沉默不同于卧室里的那种。卧室里的沉默是专注,是生产力,是代码在编译时进度条缓慢推进的安静。

而外面的沉默,是无人回应。一个游戏被上传到BBS上,下载量可能只有个位数,回帖可能只有一条,还是问“这个怎么安装”。

制作者坐在屏幕前,刷新页面,等待回应,等待的时间比调试编译错误的时间更长、更不确定。编译错误至少有一个明确的提示,告诉你哪一行出了问题,告诉你需要修改什么。而无人回应,没有任何提示。你不知道是游戏不好玩,还是没人看到,还是看到了但不想下载,还是下载了但不知道该怎么评价。

这种沉默没有错误代码,没有行号,没有BBS上的热心人帮你解答。它是一种新的门槛,一种比物理门槛更难以跨越的门槛,因为它不在空间里,而在注意力里。

但那是后来的事。在编译器刚刚进入卧室的那些年,这种注意力门槛还没有完全显现。卧室制作者们还在享受工具门槛坍塌带来的最初的自由。

他们还在深夜写代码,还在从杂志光盘上安装编译器,还在BBS上互相回答那些初级的问题——头文件怎么声明,指针怎么用,内存怎么管理。这些问题在专业程序员看来不值一提,但在BBS上,它们被认真对待,被详细解答,被附上代码示例和参考链接。

这些BBS构成了一种自发的、非正式的教育体系,它不颁发证书,不收取学费,不要求任何入学资格。它只需要你有一台调制解调器,一个能拨号上网的电话线,以及一个愿意提问的深夜。

这种教育体系的存在,让“学习做游戏”这件事从机构化的教育体系中溢出。

在九十年代末,如果你想学做游戏,正式的路径是读计算机科学学位,然后申请游戏公司的职位。这条路径漫长、昂贵、而且充满不确定性。

而BBS提供了一条并行的路径,它不取代正式教育,但它让那些没有条件或没有意愿走正式教育路径的人,也有机会接触到同样的知识。这些知识不是从课堂上听来的,而是从BBS上的帖子里读来的,从别人分享的代码里看来的,从自己反复调试的错误里试出来的。

这种学习方式不需要教室,不需要学分,不需要学位。它只需要卧室里的那台电脑,那根电话线,以及那张从杂志上撕下来的光盘。

那张光盘,在九十年代末期,是一把钥匙。它打开的门,不是通往某个特定的游戏公司,而是通往“做游戏”这件事本身。

在它出现之前,做游戏的门槛不只是钱,还有信息。你不知道怎么做游戏,你不知道用什么工具,你不知道从哪里开始。

杂志光盘一次性解决了这两个问题:它提供了工具,也提供了教程。那些教程可能写得不好,可能翻译得生硬,可能遗漏了关键的步骤,但无论如何,它们让一个零基础的人可以在卧室里开始。开始,是最重要的。

开始的意义,不在于能做出什么了不起的作品,而在于打破了“做游戏是别人的事”这个默认设定。

这个默认设定,在卡带时代是被整个产业生态维护的。游戏公司招聘的时候,要求有经验。如何获得经验?在游戏公司工作。如何进入游戏公司?先有经验。

这个循环在产业层面是合理的——公司需要能干活的人,而干活需要经验——但在个体层面,它构成了一道近乎封闭的墙壁。墙壁上唯一的缝隙,是某些公司偶尔开放的实习生岗位,或者某些大学开设的游戏设计课程。

但这些缝隙太小了,太少了,而且大部分集中在北美和日本。对于生活在世界其他地方的年轻人来说,做游戏不是一条可见的职业路径。它甚至不是一条可见的兴趣路径。

它是一个你根本不会去想的事,就像你不会去想自己造一辆汽车。编译器进入卧室,打破的就是这个默认设定。它告诉你:你可以自己造一辆车。不一定是一辆好车,不一定是一辆能上路的车,甚至可以是一辆只有三个轮子、方向盘是鼠标、引擎一启动就冒烟的车。

但关键是,你可以造。你不需要是汽车工程师,你不需要福特公司的批准,你不需要租用厂房。你只需要一个车库,一些工具,以及愿意花时间。这个比喻在九十年代末还不常见,但它的精神内核已经完整地出现在那些卧室制作者的行动里。

他们的行动,就其本质而言,是对“谁有资格做游戏”这个问题的重新回答。这个重新回答的过程,不是通过宣言、运动或组织完成的。

它通过无数个私密的、不被看见的深夜完成。一个高中生在卧室里写代码,没有人知道。一个大学生的第一个项目被偷偷托管在服务器上,没有人知道。一个待业青年在地下室里拼贴像素,没有人知道。

这些“没有人知道”的行动,积累到一定程度,就构成了一种新的现实。这种现实,不是由任何一个人设计出来的,也不是由任何一次会议决定的。它是在无数个关闭的房门背后,自行生长出来的。

当房门最终打开,当这些卧室制作者开始把作品拿出来,他们打开的不只是自己的房门,也是整个游戏产业的房门。他们带来了新的游戏类型,新的美术风格,新的叙事方式,新的商业模式。

他们证明了,游戏不一定非要像上一个卖得好的游戏。他们证明了,一个人也可以做出值得被玩的游戏。他们证明了,做游戏的人可以不是被公司雇佣的职位,而是一个可以自行主张的身份。但这一切,都还只是后来的事。

在九十年代末,在那些深夜的卧室里,这些证明还没有完成。它们还只是屏幕上的代码,硬盘里的文件,以及编译成功时那一瞬间安静的闪烁。

那个闪烁,是独立游戏二十年最原初的画面。它发生在一个关着门的房间里,发生在深夜,发生在一个没有被任何人看见的时刻。它不壮丽,不激动人心,没有任何戏剧性。

它只是一个技术性的提示:代码没有错误,编译通过了。但在那个提示闪过的瞬间,一个新的事实被建立起来:一个人,在没有被批准的情况下,做出了一个游戏。这个事实,在那一刻还只属于他自己。他还没有把它发出去,还没有任何人玩过,还没有任何反馈。

但这个事实本身,已经足够改变他对自己的理解。他不再是一个想做游戏但不知道该怎么做的人。他是一个已经做出了游戏的人。

这两个身份之间的区别,是卧室编译器时代最核心的遗产。这份遗产,在独立游戏被正式命名之前,就已经被继承下来了。它被继承的方式,不是通过文件、宣言或组织章程,而是通过一种日常实践:关上门,打开电脑,开始写代码。

在后来的二十年里,这个日常实践被无数人重复,在不同的时代,用不同的工具,在不同的平台上。从编译器到Flash,从Flash到Unity,从Unity到Godot,工具在变,但那个关上门开始写代码的动作,始终是独立游戏最基础的单元。

它是一切独立游戏的起点,也是一切独立游戏在面临困境时最常被退回的位置。当发行商拒绝,当市场冷淡,当媒体不理,当玩家差评,制作者可以退回到那个位置:关上门,打开电脑,开始写代码。

这个位置,就是独立游戏最根本的空间政治。它说的不是“我成功了”,而是“我还可以重新开始”。

那个高中生回头看了一眼关闭的房门,然后继续写下一行代码。他不知道自己正在参与一场关于“谁有资格做游戏”的权力下放。他也不知道,在接下来的二十年里,这个简单的动作会被反复书写的产业史、文化史和思想史所环绕。他只知道,那行编译错误已经被解决了,下一个问题正在等着他。

他调整了一下坐姿,把键盘往自己这边拉近一点,然后开始敲下一段代码。

硬盘的指示灯在机箱上安静地闪烁,调制解调器已经断开了连接,房间里只剩下键盘的声音。门外面,电视的声音也渐渐变小了,夜已经深到连父母都准备睡了。而这间卧室里的屏幕,还亮着。