图形程序开发人员指南前言
我在学校读书的日寸候开始在AppleⅡ计算机上编程,几乎所有早期的工二作都基于Apple平台。毕业之后,我很快发现80年代后期Apple II工作举步艰难,于是我不得不迅速转入Intel的PC环境。过去我在Apple上花—了好些年得到的知识,在PC机上不需要几个月就可以,学到。作为一名程序员取得收入,最大的好处就是能够购买所有想要的书和杂志。我买了许多。我处在一个一无所知的领域,于是我阅读在我身边所能找到的所有东西,时事报导、社论甚至广告都有我可以吸取的信息。
早些时候,John Romero给了我—些Michael Abrash的文章,这些都是好文章:图形硬件、代码优化、雄心勃勃的开发者的知识和聪明才智,它们读起来更是轻松愉快。有很长一段时间,我到各个书店去寻找Michael的第一本书《Zen of Assembly Language》,但—直没有找到,只好将就利用我所能发掘到的他的文章。从那些文章里,我学到了EGA视频控制不为人知的秘密,并且开发成几个精致的技巧,有几个成为Commander Keen系列游戏的基础。正是它们导致了id软件公司的产生。
—两年后,就是Wolfenstein—3D开发出来以后,我第—次“碰到”Michael,当时我正在M&T的BBS上在线漫游,这个BBS是Dr.Dobb出版商在Internet火爆起来之前构建的,这时我看见了他发出的邮件。我们交换了email。有好几个月,我们在图形学论坛扮演着领袖二人组的角色,直到Doom游戏占据我的生活。
当Doom引起轰动以后,Michael一个新得到工作的朋友让我们又彼此取得了联系,并且我终于有机会见到Michael。那天我说得嗓子都哑了,我与Michael和他的合作者中感兴趣的人讲述着Doom的所有细节。从那以后,每隔几天我就能收到—封发自Michael的email,或是征求我某个观点的细节,或是讨论将来图形学的发展方向。
最后,我征求他的意见—给他—份在id软件公司的:工作:“只要思考;不要向任何人汇报;有机会整天从一张白纸开始编程。—个编程员做他该作的事情的机会”。但他未答应。但是我一直坚持,一年以后,我终于说服他屈驾来id看一看。当时我正在研制Quake。从Doom到Quake是我们迈出的极大的—步。我知道我该在哪里结束,但我—点也不知道如何到达那里。我试过很多很多的方法,即使是失败了也让我学到了许多东西。—定是我的热情感染了他,因为他接受了这项工作。
于是开始史诗般的编程。数十万行的代码编出来,重编,再重编……。
此刻回想,我感到Quake的许多方面都有遗憾之处, 但那只是—个杰出的人不愿轻易地承认它技术上的成功而已。的确, 一年以后, 我可能会发现Quake中的某些地方有待改进。但现在对我来说,它看起来依然非常好。我们使它引人入胜。我很高兴Michae1在他正在发行的文章中描述了许多Quake的技术,我希望我{门能够教给别人一些。当—个非编程人员听说我允许发行Michael的文章和源代码时,我总见到一幅目瞪口呆的面孔——“你那样做想十什么?”。他们不会明白的。
编程不是一个零和一的游戏,教给你的同行一些东西并不会丢失它们。我与人分享我能做到的一切时觉得很高兴,因为我深深地热爱编程。一辆法拉利小车不过是一种物质享受,但做人最重要的是真诚。
这本书包含了许多最初的文章,正是它们帮助我开始我的编程生涯。对于后面这些文章内容的出版,我希望我所做的努力能为其它人起到同样的铺路石的作用。
id软件公司
John Carmack