第106章 捡到一个亿(2/2)
陈帆也反应过来,“大家一起努力,成为华国最好的电脑游戏公司。”
刘超最后反应过来,只好设了一个最高的目标,“大家一起努力,做出世界最好的电脑游戏。”
王诺岳被逗乐了,他加入游戏行业,也属于赶鸭子上架。技术上,自己就是个半吊子,张杰能算四分之一,刘超不知道能不能算八分之一。开发一下角色扮演游戏,讲讲故事,设计一下剧情内容还行。要像欧美游戏公司一样,开发高成本、高体量、高质量的3a大作,真的是力有不逮。就算三十年后,华国有最赚钱的游戏公司,都没有公认的3a大作。
想到3a大作,王诺岳不禁往窗外望去,外面是深沉的天空。今天是1991年1月26日。在他的记忆里,几天之后的1991年2月1日,游戏公司idsoftware成立,1991年2月8日,暴雪(blizzardentertainment)在加州成立。这都是改变电脑游戏产业的公司。
“等一下”,王诺岳突然举起了手,示意大家安静下来。他觉得自己好像忽略了一件重要的事。
“你们下班吧,我要想一点事情。”王诺岳说道,然后转身走进了班公室,把门关上。
外面的人面面相觑,高宏杰轻声说得,“看来老板是又什么想法了。大家下班吧。”
*
王诺岳在自己的办公室里,竭力的挖掘脑海中的一闪即逝的思绪。
“《星际争霸》、《暗黑破坏神》、《魔兽争霸》、《魔兽世界》、战网?不,这都不是刚才的思绪。“王诺岳摇摇头,排除掉了暴雪。
”那就是idsoftware了。《德军总部3d》、《毁灭战士》(doom)、《雷神之锤》(quake)?“
突然间,王诺岳的心跳猛然加快:”传奇程序员约翰·卡马克(mackii)”
“平方根倒数速算法!”他抓住了刚才一闪即逝的思绪。这一刻,一种巨大的满足感和幸福感一下子充满他的心。
“让我静静。让我把思绪好好理一下。”王诺岳对自己说道。
idsoftware是一家成功的游戏公司,这家公司的成功,有一半要归功于约翰·卡马克,一个天才的程序员。他最出色的技术是计算机图像领域。他在doom上第一次使用了二叉树分割技术,在quake中第一次使用表面缓存技术,在doom3里面使用了“卡马克反转”(即shadowvolume的z-fail方法,这并不是卡马克首创,但他是独立研究出来)。然后,就是这个平方根倒数速算法。
平方根倒数速算法并不是卡马克发明的,它的发明者,在三十年后也没清楚。但它的重要性和实用性,却毫无疑问。
王诺岳想起了梦境中,《雷神之锤》能称得上流畅的画面,和同时期其他游戏一帧一帧的画面。而《雷神之锤》3d引擎性能远超同时期的其他游戏引擎,一个主要原因就是采用了这个算法。
在处理坐标转换与光源的专用硬件设备出现前,3d图形程序的光照和投影效果需要使用正规化向量来实现,而计算正规化向量,则要用到浮点数的平方根倒数。因为每秒都需做上百万次平方根倒数运算,这导致软件的计算速度相当之慢。而这个算法,能将计算速度提高4倍。
王诺岳继续清理自己的思路,当2005年《雷神之锤》的原代码在网上发布的时候,这短短十行的程序引起了轰动。因为它减少了求平方根倒数时浮点运算操作带来的巨大的运算耗费。虽然王诺岳的主攻方向不是计算机图形学领域,可也跟风看了一下,大致的算法还是记得的。
这个算法最关键的地方,是接收一个32位带符号浮点数,然后将之作为一个32位整数看待,以将其向右进行一次逻辑移位的方式将之取半,并用十六进制“魔术数字”减之,如此即可得对输入的浮点数的平方根倒数的首次近似值;而后重新将其作为浮点数,以牛顿法反复迭代,以求出更精确的近似值,直至求出匹配精确度要求的近似值。
最初人们猜测是卡马克写下了这段代码,但他否定了这个观点,并猜测是优化雷神之锤的资深汇编程序员terjemathisen写下了这段代码;而mathisen表示,在1990年代初,他只曾作过类似的实现,确切来说这段代码亦非他所作。
不过,王诺岳没记住这个魔术数字。但没关系,他记得大致范围,为了价值几亿美元的3d游戏引擎,他可以组织一个小组,专门来寻找这个魔术数字。