游戏黑客之道

互联网互联网04-20 14:26

John Carmack 说过,“在信息时代,客观障碍已不复存在,所谓障碍都是主观上的。如果你想动手开发什么全新的技术,你不需要几百万美元的资金,你只需要在冰箱里放满比萨和可乐,再有一台便宜的计算机,和为之献身的决心。”他做游戏时是这样,他玩火箭时是这样,他开发虚拟现实技术时想必更是如此。“我们在地板上睡过,我们从河水中趟过。”

 游戏,黑客

Carmack 不是 Steven Levy 那部书中的黑客,他是读着 Levy 在1984年出版的这本《黑客:计算机革命的英雄们》而成长为一名英雄的。他是游戏黑客,是火箭黑客……更为重要的是,他早已是所有技术人的象征。

用 Levy 在书中所总结的黑客伦理来理解 Carmack 的故事是非常自然的。并且在1996年,黑客大师 Eric S. Raymond 为黑客圈写下了一份更为系统的入门文档。这里不妨就用这份一直在保持更新的黑客文档——《如何成为一名黑客》 作为参考,进一步来理解 Carmack 的故事以及黑客文化。

首先是态度。

⒈The world is full of fascinating problems waiting to be solved.

作为一名黑客,你可以从解决问题、磨练技能以及锻炼智力的愉悦中获得动力。(你还必须对自己的学习能力树立信心——这种信念使你相信,尽管你所掌握的知识可能不足以解决你当前的问题,可一旦你从问题的一小部分入手并从中学习,你将会学到足够的知识用来解决下一部分——如此往复,直到整个问题都会被你解决。)

Carmack 解决问题的办法正是如此,“先尝试最直接的办法,如果不行,再拓宽思路。”在开发透视三维图像的技术时,他最终独辟蹊径地使用了所谓的“射线追踪”算法(raycasting)。这种解决问题的信念在他开发 Quake 游戏引擎,面对计算机图形学界的泰斗迈克尔·亚伯拉什(Michael Abrash)时无疑更为显著,亚伯拉什被打动的这一节是这样描述的:

和其他图形领域的程序员一样,他(指亚伯拉什)也经常在理论上描述虚拟世界,当他读到《雪崩》里的“变体”时,他想,我已经可以实现这里面的80%,至少在理论上。而现在,一个年仅二十四岁,但却充满信心的年轻人就坐在他面前,谈论着使它变为现实,亚伯拉什毫不怀疑他有这个能力。随后,亚伯拉什聊起说他在做完一个项目后总会怀疑自己是否还能百尺竿头更进一步,听到这话,Carmack 皱了皱眉:“我从没怀疑过,嗯。”

⒉No problem should ever have to be solved twice.

作为修改游戏的两个老手,Carmack 和 Romero 对于玩家们乐于修改和替换《德军总部 3D》的游戏数据再高兴不过了。事实上,开放的、自由的、充满乐趣的游戏修改有助于开发者和玩家社区相互促进,形成良性的互动。从《毁灭战士》开始,Carmack 一直积极为玩家们做“正确的事情”,让游戏便于玩家修改。

为此,Carmack 专门公布了《毁灭战士》的关卡编辑器和其他辅助工具的源代码。然后,新西兰坎特伯雷大学的 Brendon Wyber 则如同疱丁解牛般从源代码中分离出各种功能,全球各地玩家的帮助下制作出了《毁灭战士》编辑工具——DEU: Doom Editor Utility,向玩家展示了如何从无到有地建造出一个关卡。10天后,比利时学生 Raphael Quinet 协助 Brendon 制作的 DEU 增强版发布——“你几乎可以在关卡里做任何事,你可以移动、添加、删除各种怪物和宝物,改变墙的位置,或是改变它的墙纸,或是安置新的升降机、门、酸液池,你还可以调整天花板的高度……甚至,建造一个全新的关卡。”而密歇根大学的学生 Greg Lewis 则更进一步,他编写的 DeHackEd 软件所能修改的不只是包含图像、声音、关卡的外部 WAD 文件,而是游戏的核心——可执行文件,这里面包含了游戏的运行逻辑,譬如怪物们如何行动、武器如何开火、文字如何显示。

而这种编辑器后来演变成了其他公司游戏的标配,比如暴雪的《魔兽争霸》与《星际争霸》,并且大名鼎鼎的《反恐精英》就是《半条命》的一个修改包,而风靡世界的《DotA》则只是《魔兽争霸3》的一张自定义地图。“不必重复发明轮子”的效果可见一斑。

⒊Boredom and drudgery are evil.

“枯燥和单调的工作不仅是令人不快,而且它们本身就是一种罪恶。”从 Carmack 的经历说,学校教育更是如此。让创造性的头脑被愚蠢的重复性劳动所困扰是一种罪恶,让创造性的头脑被流水线式的教育工厂禁锢起来是一种更大的罪恶。

从开始接触计算机和《黑客》起,Carmack 就进入了一个不一样的世界。在那里,他和小伙伴们自发学习 BASIC 编程,一起玩游戏,一起研究并动手修改游戏,完全不需要依赖于他人。通过那时的 BBS(电子公告牌系统,Bulletin Board System)和 WELL(全球电子连线,Whole Earth ‘Lectronic Link),Carmack 进一步学习游戏和黑客文化,当然也有一些好玩但又不那么合乎法律的东西,比如盗用电话线路以及炸药配方。

一天晚上,Carmack 们用刚学到的铝热剂融化一所学校机房的玻璃时,有人不小心触动了附近警察局的报警器,他们很快就被包围了……14岁的 Carmack 被送去做精神评估,以便测定他的口供。他和精神医师的面谈很不顺利,结果被处以一年教养。在城里的“少年之家”,所有事情都是按时间表进行:吃饭、洗澡、放风、睡觉,做完一件家务活给一朵小红花,每天早上,所有孩子都被装上一辆货车运到学校里上课,放学时再被拉回“少年之家”。我们的社会系统在面对创造性的头脑时,尚未能演化出一种合乎情理的应对机制,至今都更为倾向于首先去防范这些创造性的头脑做坏事,更多地只是简单地去禁锢他们。这本身就是一种对于人性的恶,更有利于成为那种错误观点占上风的社会。

所以 Carmack 憎恶学校——憎恶那些制度和教条。1988年秋天,在堪萨斯大学,Carmack 选修的都是跟计算机相关的课程。在某次测验的试卷背后,他给教授写道:“为什么你不能给个项目让我们来做?你要什么我就能做出什么!”忍受了两个学期后,他退学了。后来《毁灭战士》大获成功,Carmack 买了3200美元的计算机设备,送给他在 Shawnee 教会公立学校念书时的计算机老师,“这样他们就可以在实践中学习知识,而不是死读书,读死书。”他解释道。

⒋Freedom is good.

Carmack 面对的是母亲独裁式的行为:“如果一个人要进入计算机业,那么他首先应该去念大学——最好是 MIT 那样的,然后取得学位,然后进入公司——最好是IBM那样的。因此,她不肯让儿子把这些钱用在她觉得很荒谬的事情上——尤其是制作游戏。”她爱她的儿子,但她只希望他做她认为是正确的事情。她不肯让儿子把钱用在她觉得很荒谬的事情上——尤其是制作游戏,尽管那笔钱是 Carmack 的父亲留给 Carmack 的信托基金。她固执地认为,这笔钱只能用于上大学,而且,只有在成绩让她觉得满意后,她才会把钱还给他,在此之前的学费还是要卡马克自己承担。

所以高中毕业后很长一段时期,Carmack 跟他母亲的关系都非常糟糕。退学后,Carmack 开始全身心地投入于制作游戏,同时还在一家比萨店做计时工来养活自己。Carmack 的抗争换来的是夜鹰公司对他的游戏的认可,虽然一开始还只是销量平平,但他已经可以把赚来的钱投入于另一项爱好——改装汽车。可以自由地支配时间,不用听别人使唤或是回答别人的问题,Carmack 很乐意一生就这么写写程序,改改汽车,玩玩《龙与地下城》——就这么简简单单。

为此,他只需要认真做出更多游戏。

为什么自由对于 Carmack 这样的头脑来说是如此地关键呢?因为“任何能向你发号施令的人都能够迫使你停止去解决令你着迷的任何问题——同时,按照独裁主义头脑的一般方式,他通常会给出一些极端愚昧的理由来。”这就又回到了前面的问题,把创造性的头脑浪费在愚蠢的事情是一种罪恶。

⒌Attitude is no substitute for competence.

黑客伦理在 Carmack 看来不是什么遥远的概念信仰或者纲领宣言,而是实实在在的生活方式。想象一下这样的场景:看完《黑客:计算机革命的英雄们》(Hackers: Heroes of the Computer Revolution),一个十四岁的少年夜晚躺在床上,头脑中唯一的念头只是——”I’m supposed to be in there!”

三年级的时候,Carmack 沉浸在《龙与地下城》的世界,不像其他拘泥于规则手册里刻板条款的城主,他抛开那些结构,来创作属于他自己的世界——每天放学后,他就把自己关在小屋里,埋头于成堆的图纸和表格中。

这个过程正如 ESR 在文中所论述的:“从书本上你能学到编程语言的特征——而那只是知识的皮毛而已,是你头脑中的观念把这些书面知识变成了真实可用的技能,而这一过程也只有通过不断实践和虚心做学徒才能学到。因而你具体能做的就是 (a) 读代码 ,(b) 写代码 。”

不是止于简单的玩乐,开始研究并动手修改游戏,这是 Carmack 作为游戏黑客的起点。“一次,Carmack 找到了《创世纪》里处理角色的代码,稍作修改,他就给自己增加了一些额外的能力,这是他第一次体会到凭空创造东西的乐趣。”而且,“作为一名程序员,他不需要依赖于其他人,只要他的代码逻辑正确表述了他定义的规则,它就会工作得很好,一切都那么合理。”

Carmack 发现他最喜欢的是图像编程:创作一些二进制代码并看着它们给屏幕带来生气;这种直接反馈所带来的满足感是其他编程工作所不具备的……他还意识到,如果他想进一步探索编程世界,那么,他必须要从游戏入手。他不是那种坐着等待灵感的人,于是他直接沿用了现有游戏中的构思。《造影》(Shadowforge)是他的第一个游戏,它和《创世纪》很相像,但它也有几处独特创新,譬如玩家可以朝任意方向攻击。

主营照相机电池的夜鹰公司(Nite Owl Productions)花一千美元买下了《造影》,这是 Carmack 生平第一笔收入,他用这些钱把苹果机升级到了苹果II GS。

更重要的是技能。

⒈Learn how to program.

Carmack 在他1998年2月的 .plan file 中写道:

我的人生就是以知识的积累和学习的不断深入来分为不同阶段。

我启蒙阶段用的是学校里的苹果II型机,但当时的条件局限了我的学习速度和深度。今天的状况已经好多了,只要有一台便宜的二手 PC 机、一张 Linux 光盘和一个因特网的账号,你就拥有了足够的工具和资源,你就可以达到任何你期望的编程境界。

《软盘》的头六个月对我而言如同活在梦里,平生第一次,我身边有了比我更博识的程序员(Romero 和 Lane Roath),我手边有了大量的书籍和资料,而且我可以全身心投入到编程中,那真是一段好时光。

接下来的两年,直到 Doom 和几个家用机版本移植完成,我在稳步提高着我的知识面和技术水平,其中包括:更深入的图像编程、网络、Unix、编译原理、跨平台、RISC 架构等等。

Quake 开发的第一年简直如同腾云驾雾,有迈克尔·亚伯拉什作为顾问,我尝试了大量新鲜课题。如果科班出身的图像程序员们知道我在写 Doom 时有多么业余,他们肯定会大吃一惊,那时的我甚至不能正确地剪切墙体多边形(这就是为什么我用了那莫名其妙的极坐标系统),Quake 逼着我踏上正轨,同时探索出新思路。

Quake 开发的最后半年是在痛苦中度过的,那时我满脑子只想着把这该死的东西做完,当然,一切付出到后来都有了回报,但我绝不怀恋这段时光。

Quake2 开发的过程中,我的学习经历又得到了进一步扩充:GLQuake、quakeworld、radiosity、OpenGL 工具开发、Win32 编程等等,与此同时,我也有了不少关于下一步如何做的想法。

我认为接下来的 Trinity engine 将和 Quake 一样硕果累累。我在一些课题上已经有了非常深入的理解,我还正在尝试一些图像编程以外的全新领域,它们将会和我所有其他方面的工作产生积极互动。

⒉Get one of the open-source Unixes and learn to use and run it.

跟今天的情形不一样,Carmack 在五年级接触的是 Radio Shack 计算机培训班的 TRS-80 计算机,TRS-80 系列 Model I 型于1977年8月发布,操作系统只是一种基于 ROM 的 BASIC 语言环境,更多细节可见 http://oldcomputers.net/trs80i.html 。(大多数的二十世纪八十年代的家用计算机都有一个驻留在 ROM 中的 BASIC 解释器,以此能让计算机直接引导到 BASIC 环境。因为在这一个时期的 BASIC 的知名度的上升,一些杂志刊登了用 BASIC 语言写的游戏、工具和一些其他程序的完整的代码。http://zh.wikipedia.org/zh-cn/BASIC )

这便是 Carmack 开始自学 BASIC 编程,研究并动手修改游戏时期的学习环境。而 Ward Christensen 和 Randy Seuss 编写的第一个公共 BBS 系统(Bulletin Board System:电子公告牌系统)自1978年上线便迅速传播开来,无数的 BBS 系统被架设起来,其中一些像 Stewart Brand 的 The WELL(全球电子链接,Whole Earth ‘Lectronic Link)便成为 Carmack 这样的黑客或玩家们的温床。他们在这里不光是研究游戏,还讨论黑客文化,甚至还有盗用电话线路以及炸药……其中最为重要的一点,我想,是这些早期的虚拟社区让 Carmack 开始意识到,他想学的东西以及他要做的事情,其实早已不在学校系统之内。

后来,14岁的 Carmack 由于用铝热剂做炸药偷苹果机而被判处一年教养,而对钻研技术的渴望使得他父母终于答应买苹果机——一台 Apple II,系统是基于 ROM 的沃兹版 BASIC 。他用这台电脑做出的第一个游戏——《造影》(Shadowforge)为他带来了1000美元收入,然后他直接用这笔钱把电脑换成运行 Apple GUI 和 ProDOS 的 Apple II GS 。

无论是电脑还是里面的操作系统,对于 Carmack 来说都不过是可以用来钻研的东西。百科全书里描述计算机的段落被他翻来覆去看了十几遍,而他不过是想自学其中所有他想知道的知识。作为一名黑客,他就是从解决问题、磨练技能以及锻炼智力中享受乐趣和收获动力的。

多年以后,在制作《德军总部3D》的末期,他又花11000美元买了乔布斯离开苹果后最新发布的 NeXT 电脑用于游戏开发。其中的 NeXTSTEP 系统是以 Mach 微内核和 BSD Unix 为基础的,在 NeXT 并入苹果后,该系统又发展成为今天 Mac OS X 的 Darvin 核心。这与今天 OS X 最为不同的地方还在于后者专有的 Aqua GUI。另外巧合的是,世界上第一台万维网服务器就是 Tim Berners-Lee 在一台 NeXTCube 上架设出来的,同时第一个网络浏览器 WorldWideWeb 也是以在该系统上开发的,这正好提到了我们接下来的话题。

⒊Learn how to use the World Wide Web and write HTML.

学会使用万维网不仅仅意味着会使用浏览器,而是要学会写 HTML,这同时会教你一些有助于学习编程的思考习惯。并且要想有所价值,你所写出来的网页必须要有内容——对其他黑客来说有趣 和/或 有用的内容,只是 ESR 在另外一篇《提问的智慧》中才非常详尽地解释如何在网络中提问和回答并从中学习。而更为通用型的网络使用,则要结合 Howard Rheingold 的《网络素养》,充分利用 Internet 来组织自己的学习网络。

谈到利用好网络,Carmack 他们通过 BBS 系统以共享软件的方式发行游戏的商业故事同样让人赞叹。随着《指挥官基恩》的成功,1992年2月,雪乐山在线与 id Software 达成了250万美元的收购意向,可惜威廉姆斯夫妇未能领会 Carmack 他们在做的事情,特别是没能意识到《德军总部 3D》的潜力,最终他们没能给出 id 所希望的现金交易……这是两代游戏黑客之间的一次直接交锋,结果是 id 的《德军总部 3D》大获成功,很快成为一种地下文化现象。

1993年12月10号,星期五,连续测试三十小时后,id已经准备好把Doom上传到因特网上。威斯康星大学的系统管理员 David Datta 好心为 id 提供了一台校园网内的文件服务器。临近午夜,服务器上挤满了急不可耐的玩家,他们非常聪明地新建文件用文件名来交流那一刻的心情,但是当晚的主角 id 却因服务器用户满额而无法登陆上传游戏文件。最后 id 不得不冲入聊天室劝说玩家——“你们选吧,要么你们离开,我把《毁灭战士》传上去,要么就不传了。”半小时后,最后一个字节抵达服务器的瞬间,上万名玩家涌向了它,威斯康星大学的网络瘫痪了……当时的互联网还未曾见识过这样的场面。

从《指挥官基恩》到《德军总部 3D》再到《毁灭战士》以及《雷神之锤》,Carmack 他们深谙共享软件的网络之道:先上传,让玩家们来下载它,然后他们会再把它不断地传播出去,这比其他花费昂贵的分发方式好太多了,玩家们相当于帮了 id 一个大忙。

⒋If you don’t have functional English, learn it.

Carmack 分享的那些对其他黑客来说有趣 和/或 有用的内容,除了游戏和代码,还有他自身的经验和想法。其中最有名的是 .plan 文件 ,那是 UNIX 用户根目录中用来保存用户信息和近期计划任务的文件,finger 程序 可以用来显示指定用户的 .plan 文件。id 最初正是通过发布 .plan 文件来跟玩家交流的。从1996年到2010年,仅 Carmack 一个人就发布了至少394个 .plan 文件,这是能够向 Carmack 学习的第一手资料来源,详细存档可见 http://floodyberry.com/carmack/plan.html 。

另外,从1999年到2008年,Carmack 一直活跃于科技网站 Slashdot ,当时他发布的101篇信息存档详见 http://floodyberry.com/carmack/slashdot.html 。

如果你还对 Carmack 发表过的主题演讲有兴趣的话,这里 有一部分存档。这里 还有他去年作为 CTO 在 Oculus Connect 开发者大会的 Keynote 视频。

对于他接受过的采访,这里 也有一部分存档。

这里 是一个专门整理 Carmack 相关资料并进行存档的 Github 项目,这里 是他原来的官方 Blog 。同 Linus Torvalds 管理全球范围的 Linux 开发者社区的例子一样,John Carmack 对技术的思考和表达细节同样值得我们学习。

另外就是社会地位与个人风格之类。

Write open-source software.
Carmack 贡献过的开源项目有 Mac OS X Server 的 X 窗口系统,以及 Linux 的 OpenGL 驱动——Utah GLX 项目。另外自然就是 id Software 所开源的游戏及引擎。

id Software 的开源项目详见 https://github.com/id-Software ,其中 Carmack 开发的技术包括:

Adaptive Tile Refresh(用于 Commander Keen)

Raycasting(用于 Hovertank 3-D, Catacomb 3-D 和 Wolfenstein 3-D)

Binary Space Partitioning(用于 Doom 及 Quake 系列)

Surface caching(用于 Quake 系列)

Carmack’s reverse(用于 Doom 3 阴影体的一个算法)

MegaTexture(用于 Rage)

这是最重要也是最传统的黑客之道。

Read science fiction.
除了科幻电影、漫画以及游戏,Carmack 从小读的还有《魔戒》这样的奇幻作品,不过他更喜欢的还是做《龙与地下城》城主,创作属于他自己的世界。

Train in a martial-arts form.
Carmack 练习过举重、柔道、摔跤。这一点没有直接相关的影响,但对他日后的自律以及控制力都是很好的锻炼。

改装汽车
这是他的另一项重要爱好。Carmack 把他第二个游戏《鬼魂》(Wraith)赚的2000美元用于改装他当时那辆棕色的美洲豹(MGB)。

后来《德军总部 3D》的大卖让22岁的 Carmack 拥有了他的第一辆法拉利,一辆价值70000美元的樱桃红色328型跑车——只不过是又一台可以用来钻研的机器:在机车老手鲍勃·诺伍德(Bob Norwood)的帮助下,他们为引擎加上增压涡轮,最终15000美元换来140英里每小时的速度,让 Carmack 感到无比开心。

《毁灭战士》的大卖为 Carmack 带来第二辆法拉利,标价90000美元的特斯坦罗萨(Testarossa),这次加装的是一对涡轮增压系统,让功率达到了原来的三倍——600马力。这段经历对于他在 Quake3 开发阶段重拾对火箭的爱好至关重要。

然后,火箭黑客

在了解到黒客们、工程师们、爱好者们正在建造大型的高能运载火箭准备进入外太空时,Carmack 买了数千美元的相关书籍和文章开始自学,这便是“犰狳航天”(Armadillo Aerospace)的起点。

爱好者们的目标是一千万美元的“X大奖”——把三名乘客送到外太空。可惜犰狳航天的首次“X大奖”比赛即败给由保罗·艾伦所赞助的太空船一号;但是在后来 NASA 的登月挑战赛(Lunar Lander Challenge)中,Carmack 他们于2008年10月获得35万美元的 Level 1第一名,并于2009年9月获得50万美元的 Level 2 第二名。

2010年到2011年,犰狳航天开发了 Super Mod 垂直起降火箭作为 NASA Flight Opportunities Program 的可复用亚轨道运载工具的一员进行试验。2010年后期,犰狳航天开始开发 Super Mod 的大型版本 STIG。不比 SpaceX 蚱蜢火箭的幸运,STIG 火箭在2012年1月的第二次发射以及2013年1月的第三次发射均未达到预期目的。同时整个项目已耗尽了 Carmack 个人投资的数百万美元。

2013年8月,伴随 STIG-B 的失败, Carmack 宣布犰狳航天进入休眠模式,并积极寻求外部投资者。(同月,他以 CTO 身份进入 Oculus VR,并于11月底最终从 id 离职。)

到2014年5月,犰狳航天的几名前员工成立了一个新公司——Exos Aerospace,为的是把犰狳航天的研究成果实现成可复用的商业性航天器,他们仍然使用原来犰狳航天位于德州的研究设施。

最后,ESR 所引用的那首禅诗,同样适用于我们来看待 John Carmack 这样一个技术人的象征。

To follow the path:

look to the master,

follow the master,

walk with the master,

see through the master,

become the master.

 

 

电科技(www.diankeji.com)是一家专注于全球TMT行业的领先资讯媒体。

作为今日头条青云计划、百家号百+计划获得者,2019百度数码年度作者、百家号科技领域最具人气作者、2019搜狗科技文化作者、2021百家号季度影响力创作者,曾荣获2013搜狐最佳行业媒体人、2015中国新媒体创业大赛北京赛季军、 2015年度光芒体验大奖、2015中国新媒体创业大赛总决赛季军、2018百度动态年度实力红人等诸多大奖。

投稿、商务合作请联络微信公众号

声明:本站原创文章文字版权归电科技所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表电科技立场,图文版权归原作者所有。如有侵权,请联系我们删除。

//59087780b049bbb54ef4ba547ea51910