约翰·卡马克,是就算是水字数也要讲一下的人物。 当年卡马克的江湖地位,就同今天的埃隆·马斯克一样风骚,属于那个时代的科技英雄,无数人心中的“神”。 如果你是一位70后、80后的游戏玩家,应该很大概率听过卡马克的大名。 如果你是90后、00后的游戏玩家,可能对这个名字一点感觉也没有,但只要你玩过任何一款第一人称射击游戏,就相当于是他的用户。 因为几乎所有的第一人称射击游戏的底层代码中,都运行着卡马克当年写下的开源引擎代码。 这也就是我们为什么称他为“f游戏之父”的原因。。 卡马克的经历可以说贯穿了计算机图形学的发展。 计算机图形学这个概念听着挺抽象的。 简单来说,就是通过各种数学计算在电子屏幕上随心所欲地显示我们需要的图像,这个概念具有很强的“交互”属性,所以自然而然和游戏密不可分。 作为与数学计算相生相伴的娱乐方式,游戏画面从一开始颜色单一的几何图形,过渡到了生动形象的像素角色,平台也从高冷的实验室,过渡到街机,主机,个人pc,直至现在的手机。 小时候的卡马克,在父母眼中就是个爱玩游戏的孩子。 与其说对“玩游戏”感兴趣,小卡马克更感兴趣的是为什么像素小人会在屏幕上动来动去。 于是他自学了basic编程,通过制作游戏来逐渐学习计算机图形学相关的知识。 卡马克在少年时代就对程序展现了极高的天赋和热爱, 他读初中的时候,为了从学校弄台苹果2型电脑,用铝热剂和凡士林调制了一种黏性物质把窗户给融给了,结果被抓去少管所服刑一年 这一行为,让他喜提“曾经锒铛入狱的it名人”称号,排在第一个的微软的比尔·盖茨,驾车超速。 80年代末期,游戏市场完全是主机游戏的天下,几乎没有面向游戏的图形加速硬件可以兼容pc。pc就是商业办公的设备,和娱乐完全无关。 为了解决这个问题,卡马克利用20世纪70年代出现的,用于滚动卫星照片等大型图像的原理,编写出名为ega的增强型图形适配器。这就是3d图形加速卡的雏形的pc显示技术。 这种技术可以提供存储一个相对高分辨率的屏幕图像,但也可以变通成,同时存储多个低分辨率的图像。 这里说的高分辨率,在当时也就是300x200像素。和现在比,这比渣还渣。 接下来,他又设计出屏幕刷新技术以提高游戏图形显示的速度。 卡马克不按重新渲染整幅画面的常规逻辑出牌,而是将每帧的中心位置保留到下一帧。简单来说,玩家向任意方向移动一格的时候只需要重渲中心位置外面的部分就行了,里面的部分接着用。 如此一来显存里存的东西变少,运算压力也更小。 在此基础上,卡马克捣鼓了几个晚上,居然在pc上复刻了带有卷轴效果的“盗版”《超级马力欧》。用现在的话说,这是做了游戏移植。 随后,这项pc上卷轴技术就被卡马克开源,他放弃了专利。这货在后面开源了很多技术,他是开源倡导者。 卡马克对技术的追求远不止于此,游戏显然是技术最好的承载,而他的目标就是构建一个栩栩如生的虚拟世界。 这就进入到卡马克最擅长的领域,就是在有限的资源下,通过软件算法来实现硬件做不到的事情。 他想要做的是让人血脉偾张、快节奏的射击游戏,最重要的就是高帧率了,如果按照常规的技术路线在pc上实现,那游戏得卡成ppt。 他当时萌生了一个想法,通过“光线投射算法”(raycastg)的2d成像技术,来模拟出3d空间纵深的视觉效果。 这个算法有点类似于蝙蝠的回声定位。因为角色的视野可能只有90°,还有270°压根是看不到的,或者房间内如果有前面的物体遮挡了后面的物体,后面的压根就没必要做计算。 那如果屏幕横向上有320个像素,就从角色的视野中发射出320道射线,只有被射线击中的物体才会被计算和渲染。 属于“先做判断、再做计算”的路子。 这时候,他已经离开原来兼职的公司,以创始人的身份,创建了idfare公司。 “光线投射算法”实际上并非由卡马克首创,但将这种前沿技术应用得如此接地气的,卡马克绝对是第一批贡献者。 有了新的“伪3d”图形引擎打底子,接下来需要的就是一款惊世骇俗的商业游戏。本质上是2d游戏的《德军总部3d》,便是在这样的思路下诞生。 这款游戏在当时颠覆了人们的认知,要知道,那时候的主流还是2d游戏,突然玩到了一款“3d”游戏,不亚于从480p的马赛克渣画质一步跳到4k超高清的震撼。凭借这款游戏,idfare公司工作室也大赚了一笔。 但他们的下一款游戏才更是重量级,因为它的名字叫《doo》。 为了制作更真实的“伪3d”游戏,卡马克再次改进了他的引擎,不仅补全了原本一笔带过的天花板和地面,还能让角色朝上或者朝下有视角的变化,甚至地形上也有了高低变化。 为此,卡马克重写了底层架构,采用了一种叫做“二叉空间分割(bsp)”的核心算法。 二叉空间分割,太复杂了,感兴趣的同学就自己去了解一下吧。 这时的引擎本质上还是2d,可以说是将当时pc的性能压榨到了极限。 《doo》这个游戏火到什么程度呢?由于游戏太好玩,好多人都在公司电脑上偷偷下载了游戏偷摸玩,以至于许多公司明令禁止在电脑上下载《doo》 除此之外,《doo》最牛逼的地方在于它支持玩家间的联网对战,也就是著名的“死亡竞赛”模式,让玩家们靠技术互相厮杀,瞬间点燃了整个游戏的讨论热情,相关的比赛也层出不穷,也就是说doo实际上还是电子竞技的鼻祖。 卡马克是电竞祖师爷的说法,就是由此而来。 随着《doo》的大卖,id的下一款真·3d射击游戏《ake雷神之锤》也开始进入开发阶段。 卡马克去邀请了自己的童年偶像迈尔克·亚伯拉什来一起开发。这位可以说是计算机图形学泰山北斗级的人物,当时正在微软负责开发dosnt。 据说这事把盖茨气得直接吹了一瓶二锅头。 卡马克在开发中有很多神来之笔,比如“倒数平方根”的速算法。 对于计算机来说,除法和开根号是老大难问题,但卡马克引入了一个神奇的数字0x5f3759df,把对于cpu异常苦手的除法和开根号运算变成了简单的乘法运算,以很小的精度为代价,运算速度直接快了4倍。 甚至卡马克使用这串数字时自己都是懵逼的,索性直接在后面注释了一句“hatthefuck”。 除了开发游戏,卡马克还有一个爱好,就是“造火箭”,并且在nasa举办的竞赛中两度获奖。 说起造火箭,必须出现钢铁侠马斯克,但就在马斯克向他抛出橄榄枝的时候,卡马克却说:“你玩蛋去吧,我已经找到了新的乐趣。” 2010年之后,随着vr技术逐渐冒头,“摸鱼”多年的卡马克找到了新的目标,因为vr和他的理想不谋而合,都是创造一个远比3d游戏更加沉浸、更加真实的虚拟世界。 卡马克加入ocrift团队,并且担任首席技术官一职,就是给fb的扎克伯格打工。不过他干了一年多就跑了。 他现在重新创业,成立了一家研究通用人工智能的公司,并获得了2000万美元的融资。 卡马克称自己并不缺钱,完全可以自己开一张2000万美元的支票,但为了让自己在创业这件事上下定决心并更加自律,他才选择花投资人的钱。 来,大家都学习一下这种处处为投资人考虑的精神,非常值得学习。 另外,补充一点,据说卡马克是个妻管严。因为造火箭那事,是她老婆不愿意玩了。 “我是看到机会才做此决定的,花了大概250万美元却未能如愿,我当然很失望,虽然我还能张罗200万美元再试一次,但明智的老婆大人阻止了我。” 证据就是这句话,我终于找到了和卡马克的共同点。 最后用卡马克的话结尾。 “在信息时代,客观障碍已不复存在,所谓障碍都是主观上的。如果你想动手开发什么全新的技术,你不需要几百万美元的资金,你只需要在冰箱里放满比萨和可乐,再有一台便宜的计算机,和为之献身的决心。我们在地板上睡过,我们从河水中蹚过。” 卡马克的话不行,要用姜安的话结尾。 “不是天才的人别听卡马克瞎扯,他这么说因为他是天才。”