《程序员修炼之道》和《DOOM启示录》

记得我上初中的时候,兴高采烈地买了一本《人性的弱点》,结果那本书被我看了几页就扔一边了----实在看不下去。

我对这种“告诉你什么是对的,却不告诉你为什么”的书超级反感,《程序员修炼之道》这种书,我一般只会去看它里面讲的新奇的定义,对于其内容,我是万万不敢恭维的,或许是因为我还没有写过真正的能挣钱的软件项目的原因吧。

等我够资格了再补《程序员修炼之道》里面的内容。

相应的,想起程序员修炼之道,我会联想起一个并不广为人知的书,《DOOM启示录》。或许它并不像前者那样被很多知名的人推荐,但它对于我来说,指引着我的程序员修炼之路。

不知道以前在哪领悟到的,要想写读完一本书的收获的话,最好向一个人推荐这本书,这样的话,你得到的收获会比只写感想大得多。

现在我向你推荐这本书,如果你想读来试试的话,可以去我的百度网盘分享下载下来看,密码是1024。


精彩片段:

“你带了阿司匹林没?”卡马克向朋友问道,他们正走进拉斯维加斯的一间赌场。

“你头疼?”

“还没,”卡马克说:“但马上就要疼了。”

这是1998年2月8日,卡马克就要对他的脑力进行一次挑战:在二十一点游戏中记牌。这是他的最新爱好。“作为一个略懂概率统计学,并从不相信运气、命运、因缘、上帝(或其他神)的人,惟一能使我感兴趣的赌博游戏就是二十一点。”卡马克在一份计划文件里写道:“玩二十一点可以算做是一种对自控力的考验,知道如何玩以及该如何记牌很简单,困难的地方在于,你必须从头到尾都表现得像个机器人一样,而不是屈从于所谓的‘直觉’。”在出发之前,卡马克进行了一些针对性训练,就像他学习其他事物一样,他先是买了一些书来看,然后在计算机上写出程序--当然,这次不是什么三维引擎,而是一个二十一点游戏的模拟程序。

研究工作很奏效,卡马克赢了两万美元,他随后把这笔钱捐给了自由软件基金会(Free Software Foundation):一个以“黒客伦理”为准则,在这个物欲世界里坚持着自己操守的组织。“我没想靠二十一点为生,”卡马克从赌城回来之后写道:“所以我不怎么担心被从赌场里劝退。”没过多久,在他第二次前往拉斯维加斯时,他体验到了这种经历:几个身着黑装的彪形大汉围到他身边,告诉他:“如果你不玩二十一点,而改玩其他游戏的话,我们将不胜感激。”

同桌的人们简直难以置信。“他们怎么能这样?”一个女人问道。

“他们认为我在记牌。”卡马克告诉她。

“他们认为你能记住所有这些牌?”

“嗯,差不多是这个意思。”

“哇噢,你是做什么的?”

“我是个计算机程序员。”说完他就被护送着走出赌场。


本书内容:

这本书是关于两位”约翰“的传记-----约翰·卡马克和约翰·罗梅洛。这两位都是热爱游戏,精通游戏并且乐意创造游戏的天才。本书讲了以他们两人为核心的团队成员各有特长,各司其职,并最终在制造游戏(Doom和Quake)的历程上产生矛盾并最终和解的故事。


我相信,大多数人和我一样,很崇拜卡神(他可是自创了游戏引擎!并且现在还健在。好像在弄VR还有造火箭玩儿,反正人家已经功成身退了)。

以下是部分片段摘取:

1、这个从一岁起就戴上眼镜,长着一头凌乱金发的瘦小男孩在学校里很快就显示出了与众不同。二年级的时候,只有七岁的他几乎在所有标准化测验里都得到了满分,这相当于九年级的水平。约翰还养成了一种很独特的口吃习惯:在每句话后面加上简短的类似机器人那样的嗡嗡声,就像一台计算机在处理数据一样:“12乘以12等于144……嗯嗯。”

2、在家的时候,约翰·卡马克像他的父母一样贪婪地阅读各种书籍,他喜欢托尔金的《魔戒》,或者类似那样的奇幻小说。他成打成打地看漫画书,他还喜欢科幻电影,但最让他觉得有意思的还是《龙与地下城》。乐于创作更甚于参与的他很快就成为了一个独特而且强大的地下城主,不像其他城主那样主要依赖于规则手册里刻板的规定,他抛开那些结构,创作了他自己的世界。每天放学后,他就把自己关在小屋里,埋头于成堆的图纸和表格中。那时他在念三年级。

3、在这里,卡马克遇到了一些和他一样对苹果机着迷的聪明孩子。他们自学BASIC编程,他们一起玩游戏,很快他们就不满足于这种简单的玩乐,他们开始研究并动手修改游戏。一次,卡马克找到了他在《创世纪》里角色所对应的代码,他修改了那一段,给自己增加了一些额外的能力,这是他第一次体会到凭空创造东西的乐趣。而且,作为一名程序员,他不需要依赖于其他人,只要他的代码逻辑正确表述了他定义的规则,它就会工作得很好,一切都那么合理。(六年级)

(ps:我真的遇到过这类小天才程序员,还在上初中就能做出来我现在一个大二生都做不出来的软件,人家还贴心地把源代码放到了github上。。。

4、1988年秋天,18岁的卡马克很不情愿地在堪萨斯大学报了名,他选修的课程全都是计算机。他在学校的日子过得很是凄凉,他和其他学生没有什么来往,也不参加什么聚会和联谊活动,更糟糕的是那些课程,全都是考死记硬背的能力,没有挑战,没有创造性,在卡马克看来,这不只是无趣,这是一种侮辱。卡马克在一次测验的试卷背后给教授写道:“为什么你不能给个项目让我们来做?你要我做什么我都能完成!”在忍受了两个学期之后,他退学了。

——————毕业之后————————

5、在编程方面,卡马克几乎是无师自通。大一还没读完,他编写的一些小游戏就被不少软件公司买走,他本人也成为了几家软件公司的兼职程序员,并逐渐在游戏软件领域小有名气。

6、坦白地说,卡马克主要是一名技术天才,id公司出品的每一款游戏都是围绕他所编写的引擎制作而成的,卡马克不断把引擎技术推向新的高度。

7、卡马克觉得他可以做得更好。在他看来,飞行模拟类的三维游戏实在太慢了,繁复的图像让玩家们感觉自己像是一只在空中飞行的蜗牛。他和id的其他人都更偏爱类似街机的快节奏动作游戏,譬如《防御者》、《行星撞击》、《金手套》,在其他人忙于《拯救罗瓦》和《鬼屋里的戴夫》时,卡马克就开始尝试去做这没有人做过的东西:快节奏的三维动作游戏。

8、卡马克现在可以抽空出来继续研究三维主视角设计游戏了。最后的进展来自于他从罗梅洛口中听到的技术,这也是他和罗梅洛这对拍档互补互助的一个方面:卡马克精于图像编程,但他对游戏制作圈子里发生的事情没有兴趣,他从来不算是一个真正的玩家,他只是制作游戏,就像他只做《龙与地下城》的城主,但从不参与探险一样;罗梅洛恰好相反,他关注所有的事情、所有的游戏、所有的制作者,就是这其中的一个制作者,告诉了他这个新的概念:“材质贴图”(texture mapping)。

9、Quake逼着他彻底另起炉灶,几乎没有任何Doom里的技术可以沿用到Quake中来。Doom通过一些网络编程的小技巧来支持四个玩家对战,但Quake要支持十六个玩家通过因特网进入到同一个世界;Doom并不是真三维的视图,它是局促简陋的所谓“二点五维”,而Quake要展现一个真三维的世界,就像现实世界里一样,玩家的视线将可以转向任意角度,所有物品--包括玩家本身--都不再是二维动画,而是三维的多边形。这个虚拟世界将更加令人信服。但让人气馁的是,卡马克的引擎无法绘制出一个完整的世界,或者用更专业的说法,一个完整的可视集合。Quake的世界里布满了缝隙和漏洞,当卡马克穿行于一条过道中时,他只会失望地发现,过道的尽头不是期望中的墙壁,而是一片蓝色的虚空。它无处不在:地面上、墙上、天花板上,到处是蓝色的虚空。他的虚拟世界千疮百孔。卡马克的思维完全陷入其中,他假想着各种几何体如何依照他的指令移动、旋转,他要把它们分解开,调整,再组装,再分解……,哪怕他在凌晨四点蹒跚着走进家门时,这些几何体仍在他脑海里飘来飘去、飘来飘去、没有尽头。同龄人会梦到一对男女在屋里的关系,而卡马克只会梦到一对多边形在三维空间中的关系。一天清晨,他坐在屋里,看着编码后的指令沿手臂传送,指导着它如何抬起、伸出、收回,他觉得奇怪,现实生活里手臂不是这样工作的呀,这肯定是个怪异的梦--他忽然惊醒,一身冷汗。他被困在了Quake的世界里,无处可逃,哪怕是在睡梦中。(orz)


经典语录,自己体会:

1、“由于摩尔定律的规律,某个时间点上要极其聪明的图形程序员才可以做出来的东西,在若干年之后只要能力还可以的程序员就能复制出来。”

2、“游戏的剧情如同黄片的情节,有是理所当然,没有无关紧要。”


我之所言只有九牛一毛,带你除窥了《DOOM启示录》中的部分内容,想看的话点击上文链接自己去下载吧。

ps:什么是程序员修炼之道?程序员的路就是别人告诉你什么是对的你就跟个傻子一样的相信?真正的程序员修炼之道应该是有一个颠覆你三观的人用他自己的故事告诉你,"呸,垃圾!”

posted @ 2022-01-10 12:22  zhuangzhongxu  阅读(403)  评论(0)    收藏  举报