这个月 10 号,赛博朋克 2077 解禁,周围的小伙伴有一个算一个,全部一头扎进了夜之城,上起了夜班。本来也想抽空玩来着,奈何显卡版本太老,游戏是能进,画质确实没法看。换新显卡吧,现在 RTX 的价格又被那群矿难孤儿炒到了天上,别提有多闹心了。
唉,快乐都是别人的,小丑竟是我自己。也是在这个月,有位叫Eric Engstrom微软大佬去世了。
这位老哥没有比尔盖茨这么大的名气,但要是没他,我们现在想要在夜之城夜夜笙歌,估计没那么容易。
甚至说 Windows 电脑,可能还只是一台主要的生产力工具,就像苹果 Mac 一样。Eric Engstrom 所创立的 DirectX 接口,把 PC 个人电脑,拽进了电子游戏的世界。让 “ 玩电脑游戏 ” 成为了一种游戏方式。
这事儿展开聊聊还挺有意思的。
大家小时候有没有玩盗版游戏的经历?先是辛辛苦苦从 3XM 、游 X Sky 上找到资源,然后冒着被老妈发现的危险,电脑挂一晚上把游戏下下来。
好不容易下完了解压好,兴奋的打开游戏的 exe 文件,正准备抄起鼠标大杀四方,系统却弹出了这么一个窗口。。。
那时还没有被社会毒打,看到它之后,一秒钟前因为兴奋而怦怦跳的心脏直接骤停……三秒钟后恢复心跳开始发疯似的满世界寻找这个拓展名 .dll 的文件。后来才知道,这个文件其实是 DirectX 的驱动文件,重新装一下 DirectX 最新驱动就行了。
正版游戏在运行之前会有一个自检的环节,来确认电脑中是否有相关的驱动文件。
而上传盗版游戏的黑客,并不会把这部分自检程序放到压缩包里。这样一来,用户在解压完游戏之后就会发生文件缺失的情况,需要自己去网上找到对应的文件把它补上。没有. dll 文件,游戏就跑不起来。那个时候玩的单机游戏,从CS 、红警、魔兽争霸 3 到GTA 罪恶都市、骑马与砍杀、文明 IV 等等等等游戏,都是基于DirectX 接口开发的。
DirectX 的存在,覆盖了整个电脑游戏发展史。那问题来了,为什么在电脑上的游戏离不开 DirectX 呢?要解答这个问题,我们得先了解一下图形 API 的发展历史。
早期的软件开发没有统一标准,往往是一个新的硬件出来,程序员就得为它定制开发一套软件来用。
这就造成了硬件与硬件,软件与软件之间并不互通。打个比方来说,你跑到金拱门问服务员点单,要一份双层天椒皇堡,外加一块吮指原味鸡打包带走。。。
服务员可能会把你当傻子看,他们的炸炉根本就做不出原味鸡,想要吃到这些东西,只能去不同的店买。那时候程序员们开发游戏也是如此,为了让游戏能在不同的硬件上跑,就要一个个适配过来。比如《仙剑奇侠传》,想要在不同的平台上玩,就需要程序员适配三次。
可以做,但没必要,还掉头发。。。基于此,在人类的原始生产力 “ 懒 ” 的驱使下,程序员们发明出了 Application Programming Interface ( 应用编程接口 ),简称 API 。
它的出现统一了所有的开发规范,解决了不同硬件需要适配的问题,大大节省了开发的成本。要是用统一的API,就不需要重复开发了,直接适配。▼
这玩意的出现就好像是外卖平台,啥汉堡炸鸡店都有,想吃啥直接动动手指下单就会送上门,不用亲自跑去买。
不过那时候率先登场的 API 的并不是 DirectX ,而是大名鼎鼎的 Glide 和 OpenGL ,还没微软什么事。Glide 的 API 标准是一家叫 3dfx 的显卡公司创立的,在英伟达崛起之前, 3dfx 的 Voodoo 系列显卡就是当初 3D 游戏的绝对标杆。
不管是古早的《 DOOM 》、《古墓丽影》还是 FPS 始祖游戏《雷神之锤》,都体现出了 API 接口的巨大优势。原本分散的游戏开发者,都聚集到了统一的平台上来做游戏,人多力量大,无数的新技术和好游戏就源源不断的冒出来了。著名的 “ 三角胸 ” 劳拉。▼
这 3D 画面,在当时算得上是跨时代的。而微软这边一开始其实并不看好游戏领域,根本不想在游戏方面投资。一方面 Windows 95 系统做的也差不多了,随时准备发布,管理层觉得这时候再做一个游戏编程界面没有太大必要。
另一方面从老的 MS-DOS 系统上转移到新的环境里开发,谁也不敢保证会怎么样。Eric Engstrom 看到了这上面的前景,自己偷偷拉了个三人的小团队,开发起了 DirectX ,顶着微软管理层的压力,把这个项目给做了下来。
到了 1995 年 4 月, DirectX 正式发布,并在后面逐步融合进了 Windows 95 ,为微软打入游戏市场,立下了汗马功劳。
有意思的是,在 Eric Engstrom 开发 DirectX 的过程中,不仅要面对技术上的难题,还要面临微软的上层百般阻挠,面对企业内斗。这个过程还被写成了一本名为《 Renegades of the Empire 》(《帝国叛逆者》)的书,记述下了那段时间微软内忧外患的处境。内有管理层矛盾,外面临反垄断调查。▼
一群程序员腹黑起来玩 “ 宫斗 ” ,也是挺可怕的。。。
不过至少结果是好的, DirectX 在经过了几个版本的更新之后,已经稳坐了游戏图形 API 的头把交椅。
半条命 2 在 DirectX6.0 上的表现已经相当好了。▼
而 Glide 和 OpenGL 却被命运开了玩笑,相继翻车,给 DirectX 占领市场提供了很大机会。Glide 翻车是因为 3dfx 的没落,支持 Glide 的游戏及设备越来越少,它不及 Windows 系统有这么多的开发者,又不开源,没多久就顶不住了。OpenGL 倒是开源的,不过因为内部意见不统一,它逐渐转向了专业图形领域的方向,渐渐弱化了游戏方面的更新。
在更新到了 DirectX 9.0 之后,微软在图形 API 的领域,基本坐稳了龙头老大的位置。
顺带一提,微软的 Xbox 主机用到的也是 DirectX ,这样一来,就形成了一个闭环,但凡厂商想要在主机平台和 PC 平台上开发游戏,就绕不过 DirectX 。
随之而来的就是 N 卡和 A 卡长达 10 年的显卡大战,由于两边都要用到 DirectX 来优化,微软的更新就成了制衡 N 、 A 两家发展的砝码。
微软不愧是做 “ 操作系统 ” 的公司。不过这两年,英伟达雄起,老黄推出了自家的图形 API Vulkan ,意欲动摇 DirectX 的传统优势地位。
Vulkan 作为一个搅局者,他的强势之处在于跨平台的兼容性,它能在 Windows、Linux、Android 三个平台上开发,连接了电脑和手机端。在底层硬件的兼容方面,Vulkan 会更好一些,游戏开发者能更彻底的榨干显卡的性能。
未来的竞争或许会更势均力敌一些……我们在电脑游戏里 “ 突突突 ” 玩爽的时候,也别忘了背后有成千上万个像 Eric Engstrom 一样的程序员,在默默努力。
对于电子游戏的启蒙记忆就是在电脑上的。因为某些原因,我们小时候没办法接触到游戏主机,要是没有电脑上的游戏,童年或许就错失了一个精彩的世界。尽管很多都是盗版……
所有 PC 游戏的开发人员,都值得感谢。