基于VisualStudio歷時20年打造的史詩級游戲
來源 | InfoQ(ID:infoqchina)
編譯 | 核子可樂、Tina
如果要問有史以來最史詩般的計算機程序是什么,《矮人要塞》一定榜上有名。這是一款 2006 年面世的游戲,開創(chuàng)性地將“先設定好基本規(guī)則,剩下的就讓游戲和玩家自己去發(fā)掘”的理念帶到了電子游戲領域。《我的世界》開發(fā)者曾表示《矮人要塞》深刻啟發(fā)了他的游戲設計思路。
整個游戲自始至終只有一名開發(fā)者:Tarn Adams,又名 Toady One。20 年來,他一直沒有停止過開發(fā)。到目前為止,這款游戲的代碼量已經(jīng)多達 70 萬行。
最近 Adams 在采訪中分享了他對游戲創(chuàng)作以及如何管理一個不斷增長的代碼庫的思考和經(jīng)驗。
《矮人要塞》這款游戲由 Tarn Adams 及其兄弟 Zach 一起設計,其中 Adams 負責開發(fā),Zach 負責劇情。Adams 原本是大學數(shù)學教授,最初只是將這款游戲當作一個副業(yè)進行,2002 年辭職開始全職開發(fā),直到現(xiàn)在都沒有停下過前進的腳步。
截至 2020 年 2 月,游戲最新更新為 0.47.05 版本。按照 Adams 設置的“用進度代替版本號”的命名規(guī)則,這個游戲目前完成度是 47%。Adams 表示,“現(xiàn)階段,我們制定的計劃很可能已經(jīng)超出了我們的能力,需要花更長時間才能完成。”
這款作品支持三種不同游戲模式,包括堡壘建設模式,由玩家指揮一群矮人在荒地上建設一座城市;冒險模式,類似于傳統(tǒng)的 rouguelike 地下城探索游戲,收集充滿中世紀韻味的武器、干掉危險的怪物;最后則是傳奇模式,你可以觀看由游戲本身精心整理出的傳奇歷史,回顧你操作過的每一位英雄人物、跨越幾代人的史詩戰(zhàn)爭。這三種模式之間還會相互影響。當你的矮人定居點年久失修之后,就可以以冒險家的身份進行探索,將兩種玩法的成果納入同一個世界背景下的傳奇當中。
另外,由于整個環(huán)境都是用 ASCII 字符的形式呈現(xiàn),所以一切就變得更光怪陸離了。矮人用小小的笑臉表示,盔甲架對應一個音符,日元標志則代表著洞穴里的邪惡龍蝦人。

Adams 開發(fā)游戲使用的編程語言主要是 C 和 C++,開發(fā)工具此前是 Microsoft Visual Studio,現(xiàn)在改為 Visual Studio 社區(qū)版,用 OpenGL 和 SDL 作為游戲引擎。“只使用 Windows 10 Toshiba 筆記本電腦”,而且“不確定 Linux/Mac 版本中發(fā)生了什么”。在游戲的機制方面,幾乎不使用外部庫,只偶爾會使用一些隨機數(shù)生成器——“很久以前我放入了一個 Mersenne Twister,最近我采用了 SplitMix64。”
在游戲的最初版本中,Adams 就已經(jīng)完成了所有編程工作,如今使用的代碼庫還是 2003 年構建的那套。整個游戲的后臺需要一刻不停地瘋狂運轉(zhuǎn),這也讓《矮人要塞》這款其貌不揚的游戲成為有名的處理器“殺手”。有人開玩笑說,用于娛樂目的的高性能處理器的最佳用途之一是《矮人要塞》。
初版游戲如今被稱為《矮人要塞經(jīng)典版》,通過 Bay 12 網(wǎng)站免費提供。對于各個版本,Adams 需要根據(jù)原始代碼進行大約 12 次相應編譯,包括面向不同平臺的 32 位與 64 位操作系統(tǒng)版本。版本更新的間隔,最快的一次是 26 個月。
從開始到現(xiàn)在,項目幾乎就沒怎么經(jīng)歷過大的、嚴格意義上的重構,在 Adams 看來,花幾個月重做某些數(shù)據(jù)結構就是他為項目所做的最大的改變。
而隨著編碼知識和技能不斷更新?lián)Q代,Adams 還得推動游戲的機制向前發(fā)展。與《我的世界》的 3D 界面比較起來,《矮人要塞》顯得很古老。雖然現(xiàn)在的 3D 游戲開發(fā)已經(jīng)很成熟了,但對于類似 Unity 或 Unreal 之類的庫,Adams 表示就算到現(xiàn)在,他也不確定自己是否會使用。《矮人要塞》實現(xiàn) 3D 的方式只是通過添加 Z 坐標來完成。
歷經(jīng) 20 年的開發(fā),這款游戲的代碼庫已經(jīng)非常龐大,多達 711,000 行。靠人類的大腦,已經(jīng)不可能完全記得住,就算這些全是 Adams 自己一行行實現(xiàn)的。
漫長的開發(fā)過程中面臨的一個問題是遺忘。項目出了問題怎么進行維護,Adams 表示只能靠“搜索”:“我有一個一致的命名方式,而且我不會吝嗇更長的變量和函數(shù)名稱,這樣即使在多年之后,一切仍然可讀。同時也需要留下足夠的注釋,來表示某個代碼點發(fā)生了什么。一般來說,我會注意對未來的自己更友善。”
“這是個規(guī)模巨大的項目,我們沒捷徑可走……”
《矮人要塞》是一款免費游戲。十幾年以來,《矮人要塞》的開發(fā)者拒絕讓這款游戲在任何平臺發(fā)售。Adams 認為《矮人要塞》和市面上那些商業(yè)化的游戲都完全不同,這款游戲要以十年為單位一直更新、發(fā)展下去,他擔心一旦商業(yè)化,會沒法自己把握游戲更新的節(jié)奏。為此,兩人拒絕了很多發(fā)行商的合作請求。
不上游戲平臺銷售游戲,自然就沒有穩(wěn)定的收入。Adams 這么多年全靠玩家捐贈維生,據(jù)他們所說每個月能有幾千美元的捐款收入,足以維持生活和開發(fā)。通過 Bay 12 公司公司的官網(wǎng)頁面,粉絲可以設置一次性或定期的 PayPal 捐贈。

向 Bay 12 Games 捐款的粉絲們,有機會獲得由 Tarn and Zach Adams 親自用蠟筆繪制的手工藝作品。
在 2006 年對外發(fā)布之前的幾年里 Adams 是沒有收入的, 各種花銷完全靠當教授時積攢下來的 15,000 美元。2010 年,依靠粉絲捐贈,他總共掙到了 5 萬美元。2014 年 11 月為 3,400 美元。2013 年 10 月為 4,727 美元。2014 年 12 月躍升至 8,181 美元。
Adams 將生活開支安排得很低,以滿足他“理想狀態(tài)中的開發(fā)者生活”。每月只花費 860 美元的租金,幾百美元的水電費和購買食物的費用,只要能自給自足就行。他對物質(zhì)也沒有什么要求,甚至在 2019 年才開始使用智能手機,在此之前,Adams 對自己的翻蓋手機很滿意。
根據(jù)《紐約時報》的記載,Adams 的開發(fā)生活是這樣的:每天下午 3 點左右醒來,然后通宵編碼,早上 6 點左右睡覺,周而復始。房間窗戶用膠合板遮起來,阻擋陽光以免影響睡眠。
Adams 還在 2011 年拒絕了一家頭部游戲開發(fā)商的工作邀請,以及另一家開發(fā)商 30 萬美元的游戲許可報價,只希望用自己的方式開發(fā)自己的游戲。
這種理想主義的開發(fā)生活,讓許多游戲玩家憤憤不平,但 Adams 卻表示,“我們只是不想成為商人,賺錢對我們來說沒有意義”。
過去 20 年當中,Adams 一直忙于為《矮人要塞》編程,甚至根本沒有時間顧得上圖形設計。為了最大程度削減圖形設計帶來的工作量,他甚至直接從已經(jīng)三十歲高齡的 MS-DOS 中搬出了 ASCII 字符圖像。
Adams 坦言,“有些菜單確實很粗糙,我在設計功能鍵時基本就是亂選的。所以很多玩家抱怨,「為什么得在這個界面里按 U、H、J、K 來實現(xiàn)對應功能?」好吧,有些設計已經(jīng)是 15 年前的東西了,但出于種種原因我一直沒來得及做出調(diào)整。”
由于游戲太過復雜,同時缺少現(xiàn)代游戲中常見的種種便利性設置,使得《矮人要塞》對新手玩家特別不友好。除了簡短的介紹動畫之外,游戲中沒有任何圖形元素,就連鼠標都不支持。新人在看著老鳥通過神秘的鍵盤輸入控制界面時,感覺就像在觀察上世紀八十年代初操盤手們使用的早期股票交易軟件。
但所有這一切,讓《矮人要塞》在游戲評論者及愛好者心中獲得了獨特的地位。它最近還被收錄至紐約現(xiàn)代藝術博物館中,改變了館方對于藝術的審視方式。這款游戲的巨大影響力既體現(xiàn)在講故事的方式上,也體現(xiàn)在對其他游戲開發(fā)者的啟發(fā)上。如果沒有《矮人要塞》,可能就不會有《我的世界》。

雖然《矮人要塞》的開發(fā)工作已經(jīng)持續(xù)了相當長時間,但 Bay 12 給游戲打下的底子確實很好,后續(xù)更新一直相當順利。Adams 會在社區(qū)內(nèi)以博文的形式發(fā)布更新、討論下一階段的開發(fā)目標并說明自己在發(fā)布前如何進行代碼測試。
幾年前,他的兄弟 Zach 被診斷出患有癌癥。雖然已經(jīng)買了比較全面的醫(yī)療保險,但后期費用仍然不低。這時候的 Adams 重新審視自己的開發(fā)計劃,突然被嚇了一跳。“我們一起認真研究起治療價格。如果換作是我,那我絕對會傾家蕩產(chǎn)。”
出于對家族遺傳性癌癥的恐懼,且粉絲的捐贈并不足以幫他們消化掉美國重癥醫(yī)療帶來的沉重負擔。Adams 這才做出了一個“違背初心的決定”——在 2019 年正式啟動游戲的商業(yè)化運營計劃。這對他來說也是一種“道德挑戰(zhàn)”。但登陸 Steam 市場的確幫助他渡過了危機,Adams 總結道,“或者應該說是躲過了一劫。現(xiàn)在我們打算儲備一點能應付緊急狀況的資源,然后安心回到創(chuàng)作中來。”
目前他正在開發(fā)一個改進了 UI 的 Steam 付費版本。對于未來的開發(fā)計劃,在將游戲打磨至完美之前,Adams 還有另外一項重要的更新任務得完成——在游戲里添加邪惡一派的非玩家角色。他以實事求是地態(tài)度向媒體講述了開發(fā)目標,在記者看來他的想法只能用超現(xiàn)實來形容。
這些反派們將在更龐大的游戲世界中由 AI 負責控制。他們會有自己的動機,策劃建立邪惡聯(lián)盟或者逐步滲透政府。Adams 還強調(diào),這些反派甚至能夠囚禁英雄、暗殺國王。當然,反派們也會世代更迭,成為傳奇模式中世界歷史的一部分。最后,反派也將在要塞與冒險模式中閃亮登場,給玩家們制造或大或小的各種麻煩。
現(xiàn)在遠遠不是終點,《矮人要塞》還是希望更多玩家加入其中,為了牢牢抓住用戶的心,Adams 需要花時間打磨這款作品。當然,Steam 版本的推出也讓 Tarn Adams 和他的好兄弟 Zach Adams(兄弟二人創(chuàng)立了 Bay 12 Games 公司開展業(yè)務)實現(xiàn)了財務自由。所以只要他們的健康狀況還允許,兩位就會繼續(xù)更新《矮人要塞》。
事實上,如果這樣一款游戲宣布“徹底完成”,對于粉絲們反而不是什么好消息。這款游戲的獨特之處與核心吸引力,正在于極高的復雜性。它的游戲內(nèi)容堪稱包羅萬象、無所不有。也正因為如此,當問到這款自 2003 年起就一直處于開發(fā)狀態(tài)的游戲什么時候能最終完成時,Adams 給出的答案近乎瘋狂:“完成代表著止步,止步代表著缺憾。”
在 Adams 看來,這條更新之路應該永遠走下去:“開發(fā)到死,永不停更。”
參考鏈接:
https://stackoverflow.blog/2021/07/28/700000-lines-of-code-20-years-and-one-developer-how-dwarf-fortress-is-built/
https://www.polygon.com/features/2019/3/14/18264569/dwarf-fortress-steam-tarn-adams-villains-health-care
版權申明:內(nèi)容來源網(wǎng)絡,版權歸原創(chuàng)者所有。除非無法確認,我們都會標明作者及出處,如有侵權煩請告知,我們會立即刪除并表示歉意。謝謝!

