藏在幕后的人
John
Carmack是一個幾乎不需要介紹的人——Id
Software的創始人。該公司開創了第一人稱射擊類游戲,并且獨立地改變了PC動作游戲的定義。從Commander
Keen到Doom,再到Quake,Carmack/id的游戲吸引了數百萬玩家通宵達旦地在計算機屏幕前擊退他們的對手。
去
年12月底,Firingsquad和Gamers.com獲得了一個難得的機會,與John
Carmack進行一次長時間的、面對面的訪談。我們利用這次機會進一步了解了John作為一個普通人——而不是一個程序員——的一面。我們還向John
詢問了他和Id未來的發展計劃,以及他對于游戲行業的現狀及其發展方向的看法。下面問題以粗體字顯示,John的回答以普通文字顯示。
Firingsquad: 你今年多大?
John: 29歲。
FS: 你是否認為結婚會影響你的編程工作?
John:不。如果這樣想我就不會結婚了。
FS: 那么你和Anna Kang(John的妻子,原來在id software供職)通常是怎樣渡過一天的?
John:
最近我們一直在搭建一些火箭模型。我接受了一次訪問,有人問我在十幾歲時的情況,我提到了火箭、炸彈和一些類似的物品。我想這很有趣,我喜歡這樣。當然,
現在您可以到互聯網上說“我想要這個、這個和這個。” 他們現在擁有比我以前所用的強大得多的火箭——這些動力強勁的火箭具有每秒2000牛頓的推動力!
FS: 你和Anna會進行一對一的網絡對戰嗎?
John:
就在昨天我們還一塊玩了Apple這個游戲,Anna與其中的一個玩家開玩笑——她踢了他一腳。我當時正在與其他一些人開會,所以他們玩了一會,而她一直
在逗他玩。但是當我開完會時,他們把我逼進這個家伙的房間里,讓我坐下。我進行了反擊,取得了一次小規模的勝利。正如我所預料的,我聽到了她從建筑物的另
一側發出的詛咒聲。她仍然認為另外一個家伙在游戲最后魔術般地獲得了技能!
FS: 我閱讀了你在以前接受的一些訪談的內容,其中你提到了炸彈等物品。你是一個不聽話的小孩,對嗎?
John: 是的,現在回憶起來,十幾歲時的我在很多方面就像是一個傲慢自大的小討厭鬼。這些年來我已經逐漸成熟起來。現在回想當年,我認為當時的我表現并不好。我的意思是,盡管我很聰明——我當時已經開始編寫計算機程序,但是我經常分不清是非。
FS: 如果你需要給在自己的學校中存在像你這樣的孩子的人提點建議,你會說什么?
John:
我已經清楚地知道了我想要做什么。我想要編程——我在12歲時就深知這一點。我知道,這是我想要做的,而且我清楚地知道我想要實現的目標。你不能總是說世
界虧欠你想要得到的。但是的確有些時候需要為一個孩子提供一些必要的幫助。我的父母從來沒有真正地了解我,因而我沒有得到我想要的計算機。我為此責怪了我
母親將近十年,但是我們現在都已經淡忘這件事情了。
當
時我感到非常沮喪,因為我清楚地知道我想要做什么,但是我卻無法做到。人們習慣于認為:如果你想要從事計算機工作,你需要進入MIT,再到一家公司工作,
成為一名工程師,遵循“公認的發展道路”。但是我從大學輟學了,隨后創建了我自己的公司。我的弟弟選擇了一條更加符合慣例的道路。他獲得了一個學位,成為
了一名股票經紀人,而這正是我母親希望他做到的。他干得不錯,但是并不能像我一樣擁有很多輛法拉利跑車來讓父母感到自豪。
我現在可以說,我和我的母親現在相處得很好。我們可以討論這些事情和回憶過去,她意識到她在某些方面犯了錯誤。但是這有什么用?她不會再撫養別的孩子。
FS: 你現在已經非常富有——這對你有什么影響?
John: 我現在擁有的財富足以讓我無需再繼續工作;我的確不需要再工作了。這種自由的感覺非常好。因為只要你擁有足夠的錢來維持你的生活,你就不必聽命于任何人,也不需要想法設法賺更多的錢。盡管有很多人已經非常富有,但是他們仍然屈從于擁有更多財富的誘惑。
我基本上擁有我所需要的一切。我已經擁有足夠的財富來維持我自己和我的家人的正常生活,因此,沒有任何人、任何公司可以對我產生嚴重的影響。
FS: 是否存在一些領域,你認為你可以利用你的財富施加影響?
John: 我盡量不像這樣考慮問題。在推動其他事情方面,我盡量做到不要太主動。我希望直接解決事情的技術方面的問題。當然我可以用錢來解決一些事情,但是我更希望用直接的方式解決問題。
這就是為什么我不是一位很好的經理。我是一位工程師,所以我想要直接解決問題。我希望把環境建立一起,以便更好的解決問題,盡管在很多情況下我意識到還需要完成更大規模的項目。但是這并不是只有我才能做到的。
我非常擅長這個領域的工作,而且恰好我很喜歡它,因而我并不想轉到其他的領域。我的財富足以讓我提前退休,但是我喜歡我現在的狀態。
在這方面我很反感某些公司的做法。一些創始人原先是非常出色的工程師,但是現在成了他們的部門的主管,因而主要從事管理工作,而不是工程項目。同時,他們所管理的大部分員工在處理實際工作方面遠遠不如他們當初的水平。
我
希望這樣的事情永遠不要發生在我身上。我希望永遠處于行業前沿,從事實際的開發工作。當然,回到幕后閱讀資料、研究理論和獲得更加廣泛的視角也會帶來一些
好處,但是如果你不了解開發的具體細節,例如工程項目與真實世界的聯系,你就會變成一個只會夸夸其談的理論家。你可以從理論家的所作所為和一個從事真正的
開發工作的工程師的工作之間看到這種巨大的差別。
在
過去的兩個項目中,我的時間被分成了幾段。我有大約三個月的時間進行純粹的理論研究。我目前正處于這個階段,在這期間我需要與不同的人進行合作。隨后我將
用大約16個月的時間從事項目的開發工作。更多的關注研究性質的工作對我來說相當重要,但是我并不希望將我的大部分時間用于理論研究。我認為,研究的關鍵
在于找出一種新的方法,但是當您想要真正地采取行動時,僅僅擁有這些理論知識是遠遠不夠的。
FS: 你對工作的專注讓人驚嘆。看來你是唯一適合現在這項工作的人。
John: 專注非常有用。在現在這個環境中,我認為軟件是一種幾乎最理想的介質。但是如果不做這一行,我可能會成為一名工程師或者某種意義上的科學家。我可以從事任何一種“硬科學”。
軟
件具有很多與眾不同的優點。從事物理試驗的研究人員需要用一年的時間進行準備和制作工具,然后還要花一年時間來分析試驗結果。但是在開發軟件時,你可以立
即看到運行結果。你只需要坐在那里對程序進行反復的調試。你可以立即運行程序。對于所有智力探索活動來說,這是最容易適應的工作方式。我很慶幸自己生活在
這個軟件業非常繁榮的時代。
我再次想起當我還是一個年輕人時,我沒有我想要的計算機。我感到非常沮喪。我覺得
我“正在錯過一個很好的機會”。我覺得自己應當編寫這些游戲,例如早期的Apple
II游戲。我之所以感到由衷的沮喪,是因為我覺得自己錯過了最佳時機。當然當時我并不知道我可以抓住“下一個”最佳時機。
你讀過Steven Levy寫的《黑客》嗎?
FS: 讀過,這本書非常棒!
John: 我在十幾歲的時候讀了這本書。在看到第三章時,我感到“天啊,這才是我應該做的!”大約10年以后,我回想起來自己當時的想法:“如果那本書有第四章,也許我會加入那個行業。”這是一個非常有趣的想法。
現在看這段經歷會覺得很有意思。當我是一個年輕人時我覺得錯過了自己的最佳時機。因為當時是PC的早期發展階段的黃金時期,我為自己沒有抓住那次機會深感遺憾。
FS: 你是否認為編程工作和將想法轉變為程序代碼的過程激發了你對編程的興趣?或者是你在Apple II和PC發展早期所玩的某些游戲?
John: 我可以說出我當時非常喜歡的游戲的名字,但是我真正喜歡的是進行抽象的編程。我喜歡這項工作的很多獨特之處。
很多人加入游戲行業的原因就是他們喜歡游戲,而且樂于創新。
我
對編程的熱愛則來自于一種更加抽象的感覺。我可以從為Linux編寫設備驅動程序中獲得很大的樂趣。我還喜歡編寫數據庫管理程序或者其他程序,因為在開發
過程中總是會遇到一些有趣的問題。有些事情可以給我帶來更多的滿足感。圖像和游戲很可能是編程工作中最能給人帶來成就感的領域。
FS: 為什么呢?
John:
因為你可以得到非常形象的反饋信息。當你編寫一個圖像算法時,它可以為你繪制一副圖片。盡管數據編程會通過其他的方式給人以滿足感,但是人類顯然對可視的
對象和必須通過符號理解的事物更感興趣。這是圖像編程極具吸引力的基本原因。但是我們必須進行很多方面的研究。我喜歡這項工作的所有領域,但是游戲開發總
是會讓你在克服一些極具挑戰性的問題之后才能領會到它給你帶來的滿足感。
我在早期很喜歡RPG游戲,例如Ultimas,Wizardrys和所有類似的游戲。我為Apple II開發的一些非常早期的游戲基本上就是Ultima的翻版。我還喜歡所有的經典決斗游戲。
FS: 從某種意義上說,你是否認為“龍與地下城”是你所希望看到的、帶有一定的文字和對話的游戲模式?它是否像Quake引擎一樣,是一種可以在其中添加各種內容的游戲結構?
John: 它就像是能夠從頭開始開發新的游戲,使用一種對你沒有任何限制的方法。
事
實上,我們最初打算將Quake開發為一個RPG游戲——并不是一個完全意義上的RPG游戲,而是一個奇幻游戲。但是因為Quake的復雜的開發流程,它
后來的發展完全偏離了這個軌道。我一直非常愿意說明我們在剛開始時對我們所開發的游戲制定的目標。盡管它們成為了與我們的目標截然不同的游戲,但是我很滿
意最終的結果。我們不大可能在開發一款奇幻/角色扮演游戲。
FS: 我聽說你減少了你對“龍與地下城”的管理工作。
John:
從Wolfenstein開始,整個公司都在每個周末玩我們所開發的游戲。玩游戲的時間在我們開發Doom階段有所減少。我們去年純粹為娛樂開發了幾款游
戲。但是它花了我們不少時間。要完成出色的工作,你必須用一天時間玩游戲,再用一天時間準備,但是我現在不可能再為其他的工作犧牲20%的時間。
FS: 你有一種特別的專注和靈感——你可以怎樣改進一個算法或者技術。你多久會遇到一次這樣的頓悟?
John:
我認為很多人都過于強調頓悟的重要性。頓悟的確很重要,但是只有在你清楚地了解一項工作的來龍去脈之后獲得頓悟。事實上,很多出色的工作并不是頓悟的結
果,而是辛勤工作的結果。很多人都誤以為頓悟是最重要的。有時候它的確是,但是在95%的情況下它僅僅是你對你所掌握的知識的冷靜分析的結果。
讓工作成功的關鍵并不是一個天才的決策,而是500個明智的選擇。更加重要的是始終做出明智的決策。制定一個天才的決策和很多平庸的決策還不如在整個過程中始終制定比較明智的決策。你必須要做出很多正確的決定。
即
使在開發完Quake
3之后,我的任務清單上仍然有數千個有待進一步改進的細節。因此,關鍵在于了解所有必須完成的工作,進而找出“最有效的擊球點”。例如“這些工作可以完成
大量的任務,但是會帶來一定的副作用。”或者“完成這項工作可能需要幾天時間,但是它會讓其他一些環節變得不太穩定,因此我不會去做這項工作。”
我當然希望遇到頓悟——當時我可能正在做某項工作,忽然間意識到可以采用一種更好的方法。這的確非常有用,但是我不能指望這種情況每天都會發生。實際上比較常見的情況是,當我回到家里時我可以告訴Anna:“今天我想出了一個新主意!”這種情況相當常見,而且非常有用。
FS: 很多人都認為你是全世界最出色的游戲工程師之一。你認為在今后幾年中,這個世界上是否還有足夠的任務和深度來讓你保持足夠的興趣?
John:
當然,還有很多難題需要解決。目前,我正在利用我的很多閑暇時間開發一些基于Linux平臺的程序。我已經完成的一項工作是為Linux編寫兩個3D驅動
程序,即在這個平臺上進行大量的編程。作為一名開發人員,這對我非常有用,因為我做了大量高層次的、API級別的編程工作,但是我應當繼續深入到系統底
層。通過開發設備驅動程序,編寫一些深入到硬件內部的部署級程序可以開闊我的眼界,讓我可以從整個流程的角度看待各項工作。有很多程序員只知道頂層的開發
方法,而不知道程序工作的基本原理,這主要是因為他們無法“看到”系統的內部結構。
我正在考慮著手的另外一項工作是(因為我喜歡清楚地從最高層到最
底層的所有技術細節)花一些時間開發我自己的網絡堆棧,以便進行研究和學習。我還做了一些我想要嘗試的試驗,以便在串行驅動程序和分組驅動程序的層次上了
解操作系統實際上為路由時間和排序所支出的開銷。我希望從我們通常用于通信的協議層下面獲得一些信息。
FS: 僅僅是在Linux平臺上,還是也包括Windows和Mac平臺?
John: 關鍵是在Linux平臺上開展這些工作更加方便,因為你能夠獲得你所需要的所有信息。盡管Linux還不能取代Windows成為主流的桌面操作系統,但是它的確具有一些獨到之處。
吸引我這樣做的原因是有人為Matrox顯卡編寫了一個
Linux驅動程序。我對它進行了測試。顯然它不能兼容Quake
3。因此我決定將它下載下來仔細研究。我對它的出色的工作機制留下來深刻的印象。盡管它的速度不快,但是它幾乎可以說是一個功能齊全的、高質量的程序。但
是它在紋理的交換方式方面存在明顯的缺陷。他們交換的是最近使用的紋理,而不是最少使用的紋理,因而你可以在屏幕上看到明顯的失真。
我很清楚它的工作方式,因而我想“太好了,它提供了源代碼。”因此我決定下載源程序、進入CVS庫和所有文件,按照我的想法改進代碼,發現程序缺陷,并將其消除!整個過程非常明確。
由此得出的結論是,Apple的驅動程序曾經也存在相同的缺陷。
因此我們可以在兩個驅動程序中發現相同的缺陷,但是對于Linux程序來說,我可以直接進入源程序,消除這個缺陷。盡管在很多層次上仍然存在不少障礙,但
是具備這種能力非常重要。從根本上說,如果你在使用一個源碼完全開放的系統時遇到了一些問題,你可以花時間自行解決這個問題。你不需要等待別人的幫助。你
不需要低聲下氣地尋求幫助,也不需要等待補丁發布,而通常這樣做會降低時間的利用效率,但是如果某個問題真的讓你頭疼不已,你可以直接查看源代碼,解決這
個問題。這會讓人感到非常振奮。
關于Linux的其他問題
FS: 這就是你對待問題的態度——親手解決問題。你并不想等待別人來發布一個升級程序,而是愿意自己動手。
John: 是的,這就正是為什么在我對網絡或者其他問題進行研究時,我更愿意使用Linux平臺。如果需要,你可以取出操作系統的某些部分,告訴自己:“好的,現在我想要把這一部分完全刪除,因為我想要做一個試驗。”你可以獲得自由發揮的空間。
我認為,在未來幾年中,軟件的可用性將日益得到重視。有很多經濟趨勢與此有關。你將看到價格低于500美元的PC和90美元的Windows使用許可。如果人們只想執行一些非常基本的任務,他們很可能希望獲得一個免費的操作系統。
Linux界有很多瘋狂的支持者,他們的觀點有時缺乏足夠的理性。但是,在關于Linux的實際優勢的宣傳中的確存在著一些真實情況。
FS: 你很關注技術,而且你鞭策自己不斷進步。但是你是否考慮過找一個上司來幫助你學習新的技能?
John:
我知道在某些工作上聘請管理人員可以帶來很多好處。我們在第三季度末聘請了Graeme來幫助我們管理部分業務。但是它并沒有對我的工作方式產生實際的影
響,因為Graeme還沒有蠻橫到干涉每項具體的工作。事實上,我自己對工作的安排往往好過大部分管理人員給我制定的工作計劃。
我也意識到了我的個人組織能力的局限性。我會將幾千件事情放在我
的任務清單上,而且常常是從頭開始對所有事情進行排序。我的確認為如果有個人的主要工作就是確保我知道和了解所有這些任務的重要性就好了,因為每個人的組
織能力都存在一定的不足。你自己可能不會這樣做,但是有些事情就是因為你一直不愿意去處理而最終泡湯。我已經意識到了讓某個人幫我安排工作的好處。
最近我在找一個人來對一些程序——尤其是Linux驅動程序——
的OpenGL性能進行兼容性測試。我為此編寫了大量的程序,我也盡量設法將這件事負責到底,但是我知道我需要采取多種方法來實現我的目標。我希望編寫一
個完美的程序,但是我也深深意識到,在我的有限的時間里,我不可能做到面面俱到。
有時候有一個專門負責幫助你的助手會帶來很大的方便。但是這對我來說仍然只是一個理論上的問題。我相信這樣做會有所幫助,但是還沒有看到實際的效果。
FS: 出了組織能力以外,能否將一位管理人員視為老師?你覺得可以從誰身上學到對自己有用的知識?
John:
實際上,我幾乎向每個人學習。這是十幾歲時的我和現在的我的主要區別之一。當我十幾歲時,我的想法是:“我比我周圍的人都聰明,因此我完全不用理會別人說
什么。”我在大學的幾個學期中都是如此。現在回想起來,我覺得我采用了錯誤的處世方法。是的,也許我的確比教授聰明,但這并不意味著我不能從他身上學到對
我有用的知識。
現在我的處世方法是,我愿意向與我一同進行編程的任何同事身上學習知識。我很珍惜我與Brian
Hook一同工作的時光。我從他身上學到了一些更好的C語言編程標準和如何更加嚴格地使用struct和const——而我過去并不這樣做。這對我非常重
要,因為我通過他提高了自己的技術水平。另外還有Graeme——我看到他從Java庫中迅速地找到自己所需要的信息——而我往往是從頭做起,到處查找這
些信息,因而花的時間比他長得多。
某人并非要成為一個“更好的”開發人員或者程序員才有值得你學習的知識,這是我在過去10年中獲得的一個非常重要的經驗。到處都有值得你學習的知
識。如果你擁有正確的學習態度,那么把自己放在一個信息豐富的環境中會對你很有幫助。如果你想從任何地方獲得你想要學習的知識,而不是尋找一個將所有信息
都集中到一起的有用信息 “寶庫”,你必須能夠從你所能接觸到的任何地方搜集對你有用的信息。
在開發Quake的過程中,我們聘請了Michael
Abrash。我為此激動不已,因為我曾經通過他以Dobbs博士為筆名發表的很多文章中學習了大量基本的PC編程技能——包括匯編語言和圖像編程。因此
我對能夠于他合作感到非常高興。我從他那里又學到了很多知識,但是有趣的是,我有一陣子感到非常不舒服,因為他在編程方面對我非常順從。Michael的
知識非常淵博,但是我的長處是學習新知識的能力很強。
因此,我幾乎從我合作過的所有程序員身上都學到了很多知識。
FS: OK,你剛才提到從周圍搜集有用的信息。你怎樣看待非技術性的信息來源——例如書籍和電影?
John: 我這幾年來最喜愛的書是由Vernor Vinge撰寫的《A Deepness in the Sky》。在電影方面,我不知道我所說的是否有參考意義。我欣賞了大部分好看的電影。《玩具總動員2》非常出色——我很喜歡這部電影。
FS: 《黑客帝國》呢?
John: 《黑客帝國》非常精彩。我喜歡所有精彩的科幻、動作和類似的電影。我不是很喜歡意義深刻的電影。我看電影的目的純粹是為了娛樂。有些電影實際上改編自我們開發的游戲。我們的游戲相當于計算機游戲界的施瓦辛格電影。
FS: 你認為人們為什么喜歡Quake 3?
John: 我們希望通過Quake
3達到的目的就是讓你可以在玩游戲時全身心地投入其中。對于華麗設計或者其他特點的吹噓,以及試圖在游戲上強加一個傳奇或者故事的做法毫無意義。一個游戲
的真正價值在于讓你在玩游戲時感到有趣。關鍵并不是擊敗游戲對手或者完成某項任務,而是要讓戰斗真正有趣。
必須有些讓你想要采取行動的任務。人們不會因為玩壘球游戲而真的去玩壘球;必須有一個本身很有意思的戰斗。我認為我們在這方面做得不錯。我們期望,并且的確從我們的擁護者那里得到了大量的反饋信息。
肯定有些玩家希望玩更加復雜、更加具有挑戰性的游戲。對于游戲來說,這是一個可行的發展方向,但是它可能會導致游戲內核的發展停滯不前。你可以在玩
飛行模擬游戲時體會到這一點,因為這些游戲要求你在開始游戲之前閱讀漫長的使用手冊。而在過去的飛行模擬游戲中,你要做的就是跳進飛機、起飛和射擊。這些
游戲可以給玩家帶來真正的快樂。而在有些嚴肅的模擬游戲中,你必須讓自己相信你真的達到了娛樂的目的。
也可以像這樣來開發第一人稱射擊游戲,即要求玩家了解現在發生的情況,各種工具的使用方法,以及各種戰略等——而玩家并不想要知道這些,他們希望的
只是坐下來玩游戲。也許有很多人喜歡這樣的游戲,但是我并非如此。我沒有時間學習游戲的各種知識。我從來不玩那種需要學習大量復雜的知識的游戲。我只喜歡
玩一些簡單的、迅速上手的游戲,它們讓我可以立即進入游戲,享受一段美好時光。我認為與我一樣的游戲玩家是上面那種喜歡復雜游戲的玩家的五倍以上。
FS: 你最近一次玩超過2小時的、非id出品的游戲是什么?
John: 很可能是Nintendo 64平臺上的F-Zero X ——一款賽車游戲。
FS: 你是否考慮過開發一款賽車游戲?
John: 我們曾經在推出Wolfenstein 之后討論過這個問題。
當時我正在研究一些三維象素-landfield技術,我們制作了一些汽車行駛的簡單演示。但是我們從來沒有采取任何措施來將這個想法付諸實施。但是如果
我們真的開發一款賽車游戲,那肯定也屬于非常有趣的賽車類游戲——例如F-Zero游戲,而不是非常嚴肅的賽車模擬游戲。這里我要再次指出,游戲界有很多
有效的發展途徑,但是我有我自己的個人愛好。我的愛好恰好讓我們既可以開發出成功的游戲,又可以讓游戲具有我所認為的真正的娛樂性。
Id公司的下一款游戲
FS: 你認為你的個人愛好并不是開車,而是火箭發射器?
John: 游戲的目的就是娛樂。模擬游戲從來沒有讓我獲得愉快的感覺,包括飛行模擬、賽車模擬和所有類似的模擬游戲。我知道它們在某些方面具有一定的娛樂性。它肯定不會像我說的:“這些游戲非常枯燥,所有人會喜歡它們”。但是,它們并不是我喜歡的游戲類型。
在我剛剛喜歡上RGP游戲時,我的生活因為其他一些事務而變得越來越忙碌,因而我沒有很多時間用來玩游戲。我一直都很喜歡簡單的卷軸游戲。盡管從
Gauntlet到Quake
3,它們已經發生了很大的變化,它們的基本理念仍然沒有改變——你需要四處奔跑、打敗敵人、拾起武器、及時進入下一關。這是一個從根本上非常有效的、核心
的、首要的游戲元素,我對將相對較為類似的游戲(例如Quake、Quake 2和Quake
3)制作成具有不同風格的游戲并不覺得有什么不好。就像總有人玩賽車游戲和飛行游戲一樣,現在也總是會有各種各樣的第一人稱射擊游戲。我認為我們的每個項
目都得到了重要的收獲。我們的下一個游戲可能會采用一種完全不同的方式,因為并不是公司中的每個人的想法都與我一樣。因此下一次我們可能會稍微改變一下我
們的策略,但是我們還沒有做出最終的決定。
FS:它仍然是一款第一人稱游戲嗎?
John: 它很可能仍然是一款第一人稱游戲,但是它不一定是一款動作游戲。Graeme和我一直在討論很多游戲的設計創意,并且探討了我們目前擁有的各種選擇,但是我們還沒有準備好討論任何細節。它很可能是一款第一人稱游戲——這幾乎是肯定的。
FS: 我剛才在想,如果id進入RTS或者其他類型的游戲領域,可能會出現非常有趣的情況——這就像Blizzard從RTS轉向開發動作RPG一樣。
John: 我不是一個真正的實時戰略游戲玩家。實際上,我從來沒有真正坐下來玩過一款SLG游戲。這不是我喜歡的類型。它與第一人稱游戲完全不同——后者是最有現場感的游戲。
實時戰略游戲是最沒有現場感的游戲之一。你只是指揮你的軍隊,而不是你自己在游戲中沖鋒陷陣。我想我們還是會繼續開發第一人稱類游戲。從第一人稱游
戲轉向第三人稱游戲只是一小步,但是我認為肯定有其他一些公司更加擅長開發第三人稱游戲,例如那些在開發指揮戰略方面更具實力的公司。
與游戲行業的很多人不同,我并沒有在計算機上制作電影的想法。而正是這種想法導致了很多公司陷入困境。有些游戲設計人員認為他們是導演,而我認為你
應當擺正自己的位置。我只是一名游戲設計師,而不是一名電影導演。這也是促使很多公司轉向第三人稱游戲的原因。第三人稱顯然更適于顯示人物動畫這樣的特
效。Steed肯定希望開發更加重視動畫的游戲,但是這可能并不是我們的下一款游戲的開發重點。我們還沒有最終決定,但是我肯定將繼續開發第一人稱游戲。
FS: 你把在計算機上制作電影視為“很多公司陷入困境的原因”的說法很有意思,因為有很多3D顯卡公司——例如3dfx和Nvidia——實際上將“把好萊塢引入臺式機”作為他們的宣傳重點。
John: 這個現象存在很多有趣的問題——
一個是以最高的質量發揮今天的3D引擎的威力所需要的人力正在迅速接近好萊塢所需要的電影布景人員的數量。就像現在,Quake
3遠遠沒有真正地達到我們所能制作的視覺效果的最高水平,但是只有這樣我們才能保持足夠快的開發速度。
但是如果有人根據這個圣誕節推出的產品了解了今年的技術水平之后說:“我想要制作出視覺效果最驚人的、最接近電影的游戲”,那么他可以制作出遠遠超
過人們目前所看到的視效水平的游戲。相關的技術都是現成的。這就是過去一年中游戲行業的發展趨勢,尤其是一些特殊的效果,例如各個層次的完全紋理渲染,需
要場景設計人員加入進來,以不同的方式設計他們的場景,以及利用模型構建所有這些特效。這樣的努力現在可以被用在計算機游戲中。而過去并不是這樣。
在我們開發Doom和Quake時,我們并沒有能力投入如此多的人力。如果你需要設計一個房間、一條走廊和另外一個房間,你應當采用的方法是:走廊、模塊、模塊、天花板。這就是你所能做的一切,因此我們所能開展的工作受到了嚴重的限制。
FS: 你總是支持以規模較小的團隊開發游戲;這是否意味著孩子們可以在自家的車房中和伙伴們一同開發游戲?
John:
我們還沒有充分地發掘出所有可能的游戲種類。很多人在很多方面對游戲行業有所不滿,而事實上的確很多發行商并不喜歡發行創意新穎的游戲。來自
Definition 6的Chris Hecker
一直在用多種方法推廣物理游戲;他開發了一些新奇的游戲。他所開發的游戲使用了一個新穎的創意。他還制作了一個簡短的游戲演示。這個游戲將物理作為它的核
心原理,但是它并不是像“讓我們將物理加入一個第一人稱設計游戲”一樣。它是一個非常獨特的游戲。它采用了一個很好的游戲設計,而且與物理學密切相關。但
是發行商對它一點都不感興趣。
這的確非常糟糕,但是與此同時,我們也可以從其他一些事情上看到一些積極的跡象,例如有些人通過在互聯網上銷售他們所開發的一些簡單的小游戲而賺了
大錢,例如每年通過被下載的游戲獲得幾千美元的收入。我對此感到非常振奮,因為我們可以清楚地看到,有些人可以通過開發主流之外的游戲賺錢;這種情況因為
互聯網而成為了可能。
我們在公司創建早期以共享軟件的形式獲得了成功。通過最初的Keen三部曲,我們每年的收入達到了10萬到15萬美元。通過第二個三部曲,我們每年
借助共享軟件獲得的收入達到了50萬美元。這還是在我們進入正式的商業銷售市場之前。現在看來可以比當時做得更加出色。這的確很有意思。但是由于貨架上需
要占用成本費用和貨架空間,發行商并沒有興趣發行創意新穎的游戲。我確信肯定有一些新的游戲種類正準備嶄露頭角,但是面臨著一些阻力。
Id不是一個發行商
FS: 你對Halo感興趣嗎?
John:
我看過它的影片;看起來非常出色。現在的問題是無法根據屏幕截圖來判斷一個游戲的好壞,因為任何一個不夠勝任的渲染引擎都可以渲染某個特定的場景。關鍵在
于各個對象能否無縫地連接到一起。Bungie擁有很多杰出的游戲設計人才。他們從事游戲行業的時間和我們差不多。他們很多年來就像是id在Mac平臺上
的影子。但是現在他們已經走在了前面,并在PC平臺上取得了一些重要的成果。他們表現得非常不錯。
FS: 再回到開創新的游戲種類和來自發行商的阻力的話題,你是否有興趣幫助推廣新的游戲種類,例如提供一些資金來發行這些游戲?
John:
我肯定不想成為一個發行商。Id內部就這個問題討論了很多年。五年以前,所有的游戲開發公司都希望成為發行商,因為當時有很多小型發行商。后來這些小型開
發商逐漸被合并為少量大型發行商。我們就這個問題討論了很長時間,而且我們自己發行了最初的Quake共享軟件,但是當與發行商達成協商之后,我們很可能
損失了一些利潤,因為發行商的業務管理往往相當糟糕。但是最后所有人都達成了一致意見——尤其是在我們看到很多發行商的合并和倒閉之后——做一個開發商比
做一個發行商好得多。因為軟件開發商是這個行業中比較清楚的部分,你只需要交付CD,再通過郵件接收支票。但是,作為一個發行商,你需要處理行業中的很多
你根本不想接觸的混亂部分,例如代理商在取走并售出你的產品之后付費等。我一點也不想接觸這方面的業務。
FS: 或者利用你的影響力來說服一些發行商,你知道,也許你應該利用這個機會。
John:
我不會投入太多。我會對這樣的事情臨時發表一些意見,但是我不會對一些我知道沒有足夠的時間和精力來努力的事情提出承諾。事實上,這對于我保持對主要工作
的專注非常重要。我愿意不去理睬大量的瑣事。這一點非常重要,因為如此多的事情都可能需要占用我的時間。可以從很多面臨類似處境的人的生活中看到這樣做的
重要性:整天都有人不停地找他們,從而使得他們無法開展任何工作,因為想要達到某個目的的人會給他們撥打電話和發送電子郵件——對他們進行訪問,或者請他
們提出一個業務建議。
有時候我會因為沒有完成更多的工作而感到內疚。尤其是在即將到來的一年中,有很多不同的硬件設計工作需要完成,而且每個人都沒有一個明確的發展方
向。我告訴自己,我應當參與到開發工作中,幫助所有人達成一致意見,因為我的地位使得我比較適合扮演這樣的角色。微軟在很多方面很樂于聽從我的建議,很多
硬件公司肯定也愿意這樣做。他們對我存在一定程度的尊重。但是在開發Quake 3期間,我沒有時間來從事這方面的工作。
現在我可以四處宣傳一些想法,但是我深知,即使是現在,我也不能完全投入這項工作,因為嘗試并帶領整個行業沿著我所希望的方向向前發展實際上是一個全職的工作。我還沒有狂妄到認為世界沒有我就轉不了。因此我想要說的是,我會盡量提供幫助,但是我不會全身心地投入這項工作。
關于Trinity
FS: 讓我們換個話題,我讀到的一篇文章提到在Quake 3成功推出之后,你準備花更多的時間研究引擎。
John: 我目前正在開展多項引擎研究工作。
FS: Trinity是其中之一嗎?我想人們一直對“Trinity”有些迷惑不解。
John:
我一直不知道為什么每個人都對Trinity感到迷惑不解。在推出Quake之后,我開始研究新的渲染技術,人們都將其稱為“下一個引擎”或者其他名稱。
Michael
Abrash建議我們采用Intel的做法:用一條附近的河流命名你的下一個項目。達拉斯有條名為Trinity的河,所以我們就下一個項目的名字取為
“Trinity引擎”。當然,我們最終沒有將其用于某個項目,因為Quake II是Quake I的續作,而且我沒有在Quake
II上使用[Trinity],因而沒有任何一個項目采用了這項技術。剛才我們談到了我當時所做的工作。在開始開發Quake
III時,我針對不同的渲染技術編寫了六個不同的研究引擎。
但是這仍然只是我所從事的研究工作。其中包括2個三維象素項目,1個空間扭曲項目,1個照明圖項目,其中的一部分工作成果后來成為了Quake III引擎。
有一件事一直是id和我的技術指導工作的真正實力之一。你可以看
到一些公司緊緊抓住某個聰明的創意不放;有些你可能耳熟能詳的游戲則是以一個創意為核心進行游戲開發。而我并不受限于某個特定的創意的束縛。正如我剛才所
說的,在開始開發Quake
III時,我有六個不同的任務需要完成。我觀察了所有這些任務,然后對自己說:“這些任務更加簡單明了。”但是我們為Quake
III所做的工作實際上是很多方法中的一種比較正確的方法。我現在還有很多任務需要完成。但是沒有人會在上面貼上魔法標簽,所以我需要親自評估所有這些不
同的任務。
FS: 你剛才提到了三維象素,而且你正在開展這方面的研究。你是否認為3D硬件公司應當關注三維象素加速?你怎樣看待已經推出的三維象素游戲,例如“三角洲部隊”?
John:
三維象素開發?我過去編寫過一些三維象素引擎。實際上Shadowcaster——即Raven的最初名稱——的早期版本中就曾經使用了三維象素地面。但
是在我們重新編寫該程序,以便更多地使用多邊形時,我們將三維象素地面刪除了。用三維象素技術顯示對象可以帶來一些實際的好處,因為它可以通過多種方式為
您提供完整的紋理和輪廓細節。我在剛開始開發Quake
III時編寫了這兩個三維象素引擎,我當時認為我可以讓它們完全通過軟件運行,但是它只能提供相當低的分辨率。根據你所能達到的水平,以及硬件多邊形的生
成速度,在這種情況下并沒有必要使用這項技術。
我分析了內存存取模式;你可以用硬件做一個三維象素光跡追蹤器,它所使用的硬件資源遠遠少于我們現在在進行各種三角形光柵處理時實際所用的資源。我
認為它在很多情況下可以提供更加具有吸引力的視覺效果。但是它的確很難理解,因此我不太愿意向人們推薦這樣的技術。我知道我做了一些介紹性的演示,但是
PC行業能達到現在的硬件水平的根本原因是我們都可以借鑒SGI這個例子。我們擁有“這顯然可以發揮作用,你看他們已經做到了”的說法的實際證據,因而問
題就在于如何挑戰并最終超過他們的成績。
如果要推薦某種全新的技術,有人會說:“你應當讓你的工廠生產三維象素芯片,你應當嘗試這項技術,并向它投資幾百萬美元。”我不愿意這樣做,因為我
們并沒有一個完整的證據來表明我們在開發引擎時有必要采用這項技術,也不能證明它可以帶來足夠的渲染改進。如果有人真的做了一個三維象素開發工具,你可以
得到它的深度值,并將其與現有的三角形混合,這可能會是一個有趣的中間步驟,但是坦白的說,我并不認為它會占用如此多的硬件資源。由于現在每個人都在想方
設法讓自己的產品獨樹一幟,所以可能會有人用這種技術作為宣傳的噱頭,但是肯定僅此而已,因為他們還不知道具體怎樣使用這項技術。
我認為現在有些非常具有潛力的技術,但是我并不能肯定這就是未來的發展方向,因為盡管這些技術適用于環境的開發,而且你可以將它們用于一些出色的應
用,但是還不清楚它們是否適用于角色的開發。你可能會說:“也許你必須用一個變形矩陣構建這個模型,然后當你對它進行Raycast渲染時,讓光線在接觸
變形網格時轉向。”但是我還沒有編寫過這種軟件版本。只有在我可以提供一個顯示這種技術的工作方式,而且它看起來比你直接可以實現的效果更好的情況下,我
才會向別人推薦這項技術。我現在還沒有時間來做這件事情,因為我有一些迫在眉睫的研究任務需要完成。
但是我認為這項技術具有一些重要的潛力,有可能會成為一個有趣的發展方向。我現在真正想向所有人介紹的技術是更高階的表面渲染,包括曲線、細分表面
等。現在每個人都對這些技術非常感興趣。在使用了兩年時間之后,我發現它們并不像宣傳得那樣出色;它們存在不少問題。你直接從外面往往發現不了,對于一個
開發人員來說,必須要深入內部才能看到這些技術的本質。
如果你曾經讀過相關的研究文獻,了解貝賽爾曲線的工作方式,你可能會想,哦,這項技術非常出色,這正是我們在三角形單元之后的前進方向。你并沒有意
識到所有的“實際”問題,例如使用無效的、標準的,但是退化的邊緣。你不能隨意地劃分一條曲線——除非將其提高到兩側的平面。你不能通過調整其他部分連接
兩個交叉點。所有這些細微的不足最終會造成很大的不便,尤其是在比較困難的情況下,你很難全面地了解發生問題的環節。三維象素技術也存在所有這些問題,這
就是我為什么不愿意上臺演講,描繪未來的遠景,因為很多技術從表面上看來很出色,但是當你深入到它們的內部時,往往會得出相反的結論。
FS: 既然你打算重新開展研究工作,那么這是否會對id的下一款游戲的推出時間產生一定的影響?
John: 這取決于我們最終決定下一步采取什么措施。我目前正在開發的兩種技術都適用于現有的Quake 3框架,因此這些新技術可能會被加入到下一個產品中。
目前我們得到了一個非常重要的機會,即我們可以使用這個牢固的、
穩定的、可擴展的、靈活的引擎,從而將我們的開發重點放在游戲設計上,而不需要考慮引擎的開發。。。
從一位管理人員的角度來說,這無疑非常有利。但是,如果我們這樣做,我現在正在開發的技術很可能不會在三年、四年甚至更長的時間內被用于新的產品。對于技
術的發展來說,這是相當長的一段時間。因此我們需要一個真正強有力的激勵來促使我們將一些新技術加入到下一個產品中。
FS: 你是否通過玩其他游戲和觀看競爭對手的產品來開展研究工作?
John:
我經常玩Unreal,將來我可能會喜歡玩Unreal
Tournament——盡管我現在還沒有玩這款游戲。另外,我還會玩很多演示版的游戲。我不會進行一次真正徹底的調查,玩遍市場上的每款游戲。通常我只
是在別人玩最熱門的新游戲時旁觀一下。而我不會花很多的時間玩其他的游戲。當然,我玩Quake 3的時間超出了其他任何一款游戲。
FS: 公司中是否有專人負責這項工作?
John:
Christian和Graeme會玩大部分新游戲。過去是Brandon負責玩每個游戲。當他在id時,所有信息都會從他那里過濾一下。Tim也經常出
于一些研究目的玩游戲;Tim在瀏覽其他游戲方面表現得相當盡責,而Graeme和 Christian 玩其他游戲的主要目的只是娛樂。
FS: 你能否簡單地介紹一下你的研究內容?
John:我現在正在開發的一個渲染引擎技術是一個更好的照明模
型。Quake 2
在計算中添加了發射性照明,它可以帶來真實的光線反射效果,但是很多人實際上并不喜歡這種技術,因為它消除了一些陰影,從而讓更多的對象陷入黑暗之中,盡
管這比較符合實際情況——很多人都喜歡更為明顯的陰影。在Quake
3中,我們重新只使用了一個直接照射燈,這在一定程度上是因為我不想在曲線上進行有限元放射計算。另外一項技術將讓設計人員可以在任何地方渲染紋理和劃分
輪廓,從而讓我們可以手動改進對象的顯示效果。因此,主要有兩個研究方向。實際上,它們可以被結合到一起,或者共同使用。它們都給我帶來了一些有趣的技術
難題。這些技術可能會在我們的下一款產品中得到展示。
我的其他一些研究內容與游戲引擎無關。我正在利用Web攝像頭進
行一些視覺研究,例如一種頭部跟蹤裝置。我可以利用這種裝置,在游戲中加入一些有趣的內容。例如當你來回搖你的頭時,你在游戲中扮演的角色也會做出同樣的
動作。或者像一種支持全息照相的窗口界面,你只需要移動你的頭,就可以改變你的形象。我并不認為Web攝像頭用于足夠快的速度,在沒有顯著延時的情況下實
現上述目標,但是這仍然是一個相當有趣的技術。你可以利用面部表情等,將它提高到新的水平。
我認為這些技術的應用將會超過我的想象。所有短時間的不連續都是
由于輸入/輸出設備的變化所引起的。當人們開始用鼠標進行各種操作時,事情發生了變化。我認為“計算機視覺”已經具備足夠的實用性,足以對對象產生“鼠標
式”的影響。畢竟,有些事情只能通過鼠標完成,而不能依靠鍵盤。這仍然處于自由猜想階段。
現在出現了一些有趣的應用,因為我們現在運用了足夠強大的CPU運算能力,可以進行一些相當復雜的計算。與很多圖像技術不同,它還有很多尚未解決的研究問題。很多人正在研究這些難題,但是我們沒有“SGI實例”來知道怎樣將對象組合到一起和提高運算速度。
我所感興趣的最后一個研究方向是實現更加通用的3D技術,例如能
夠在3D世界中利用其他的渲染工具(例如HTML)開展工作,以及能夠建立不與某個特定游戲相關聯的小型網絡空間。我認為我們可以構建一個基礎設施框架。
我們可以開發一款第一人稱設計游戲,但是框架具有足夠的通用性,因而我們可以用它完成其他任務。
所有現有的軟件顯然都是針對第一人稱射擊游戲而設計的,但是人們
以后可以利用這些技術執行其他一些有趣的任務。通用化總是要付出不菲的成本。你可以通過技術的專用化提高它的工作效率,但是在某個轉折點你可能會發現通用
化的成本并不是很高,而擁有一個更加通用的平臺所帶來的好處更加顯著。我認為3D游戲目前正處于一個這樣的轉折點。
現在的我們與兩年前大不相同。當時我們仍然需要考慮每一個很短的
幀來提高一點點性能。由于硬件加速的發展——尤其是輪廓加速的實現,以及速度更快的CPU和容量更大的RAM的出現,這種情況已經不復存在。我認為我們的
通用平臺的速度可以達到專用版本的90%以上,同時可以利用這個平臺處理大量其他的、有趣的任務。
FS: 你希望建立一個永久性的Quake世界,讓人們可以在其中進行對話和交流吧?
John:
是的,甚至不一定與Quake有關。我認為在利用介質通信方面有很多有趣的工作需要完成。你會看到人們互相交流,在一個服務器上會面等。這方面有很多潛在
的發展方向。我不會將其稱為虛擬現實,因為VR已經成了一個與死亡和毀滅聯系在一起的名次。從來沒有一家成功的VR公司,但是我認為其中很多公司失敗的原
因都是當時并沒有相應的技術來實現他們的創意。在很多情況下,創造力和創新精神都會受到技術發展的限制。
Doom就是一個典型的例子。我們用了很多的聰明、才智和創造力才開發出了Doom,但是所有這些聰明才智在五年之前并不能產生任何作用,因為當時的技術限制使得人們不可能開發出像Doom這樣的游戲。有些時機是適合出現新的創新技術的。
我認為在未來幾年中,將會出現很多這樣的創新技術,例如3D界面的通用化。每個人都用一種含糊的、空想的方法預言互聯網和Web在未來的某個時候擁有一個3D界面。但是沒有人提出真正實現這個目標所需要的具體細節。現在可能是實現這個目標的時機,但是也可能不是。
我很關注這些研究方向,而且我將從事所有這些研究工作。最終我將把那些最有前途的技術研究到底。
FS: 你是否建議年輕人上學?
John: 如果你是為了正確的理由上學,那么學校將是一個很好的學習知識的場所。大學可能是一個信息極為豐富的環境。我現在回想我的大學生活,會覺得我浪費了很多寶貴的時光。我當時應當使用他們的圖形工作站和其他設備學習知識。
如果你只是為了獲得一個學位,以便找到一份滿意的工作,那么我并不支持。如果你上學是為了結識聰明人、拓展知識面和學習新知識,那么我完全支持。有
些人在大學的收獲比我上面列出的多得多。至于我,我一直都是那種只會看產品手冊的學生。我喜歡這種學習方式,但是并不是所有人都喜歡這樣。我并不認為大學
是一個不好的地方,但是我并不支持這樣的觀點:“你必須上大學,這是唯一的成功之路”。原因很簡單,它并不是唯一的成功之路。
我認為,至少對于一些年輕的、發展迅速的行業(例如互聯網和游戲設計)而言,才能和一份表明你的工作經驗的簡歷比學位更加重要。我從來不問別人“你
是否有一個學位?”我更關心的是“你做過什么?”如果要從坐在課堂里參加考試或者在家里編寫游戲程序來證明你所擁有的天賦之間進行選擇,我認為后者不失為
一條合理的成長道路。
FS: 最后一個問題——你現在玩的是什么游戲機?
John: 我在家經常玩的游戲機是Nintendo 64,但是除此以外我們還擁有Playstation、Saturn和其他一些游戲機。
Firingsquad 和 Gamers.com 非常感謝John和Anna抽出時間接受我們的訪問。我們的這篇文章得到了廣泛的好評,我們希望在不久的將來訪問您所喜愛的其他程序員。請到我們的留言板上發表您對本訪問的看法。