三个叛逆的微软程序员,创造了一项伟大的技术,彻底颠覆了游戏行业!

开发 游戏开发
在微软帝国的发展历史上,它多次利用操作系统的优势来击败竞争对手,Office之战、IDE/编译器之战、浏览器之战都是如此。

1995年,微软发布了大名鼎鼎的操作系统Windows 95。

全新的图形化界面,即插即用的功能,便捷的操作,32位抢占式多任务系统,让Windows 95成为个人电脑历史上最重要的产品之一。

图片图片

伴随着10亿美元的营销活动,Windows 95在全世界都引发了轰动,掀起了抢购的热潮。

但是,有一个群体一直在冷眼旁观,他们坚决不愿意把自己的软件移植到Windows95上。

他们就是游戏开发商,他们在前一年发布了无数经典的PC游戏:《Descent》、《DOOM II》、《Heretic》、《Jazz Jackrabbit》、《System Shock》、《UFO:未知敌人》和《魔兽世界:兽人与人类》,只不过,这些游戏统统运行在MS-DOS上。

图片图片

为什么游戏厂商要抛弃Windows平台呢?

1、曼哈顿项目

虽然MS-DOS只支持单任务,但是相比Windows它有个明显的优势:游戏开发者可以直接访问硬件(如显卡、键盘、鼠标、声卡等),游戏可以充分利用硬件的性能,创造出复杂的图形和声音效果。

而“可恶的”Windows,为了强调稳定性和多任务,竟然阻止游戏开发者直接访问硬件,必须通过Windows API才能访问,这一下子就拉低了游戏性能。

所以,很多游戏开发者对Windows望而却步。

当时的微软考虑到了游戏厂商的需求,也提供了一个叫做WinG的图形引擎,但这个引擎非常烂,迪斯尼用它开发了Windows版的《狮子王》,结果频繁蓝屏,愤怒的家长都快把迪斯尼的热线电话打爆了。

无数游戏玩家都在期待在Windows上玩游戏,但是他们都失望了。

Alex St. John决心改变这个状况,他认为:想让Windows成为主流,必须要围绕游戏构建,让人们玩起来。

图片图片

自从加入微软开始,John就以反传统著名,他叛逆和傲慢多次激怒比尔盖茨,好几次差点儿把他解雇。

John在公司内找到了“臭味相投”的Craig Eisler和Eric Engstrom,三人的特点都是会公开蔑视那些不同意他们想法的同事,这种做派被很多同事讨厌。

三人组成了“野兽男孩”小组,开始了一个代号“曼哈顿”的项目,计划开发一个新的软件包,帮助游戏厂商充分利用Windows。

他们并没有得到微软内部的支持,公司管理层认为Windows 95成为游戏平台的可能性很低。但是“野兽男孩”三人组可不管这些,他们决心强力推进:

DOS不是能直接访问硬件吗?那用我这个软件包也能绕过操作系统,把Windows推到一边,清除所有与游戏争夺资源的垃圾,让游戏运行。

软件包许多功能会关闭 Win图形系统,让游戏可以与视频硬件直接对话:

阻止 Windows 将内存分页到硬盘,以便游戏可以以恒定的帧速率运行;

绕过 Windows 消息队列,以便您可以获得实时鼠标输入。

......

这样你就可以真正控制像 Doom 这样的第一人称射击游戏。

在 ATI 等显卡制造商的支持下,新的软件包很快就开发出来:

- DirectDraw:负责2D图形绘制。

- Direct3D:用于处理3D图形。

- DirectSound:用于处理声音。

- DirectInput:用于处理输入设备(如键盘、鼠标、游戏手柄等)。

- DirectPlay:用于处理网络多人游戏。

这些 API 背后的命名理念是允许游戏“直接”访问硬件,在游戏运行时尽量减少 Windows 操作系统的干扰。

当时有一位记者嘲笑了这种命名惯例,把它们称为“DirectX”。

John团队很喜欢这个名称,DirectX一直沿用至今。

因为项目代号“曼哈顿”,和多年前的核武器计划名称一样,最早的DirectX Logo 是这样的,有种核辐射的感觉。

图片图片

2.样板工程

微软拥有了DirectX,接下来就是吸引游戏厂商来使用它。

微软先盯上了id Software,这个只有10几个人的团队开发的《DOOM》在全球极其流行,安装量竟然超过了Windows,Bill Gates一度都想把它收购了。

图片

微软联系了id Software的负责人,也是传奇程序员John Carmack,提出了一个他无法拒绝的条件:

由微软免费将DOS版本的《DOOM》和《DOOM II》移植到Windows,不用id Software出一分钱,将来游戏发行赚的钱也全部归id Software。

在微软的历史上,做出这样“卑微”的举动,是非常少见的。

既然John Carmack可以坐享其成,就把游戏的源码给了微软。

图片图片

移植的工作由加布·纽维尔负责,这也是一位超级大牛,1996年离开微软后创办了Valve,开发了《半条命》,又领导了Steam平台的开发。

图片图片

1996年8月20日,DOOM95正式发布,成为第一款DirectX游戏。

它不仅在Windows上运行效果出众,在多个方面都优于其原始的DOS版本,它能以“高达”640x480 的分辨率渲染游戏,支持 24 个音频通道,并通过图形用户界面简化了多人游戏设置。

图片图片

微软把DOOM95作为宣传Windows的关键资料,比尔盖茨也参与其中,他录制了一段视频,穿着风衣,拿着猎枪,在DOOM的世界里一边开枪杀死各种怪物,一边推销Windows和DirectX。

微软的意思很明确:最牛的游戏都登录Windows平台了,你们在等什么呢?

(画质有点渣,找不到高清版,大家将就着看...)(画质有点渣,找不到高清版,大家将就着看...)

3.争霸之路

但这个时候,大家对DirectX的评价并不高。

虽然DOOM移植成功,但John Carmack一直认为,DirectX是个糟糕的API,“它给使用它的程序员带来了巨大的痛苦和折磨,却没有带来任何显著的优势。”

大家更喜欢另外一个图形API,也是市场的霸主,OpenGL。

图片图片

OpenGL起源于SGI,这家公司知道的人不多了,当年它可是3D图形工作站的领导者,著名的《侏罗纪公园》就是使用SGI的高端工作站渲染的。

图片图片

SGI在图形这一块的实力非常强悍,为了进一步占据市场,SGI把自己的图形API(IRIS GL)做成了开放标准,即OpenGL。

OpenGL有个架构评审委员会,ARB(Architecture Review Board),这里边包括IBM,Intel,Apple,ATI,Nvidia,Sun 等巨头。

有巨头撑腰,在整个90年代,OpenGL人气极盛,尤其是id Software使用 OpenGL 开发的的 Quake Engine ,达到了极为惊人的绘制效果。

图片图片

这也激励着ATI、Nvidia等显卡制造商,必须完整地支持OpenGL,才能满足开发者和玩家的期望。

软件和硬件互相“激励”,达成了螺旋上升的正向循环,可以说是势不可挡。

这时候微软的DirectX杀了进来,它该如何破局呢?

快速迭代!

OpenGL是个开放标准,每次API标准的发展,都要受到到各个软硬件厂商的拉扯,大家为了自己的利益迟迟无法达成共识。

微软虽然也比较官僚,但仅仅需要与 ATI 以及 Nvidia 两家公司合作制定DirectX 的 API 规格,并且拥有最终的关键裁量权,可以快速迭代,快速发展。

就这样,DirectX虽然一直落后,但就像一个打不死的小强,韧性十足,一点点改进,终于赶了上来。

图片图片

2001年发布的DirectX 8成了整个战役的转折点,这个版本引入了两个极为重要的创新:Vertex Shader(顶点着色器) 以及 Pixel Shader(像素着色器),赋予开发者在顶点和像素处理上的完全控制权,推动了 3D 游戏画质和性能的快速提升。

而DirectX 9 的推出,更是让微软取了决定性的胜利,大部分游戏开发者都开始使用DirectX。

到了2011年,就连John Carmack也认为:DirectX比OpenGL更好了。

虽然OpenGL在PC的竞争上落败,但是它的嵌入式版本Open GL ES却抓住了移动互联网的浪潮,被Android 和 iOS采用,随着手机的普及,成为历史上部署最广泛的 3D图形 API。(后来Apple另起炉灶,推出了自家的Metal,OpenGL ES也进化为Vulkan,那是另外一个故事了)。

图片图片

4.小结

在微软帝国的发展历史上,它多次利用操作系统的优势来击败竞争对手,Office之战、IDE/编译器之战、浏览器之战都是如此。

但是DirectX是微软少见的,主要靠自己一刀一枪打下江山的产品,它不但把游戏厂商从MS-DOS迁移到Windows平台,更是击败了霸主OpenGL,这是很难得的。

不过,由于微软错失了移动互联网,DirectX也主要用于Windows和XBox平台,没法扩展到手机端了。真是应了那句古话:世事难料啊!

责任编辑:武晓燕 来源: 码农翻身
相关推荐

2011-06-08 10:24:58

程序员

2023-11-28 09:03:50

架构Instagram

2024-06-03 09:04:30

2015-06-25 09:53:13

JavaScript程序员

2015-06-25 19:23:03

JavaScript程序员

2015-06-25 09:32:55

JavaScript程序员

2011-12-20 10:41:36

程序员

2020-07-19 15:20:34

程序员技术设计

2011-11-09 13:52:04

程序员

2012-02-16 09:48:06

程序员

2013-04-10 09:35:22

程序员

2020-07-30 07:33:30

程序员

2020-03-09 11:14:25

程序员技术设计

2012-02-23 15:02:46

程序员

2022-11-10 10:29:07

KPI软件开发

2021-11-01 07:11:03

程序员职场公司

2017-06-12 11:14:52

程序员技术停滞

2020-07-24 10:38:26

微软开源程序员

2018-01-26 14:22:31

程序员发展连接

2011-09-30 09:29:19

TechCruch创业2010年
点赞
收藏

51CTO技术栈公众号