约翰·卡马克和他的id Software
John Carmack
1992年,id做出了《德军总部》,将JC在90年实现的平滑滚动效果利用到极致,逼真到普通用户第一次在PC上面模拟真实的世界。
1995年,id发布《DOOM》,让电脑进入3D世界,DOOM勾画出了从来没有过的逼真场景,让玩家相信他就在《DOOM》的世界中。同时 《doom》是第一款支持连线的游戏。之后的《DOOM2》、《Ultimate DOOM》、《毁灭公爵》等游戏都是基于这个引擎,从此个人电脑上有了 虚拟的世界。
1996年,id发布《Quake》,让电脑第一次运行真正的3维世界,将逼真性再上一层。并且首先支持了3D加速卡。
1997年,id发布《Quake II》,实现了动态的光线,个人用户从而第一次在自己电脑上可以看到同样物体动态效果下的不同颜色。而且首先支持 OpenGL标准和完全3D加速,从此游戏画面可以精确到用像素来填充了。后来基于Q2引擎开发的《Half-life》、《Conter- Stirke》、《DOD胜利之日》都大红大紫。
1999年,id发布《Quake III Arena》,使用了JC的 Trinity(三位元)引擎,从而使电脑游戏可以几乎无限的绘制多边形并加以填充——因为JC实现了“圆”,《QuakeIII》中,人们第一次在3D 世界中看到了真正圆形的东西。而后来发布的《重返德军总部》和《使命召唤》都是基于《Quake3》的Trinity引擎编写的。从此,个人电脑上可以几 乎乱真的渲染出3D的画面。
每次id发布游戏,都能让3D游戏上一个台阶,都能让普通用户电脑上显示的3D画面向真实的世界跨进一大步。每 次JC写出他的引擎,都能在3D界保持数年的领先,让各大硬件厂商追逐他的标准。2004年8月,id正式对外发布了《DOOM3》,这是id有史以来开 发周期最长的游戏,从2000年立项,用了足足4年才开发完成。
出生于德克萨斯州的约翰·卡马克与许多电脑天才一样,从小就对电脑和程 序设计充满狂热,七年级时的卡马克对《创世纪》和《巫术》等游戏痴迷不已,他刚开始制作的几个基于Apple II的小游戏都在模仿《创世纪》。天才们的 另一个相同点是绝对不会循规蹈矩,卡马克中途放弃了在密苏里大学就读计算机科学专业的机会,开始了自己艰辛的创业之路,为了获取Softdisk公司的程 序员职位,他在雪地中徒步走了三英里才得以赶到招聘地点。这间汇聚了众多程序设计精英的公司一如当年的“仙童”,约翰•卡马克在这里 结识了约翰•罗梅洛,汤姆•豪尔等意气相投的好友,随后他们一同返回德克萨斯建立了自己的游戏公司—— id Software。
卡马克是一个天才的程序设计师,仅仅依靠自学和钻研掌握了高深的程序设计技巧,他甚至相信可以用编程完成一 切。他腰缠万贯,拥有20多辆豪华跑车,却仍然如同普通员工一样每每加班到深夜。如果说,有一个人能够引导整个行业的技术潮流,让所有人跟随着他的脚步, 按照他指引的方向前进,那么这个人就是约翰·卡马克。
盛名之下的id,目前仅仅拥有13名固定员工,闪耀着黑曜石光辉的办公大楼下的停 车场里停泊着13辆法拉利跑车,公司的每一名成员都是令无数人眼红的百万富翁,很多人因此忘记了,他们也是一群追逐游戏制作领域最尖端技术的天才设计师。 独力开发的精良图像引擎已经成为id的一项标志和衡量主流硬件配置的参照物,从初试锋芒的《Wolf3D》到震惊世界的《DOOM》,再到延续id精神的 《Quake》系列,从1990年2月1日公司建立之日起,id始终扮演着一位为追求速度与技术飞跃而无所畏惧的勇猛斗士。
约翰·卡马克和他的id Software的更多相关文章
- 卡马克揭开VR延迟背后的真相
原文:http://oculusrift-blog.com/john-carmacks-message-of-latency/682/ 延迟是OculusVR所面对的最大挑战之一, 它不仅会分散玩家 ...
- sqrt开平方算法的尝试,是的看了卡马克大叔的代码,我来试试用C#写个0x5f3759df和0x5f375a86跟System.Math.Sqrt到底哪个更强
今天笔试遇到一个代码题,要求写一个开平方算法,回来发现了雷神之锤里的一段神代码: float Q_rsqrt( float number ) { long i; float x2, y; const ...
- 转:一个Sqrt函数引发的血案
转自:http://www.cnblogs.com/pkuoliver/archive/2010/10/06/1844725.html 源码下载地址:http://diducoder.com/sotr ...
- [转载]求平方根sqrt()函数的底层算法效率问题
我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来实现这个经常调用的函数呢? 虽然 ...
- Sqrt函数高效实现
转自一个Sqrt函数引发的血案 我们平时经常会有一些数据运算的操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现的?就拿最常用的sqrt函数来说吧,系统怎么来 ...
- C/C++ 开源库及示例代码
C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...
- 一个Sqrt函数引发的血案(转)
作者: 码农1946 来源: 博客园 发布时间: 2013-10-09 11:37 阅读: 4556 次 推荐: 41 原文链接 [收藏] 好吧,我承认我标题党了,不过既然你来了, ...
- 一个Sqrt谋杀触发功能
我们平时常常会有一些数据运算的操作,须要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是怎样实现的?就拿最常常使用的sqrt函数来说吧.系统怎么来实现这个常常调用的函数呢? ...
- 牛顿迭代法(Newton's Method)
牛顿迭代法(Newton's Method) 简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出.但是,这一方法在牛顿生前并未公开发表. 牛顿法的作用是使用迭代的方法来求解函数方程的根. ...
随机推荐
- 电脑CPU开机上电后的第一条指令
结合上面的文章,CPU上电后第一条指令是通过CS:IP来指定的,CPU厂家会给其初始值,对于386处理器来说,CPU第一条指令地址是 0xFFFFFFF0 这里会有一个问题,CPU怎么能一上来就去0x ...
- JVM内存模型二
Java 中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,而每个线程又单独的有自己的工作内存,当线程与内存区域进行交互时,数据从主存拷贝到工作内存,进而交 ...
- List,Set和Map详解及其区别和他们分别适用的场景
Java中的集合包括三大类,它们是Set(集).List(列表)和Map(映射),它们都处于java.util包中,Set.List和Map都是接口,它们有各自的实现类.Set的实现类主要有HashS ...
- 【译】关于vertical-align你应知道的一切
原文地址:Vertical-Align: All You Need To Know 通常我们需要垂直对齐并排的元素. CSS提供了一些可实现的方法:有时我用浮动float来解决,有时用position ...
- 【Java并发编程】之七:使用synchronized获取互斥锁的几点说明
在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确 ...
- API接口测试中需要注意的地方
1.检查接口返回的数据是否与预期结果一致. 2.检查接口的容错性,假如传递数据的类型错误时是否可以处理.例如是支持整数,传递的是小数或字符串呢? 3.接口参数的边界值.例如,传递的参数足够大或为负数时 ...
- MT【130】Heilbronn问题
(清华THUSSAT,多选题) 平面上 4 个不同点 \(P_1,P_2,P_3,P_4\),在每两个点之间连接线段得到 6 条线段. 记 \[L=\max_{1\leq i<j\leq 4}| ...
- 【XSY2753】LCM
Description 给你\(n,k\),要你选一些互不相同的正整数,满足这些数的lcm为\(n\),且这些数的和为\(k\)的倍数. 求选择的方案数.对\(232792561\)取模. \(n\l ...
- JAVA中properties基本用法
转载 源地址不详 java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式, ...
- D. Dog Show 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest, qualification stage (Online Mirror, ACM-ICPC Rules, Teams Preferred)
http://codeforces.com/contest/847/problem/D 巧妙的贪心 仔细琢磨... 像凸包里的处理 #include <cstdio> #include & ...