新聞中心
一款游戲,讓一位玩家皈依佛教。

這位玩家曾寄信開(kāi)發(fā)者,因其開(kāi)發(fā)的游戲理解了「眾生皆苦,世事無(wú)常」。
[[414413]]
究竟是什么游戲還能讓人看破紅塵?
Dwarf Fortress (矮人堡壘)!
在Roguelike游戲界,你一定不要錯(cuò)過(guò)大名鼎鼎的矮人堡壘!
2006年面世的矮人堡壘可以說(shuō)是「開(kāi)創(chuàng)類的老游戲」,就連《我的世界》開(kāi)發(fā)者們表示自己深受這款游戲的啟發(fā)。
你可知這個(gè)游戲背后的開(kāi)發(fā)者如何將其建造出來(lái)?
矮人堡壘是由Tarn Adams(又名Toady One)一人開(kāi)發(fā),20年來(lái),親自寫下70萬(wàn)行代碼!
最「現(xiàn)實(shí)」的游戲,最有理想主義的開(kāi)發(fā)者
Tarn Adams 從2002年開(kāi)始就在矮人堡壘工作。最初,它只是一個(gè)兼職項(xiàng)目。
從2006年開(kāi)始,Adams一心投入,自己編寫所有的代碼。
期間,Adams的兄弟還幫助他來(lái)設(shè)計(jì)和創(chuàng)建基于游戲的故事。
[[414414]]
圖右為Tarn Adams
目前,他正在開(kāi)發(fā)一個(gè)帶有像素圖形和改進(jìn)用戶界面的版本,可以在Steam上購(gòu)買。
近13年來(lái),矮人堡壘并未在任何游戲平臺(tái)上發(fā)售,這是因?yàn)椤竵啴?dāng)斯兄弟」的信念。
他們希望這款游戲和市面上發(fā)布的商業(yè)版本有所不同,并且矮人堡壘也要以10年為單位,一直更新下去。
對(duì)于這漫長(zhǎng)的更新,這對(duì)兄弟表示并沒(méi)有任何規(guī)劃。
「想到哪,做到哪?!?/p>
[[414415]]
開(kāi)發(fā)后的游戲不賣錢,穩(wěn)定的收入從何而來(lái)?
全靠玩家捐贈(zèng)維持生計(jì)!據(jù)說(shuō),亞當(dāng)斯兄弟每個(gè)月可以有幾千美元的捐贈(zèng)收入,足以維生。
許多游戲玩家為此憤憤不平,但他們卻表示,「我們只是不想成為商人,賺錢對(duì)我們來(lái)說(shuō)沒(méi)有意義」。
他們開(kāi)發(fā)了最「現(xiàn)實(shí)」的游戲,卻是最有理想主義的開(kāi)發(fā)者。
沙盒游戲「鼻祖」,70萬(wàn)行代碼,亞當(dāng)斯兄弟自述
矮人堡壘至今已持續(xù)開(kāi)發(fā)20年,有3種游玩模式。
1、要塞模式(Fortress mode):玩家要幫助一小群矮人從無(wú)到有建造城市。
2、冒險(xiǎn)模式(Adventure mode):該模式下到處都是中世紀(jì)武器和要命的怪物。
3、傳說(shuō)模式(Legend mode):玩家能夠體驗(yàn)逐漸演變的精巧歷史,親歷充滿英雄人物、橫跨幾代人的史詩(shī)戰(zhàn)爭(zhēng)。
那么僅憑一個(gè)人,如何敲下這70萬(wàn)行代碼?
Adams表示,「我嘗試給變量和對(duì)象一致命名,并且留下足夠的注釋來(lái)提醒自己到了一個(gè)代碼點(diǎn)時(shí)會(huì)發(fā)生什么。有時(shí)候我需要多次搜索才能找到想要的線索。
當(dāng)我去重溫一些已經(jīng)十年沒(méi)有碰過(guò)的游戲片段時(shí),這種情況經(jīng)常發(fā)生?!?/p>
在矮人堡壘開(kāi)發(fā)過(guò)程中,Adams 主要使用了2種編程語(yǔ)言,C和C++。
為了將其更容易地移植到OSX和Linux系統(tǒng)中,Adams使用OpenGL和SDL來(lái)處理引擎問(wèn)題。
整個(gè)項(xiàng)目中,除了SDL以便我們可以做端口之外,所有這些都一直保持不變。
在游戲機(jī)制方面,Adams并沒(méi)有使用很多外部數(shù)據(jù)庫(kù),但是偶爾會(huì)選擇一些隨機(jī)的數(shù)字原始資料—— 比如梅森旋轉(zhuǎn)算法(Mersenne twister),還有SplitMix64。
其它類似于矮人堡壘的游戲會(huì)因?yàn)樗惴▎?wèn)題「夭折」。
矮人堡壘用的是A*算法,速度很快,但Tarn認(rèn)為還是不夠好。
一般而言,為了簡(jiǎn)化操作,開(kāi)發(fā)者會(huì)在地圖頂部添加各種大型結(jié)構(gòu)。
但因?yàn)榘吮镜牡貓D非常大,而且還會(huì)不斷變化,用A*算法只會(huì)耗費(fèi)大量維護(hù)時(shí)間。
所以Tarn決定,通過(guò)行走來(lái)追蹤可到達(dá)的連接組件。這樣就算地圖變化再快,更新也很容易。
雖然更新維護(hù)變快了,但這個(gè)方法還是有缺點(diǎn):
維護(hù)的部件指數(shù)只能用于行走。
針對(duì)這個(gè)問(wèn)題,Tarn做過(guò)一些嘗試,但都以失敗告終。
他留意到有些成功的游戲用了矩形覆蓋,覺(jué)得這個(gè)方法還蠻不錯(cuò),但又沒(méi)法確定那些游戲的地圖大小和穩(wěn)定性。
Tarn認(rèn)為,最簡(jiǎn)單方法其實(shí)就是為飛行生物添加一個(gè)新索引。
但因?yàn)閮蓚€(gè)索引都需要同時(shí)維護(hù),而其中一個(gè)索引已經(jīng)夠差了,所以這對(duì)內(nèi)存和速度有很大影響。
又或者可以跟蹤它們的路徑屬性,但是隨著地圖的變化,維護(hù)起來(lái)還是會(huì)變得困難緩慢。
Tarn表示,在代理和地圖復(fù)雜性方面,目前已經(jīng)盡最大能力來(lái)支持agent和復(fù)雜的地圖了,所以如果我們想從中得到更多,就必須做出一些讓步。
「失敗就是樂(lè)趣!」
除了矮人堡壘,Tarn在過(guò)去十年左右的時(shí)間里也嘗試做過(guò)其它游戲項(xiàng)目。
不多,也就大概90個(gè)吧。
不過(guò),有些項(xiàng)目只能持續(xù)了幾天,有些就持續(xù)了好幾年。
這些游戲項(xiàng)目幾乎都是其它類型的游戲,但也有一些是矮人堡壘的輔助項(xiàng)目,比如神話生成器原型。
雖然基本上沒(méi)有多少個(gè)項(xiàng)目能夠持續(xù)運(yùn)作下去,但Tarn認(rèn)為,偶爾擺脫矮人堡壘,開(kāi)開(kāi)小差還是挺不錯(cuò)的。
在這90個(gè)「隨便做做」的項(xiàng)目里,Tarn也想過(guò)用其它編程語(yǔ)言。
他認(rèn)為有些語(yǔ)言是能夠加快實(shí)現(xiàn)設(shè)計(jì),所以他覺(jué)得自己應(yīng)該再學(xué)一點(diǎn)腳本語(yǔ)言,多玩一些線程。
不過(guò)人嘛,都是「想一套,做一套」。
對(duì)于更喜歡設(shè)計(jì)的Tarn來(lái)說(shuō),既然那90個(gè)項(xiàng)目是用來(lái)摸魚(yú)放松的,又怎么會(huì)去學(xué)編程語(yǔ)言呢。
bug是所有開(kāi)發(fā)人員都逃不掉的坑。
在矮人堡壘這個(gè)游戲里,Tarn最喜歡的bug是那只永遠(yuǎn)都打不贏的醉貓。
在酒館里的貓?jiān)诘匕迳献邅?lái)走去,貓爪就沾了不少灑出來(lái)的酒,結(jié)果貓?jiān)谔蜃Φ臅r(shí)候就喝醉了。
這個(gè)bug是因?yàn)樵谪執(zhí)蜃z入東西的代碼里,有個(gè)數(shù)字出錯(cuò)了,結(jié)果這個(gè)bug就讓貓顯示出了酒精中毒的癥狀。
不過(guò),這個(gè)bug反倒是被Tarn利用起來(lái),添在了有毒生物的設(shè)計(jì)代碼里了。
網(wǎng)站名稱:20年,1人寫出70萬(wàn)行代碼!沙盒游戲「鼻祖」13年靠玩家捐贈(zèng)維生
網(wǎng)頁(yè)鏈接:http://m.fisionsoft.com.cn/article/ccospho.html


咨詢
建站咨詢
