為了把游戲接口做進(jìn)Windows 這位大佬干翻了微軟的管理層
這個月 10 號,賽博朋克 2077 解禁,世超周圍的小伙伴有一個算一個,全部一頭扎進(jìn)了夜之城,上起了夜班。
本來世超也想抽空玩來著,奈何顯卡版本太老,游戲是能進(jìn),畫質(zhì)確實(shí)沒法看。
換新顯卡吧,現(xiàn)在 RTX 的價格又被那群礦難孤兒炒到了天上,別提有多鬧心了。唉,快樂都是別人的,小丑竟是我自己。也是在這個月,有位叫Eric Engstrom微軟大佬去世了。
這位老哥沒有比爾蓋茨這么大的名氣,但要是沒他,我們現(xiàn)在想要在夜之城夜夜笙歌,估計沒那么容易。
甚至說 Windows 電腦,可能還只是一臺主要的生產(chǎn)力工具,就像蘋果 Mac 一樣。Eric Engstrom 所創(chuàng)立的 DirectX 接口,把 PC 個人電腦,拽進(jìn)了電子游戲的世界。讓 “ 玩電腦游戲 ” 成為了一種游戲方式。
這事兒展開聊聊還挺有意思的。
大家小時候有沒有玩盜版游戲的經(jīng)歷?先是辛辛苦苦從 3XM 、游 X Sky 上找到資源,然后冒著被老媽發(fā)現(xiàn)的危險,電腦掛一晚上把游戲下下來。

好不容易下完了解壓好,興奮的打開游戲的 exe 文件,正準(zhǔn)備抄起鼠標(biāo)大殺四方,系統(tǒng)卻彈出了這么一個窗口。。。

對那時還沒有被社會毒打的世超來說,看到它之后,一秒鐘前因?yàn)榕d奮而怦怦跳的心臟直接驟停。。。。。。三秒鐘后恢復(fù)心跳開始發(fā)瘋似的滿世界尋找這個拓展名 .dll 的文件。后來世超才知道,這個文件其實(shí)是 DirectX 的驅(qū)動文件,重新裝一下 DirectX 最新驅(qū)動就行了。

正版游戲在運(yùn)行之前會有一個自檢的環(huán)節(jié),來確認(rèn)電腦中是否有相關(guān)的驅(qū)動文件。

而上傳盜版游戲的黑客,并不會把這部分自檢程序放到壓縮包里。這樣一來,用戶在解壓完游戲之后就會發(fā)生文件缺失的情況,需要自己去網(wǎng)上找到對應(yīng)的文件把它補(bǔ)上。沒有. dll 文件,游戲就跑不起來。那個時候玩的單機(jī)游戲,從CS 、紅警、魔獸爭霸 3 到GTA 罪惡都市、騎馬與砍殺、文明 IV 等等等等游戲,都是基于DirectX 接口開發(fā)的。

DirectX 的存在,覆蓋了整個電腦游戲發(fā)展史。那問題來了,為什么在電腦上的游戲離不開 DirectX 呢?要解答這個問題,我們得先了解一下圖形 API 的發(fā)展歷史。

早期的軟件開發(fā)沒有統(tǒng)一標(biāo)準(zhǔn),往往是一個新的硬件出來,程序員就得為它定制開發(fā)一套軟件來用。
這就造成了硬件與硬件,軟件與軟件之間并不互通。打個比方來說,你跑到金拱門問服務(wù)員點(diǎn)單,要一份雙層天椒皇堡,外加一塊吮指原味雞打包帶走。。。
服務(wù)員可能會把你當(dāng)傻子看,他們的炸爐根本就做不出原味雞,想要吃到這些東西,只能去不同的店買。那時候程序員們開發(fā)游戲也是如此,為了讓游戲能在不同的硬件上跑,就要一個個適配過來。比如《仙劍奇?zhèn)b傳》,想要在不同的平臺上玩,就需要程序員適配三次。

可以做,但沒必要,還掉頭發(fā)。。?;诖耍谌祟惖脑忌a(chǎn)力 “ 懶 ” 的驅(qū)使下,程序員們發(fā)明出了 Application Programming Interface ( 應(yīng)用編程接口 ),簡稱 API 。

它的出現(xiàn)統(tǒng)一了所有的開發(fā)規(guī)范,解決了不同硬件需要適配的問題,大大節(jié)省了開發(fā)的成本。要是用統(tǒng)一的API,就不需要重復(fù)開發(fā)了,直接適配。▼

這玩意的出現(xiàn)就好像是外賣平臺,啥漢堡炸雞店都有,想吃啥直接動動手指下單就會送上門,不用親自跑去買。
不過那時候率先登場的 API 的并不是 DirectX ,而是大名鼎鼎的 Glide 和 OpenGL ,還沒微軟什么事。Glide 的 API 標(biāo)準(zhǔn)是一家叫 3dfx 的顯卡公司創(chuàng)立的,在英偉達(dá)崛起之前, 3dfx 的 Voodoo 系列顯卡就是當(dāng)初 3D 游戲的絕對標(biāo)桿。
不管是古早的《 DOOM 》、《古墓麗影》還是 FPS 始祖游戲《雷神之錘》,都體現(xiàn)出了 API 接口的巨大優(yōu)勢。原本分散的游戲開發(fā)者,都聚集到了統(tǒng)一的平臺上來做游戲,人多力量大,無數(shù)的新技術(shù)和好游戲就源源不斷的冒出來了。著名的 “ 三角胸 ” 勞拉。▼
這 3D 畫面,在當(dāng)時算得上是跨時代的。而微軟這邊一開始其實(shí)并不看好游戲領(lǐng)域,根本不想在游戲方面投資。一方面 Windows 95 系統(tǒng)做的也差不多了,隨時準(zhǔn)備發(fā)布,管理層覺得這時候再做一個游戲編程界面沒有太大必要。

另一方面從老的 MS-DOS 系統(tǒng)上轉(zhuǎn)移到新的環(huán)境里開發(fā),誰也不敢保證會怎么樣。Eric Engstrom 看到了這上面的前景,自己偷偷拉了個三人的小團(tuán)隊(duì),開發(fā)起了 DirectX ,頂著微軟管理層的壓力,把這個項(xiàng)目給做了下來。
到了 1995 年 4 月, DirectX 正式發(fā)布,并在后面逐步融合進(jìn)了 Windows 95 ,為微軟打入游戲市場,立下了汗馬功勞。
有意思的是,在 Eric Engstrom 開發(fā) DirectX 的過程中,不僅要面對技術(shù)上的難題,還要面臨微軟的上層百般阻撓,面對企業(yè)內(nèi)斗。這個過程還被寫成了一本名為《 Renegades of the Empire 》(《帝國叛逆者》)的書,記述下了那段時間微軟內(nèi)憂外患的處境。內(nèi)有管理層矛盾,外面臨反壟斷調(diào)查。▼

一群程序員腹黑起來玩 “ 宮斗 ” ,也是挺可怕的。。。
不過至少結(jié)果是好的, DirectX 在經(jīng)過了幾個版本的更新之后,已經(jīng)穩(wěn)坐了游戲圖形 API 的頭把交椅。
半條命 2 在 DirectX6.0 上的表現(xiàn)已經(jīng)相當(dāng)好了。▼

而 Glide 和 OpenGL 卻被命運(yùn)開了玩笑,相繼翻車,給 DirectX 占領(lǐng)市場提供了很大機(jī)會。Glide 翻車是因?yàn)?3dfx 的沒落,支持 Glide 的游戲及設(shè)備越來越少,它不及 Windows 系統(tǒng)有這么多的開發(fā)者,又不開源,沒多久就頂不住了。OpenGL 倒是開源的,不過因?yàn)閮?nèi)部意見不統(tǒng)一,它逐漸轉(zhuǎn)向了專業(yè)圖形領(lǐng)域的方向,漸漸弱化了游戲方面的更新。
在更新到了 DirectX 9.0 之后,微軟在圖形 API 的領(lǐng)域,基本坐穩(wěn)了龍頭老大的位置。

順帶一提,微軟的 XBOX 主機(jī)用到的也是 DirectX ,這樣一來,就形成了一個閉環(huán),但凡廠商想要在主機(jī)平臺和 PC 平臺上開發(fā)游戲,就繞不過 DirectX 。
隨之而來的就是 N 卡和 A 卡長達(dá) 10 年的顯卡大戰(zhàn),由于兩邊都要用到 DirectX 來優(yōu)化,微軟的更新就成了制衡 N 、 A 兩家發(fā)展的砝碼。
微軟不愧是做 “ 操作系統(tǒng) ” 的公司。不過這兩年,英偉達(dá)雄起,老黃推出了自家的圖形 API Vulkan ,意欲動搖 DirectX 的傳統(tǒng)優(yōu)勢地位。
Vulkan 作為一個攪局者,他的強(qiáng)勢之處在于跨平臺的兼容性,它能在 Windows、Linux、Android 三個平臺上開發(fā),連接了電腦和手機(jī)端。在底層硬件的兼容方面,Vulkan 會更好一些,游戲開發(fā)者能更徹底的榨干顯卡的性能。
未來的競爭或許會更勢均力敵一些。。。世超是覺得,我們在電腦游戲里 “ 突突突 ” 玩爽的時候,也別忘了背后有成千上萬個像 Eric Engstrom 一樣的程序員,在默默努力。
對于世超來說,對于電子游戲的啟蒙記憶就是在電腦上的。因?yàn)槟承┰?,我們小時候沒辦法接觸到游戲主機(jī),要是沒有電腦上的游戲,世超的童年或許就錯失了一個精彩的世界。盡管很多都是盜版。。。
所有 PC 游戲的開發(fā)人員,都值得感謝。