自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

20年,1人寫出70萬行代碼!沙盒游戲「鼻祖」13年靠玩家捐贈維生

新聞 前端
矮人堡壘是由Tarn Adams(又名Toady One)一人開發(fā),20年來,親自寫下70萬行代碼!

[[414412]]

 一款游戲,讓一位玩家皈依佛教。

這位玩家曾寄信開發(fā)者,因其開發(fā)的游戲理解了「眾生皆苦,世事無?!埂?/p>

[[414413]]

究竟是什么游戲還能讓人看破紅塵?

Dwarf Fortress (矮人堡壘)!

20年,1人寫出70萬行代碼!沙盒游戲「鼻祖」13年靠玩家捐贈維生

在Roguelike游戲界,你一定不要錯過大名鼎鼎的矮人堡壘!

2006年面世的矮人堡壘可以說是「開創(chuàng)類的老游戲」,就連《我的世界》開發(fā)者們表示自己深受這款游戲的啟發(fā)。

你可知這個游戲背后的開發(fā)者如何將其建造出來?

矮人堡壘是由Tarn Adams(又名Toady One)一人開發(fā),20年來,親自寫下70萬行代碼!

最「現(xiàn)實(shí)」的游戲,最有理想主義的開發(fā)者

Tarn Adams 從2002年開始就在矮人堡壘工作。最初,它只是一個兼職項目。

從2006年開始,Adams一心投入,自己編寫所有的代碼。

期間,Adams的兄弟還幫助他來設(shè)計和創(chuàng)建基于游戲的故事。

[[414414]]

圖右為Tarn Adams

目前,他正在開發(fā)一個帶有像素圖形和改進(jìn)用戶界面的版本,可以在Steam上購買。

近13年來,矮人堡壘并未在任何游戲平臺上發(fā)售,這是因為「亞當(dāng)斯兄弟」的信念。

他們希望這款游戲和市面上發(fā)布的商業(yè)版本有所不同,并且矮人堡壘也要以10年為單位,一直更新下去。

對于這漫長的更新,這對兄弟表示并沒有任何規(guī)劃。

「想到哪,做到哪。」

[[414415]]

開發(fā)后的游戲不賣錢,穩(wěn)定的收入從何而來?

全靠玩家捐贈維持生計!據(jù)說,亞當(dāng)斯兄弟每個月可以有幾千美元的捐贈收入,足以維生。

許多游戲玩家為此憤憤不平,但他們卻表示,「我們只是不想成為商人,賺錢對我們來說沒有意義」。

他們開發(fā)了最「現(xiàn)實(shí)」的游戲,卻是最有理想主義的開發(fā)者。

沙盒游戲「鼻祖」,70萬行代碼,亞當(dāng)斯兄弟自述

矮人堡壘至今已持續(xù)開發(fā)20年,有3種游玩模式。

1、要塞模式(Fortress mode):玩家要幫助一小群矮人從無到有建造城市。

2、冒險模式(Adventure mode):該模式下到處都是中世紀(jì)武器和要命的怪物。

3、傳說模式(Legend mode):玩家能夠體驗逐漸演變的精巧歷史,親歷充滿英雄人物、橫跨幾代人的史詩戰(zhàn)爭。

那么僅憑一個人,如何敲下這70萬行代碼?

Adams表示,「我嘗試給變量和對象一致命名,并且留下足夠的注釋來提醒自己到了一個代碼點(diǎn)時會發(fā)生什么。有時候我需要多次搜索才能找到想要的線索。

當(dāng)我去重溫一些已經(jīng)十年沒有碰過的游戲片段時,這種情況經(jīng)常發(fā)生?!?/p>

在矮人堡壘開發(fā)過程中,Adams 主要使用了2種編程語言,C和C++。

為了將其更容易地移植到OSX和Linux系統(tǒng)中,Adams使用OpenGL和SDL來處理引擎問題。

整個項目中,除了SDL以便我們可以做端口之外,所有這些都一直保持不變。

在游戲機(jī)制方面,Adams并沒有使用很多外部數(shù)據(jù)庫,但是偶爾會選擇一些隨機(jī)的數(shù)字原始資料—— 比如梅森旋轉(zhuǎn)算法(Mersenne twister),還有SplitMix64。

其它類似于矮人堡壘的游戲會因為算法問題「夭折」。

矮人堡壘用的是A*算法,速度很快,但Tarn認(rèn)為還是不夠好。

一般而言,為了簡化操作,開發(fā)者會在地圖頂部添加各種大型結(jié)構(gòu)。

但因為矮人堡壘的地圖非常大,而且還會不斷變化,用A*算法只會耗費(fèi)大量維護(hù)時間。

20年,1人寫出70萬行代碼!沙盒游戲「鼻祖」13年靠玩家捐贈維生

所以Tarn決定,通過行走來追蹤可到達(dá)的連接組件。這樣就算地圖變化再快,更新也很容易。

雖然更新維護(hù)變快了,但這個方法還是有缺點(diǎn):

維護(hù)的部件指數(shù)只能用于行走。

針對這個問題,Tarn做過一些嘗試,但都以失敗告終。

他留意到有些成功的游戲用了矩形覆蓋,覺得這個方法還蠻不錯,但又沒法確定那些游戲的地圖大小和穩(wěn)定性。

Tarn認(rèn)為,最簡單方法其實(shí)就是為飛行生物添加一個新索引。

但因為兩個索引都需要同時維護(hù),而其中一個索引已經(jīng)夠差了,所以這對內(nèi)存和速度有很大影響。

又或者可以跟蹤它們的路徑屬性,但是隨著地圖的變化,維護(hù)起來還是會變得困難緩慢。

Tarn表示,在代理和地圖復(fù)雜性方面,目前已經(jīng)盡最大能力來支持agent和復(fù)雜的地圖了,所以如果我們想從中得到更多,就必須做出一些讓步。

「失敗就是樂趣!」

除了矮人堡壘,Tarn在過去十年左右的時間里也嘗試做過其它游戲項目。

不多,也就大概90個吧。

不過,有些項目只能持續(xù)了幾天,有些就持續(xù)了好幾年。

這些游戲項目幾乎都是其它類型的游戲,但也有一些是矮人堡壘的輔助項目,比如神話生成器原型。

雖然基本上沒有多少個項目能夠持續(xù)運(yùn)作下去,但Tarn認(rèn)為,偶爾擺脫矮人堡壘,開開小差還是挺不錯的。

在這90個「隨便做做」的項目里,Tarn也想過用其它編程語言。

他認(rèn)為有些語言是能夠加快實(shí)現(xiàn)設(shè)計,所以他覺得自己應(yīng)該再學(xué)一點(diǎn)腳本語言,多玩一些線程。

不過人嘛,都是「想一套,做一套」。

對于更喜歡設(shè)計的Tarn來說,既然那90個項目是用來摸魚放松的,又怎么會去學(xué)編程語言呢。

bug是所有開發(fā)人員都逃不掉的坑。

在矮人堡壘這個游戲里,Tarn最喜歡的bug是那只永遠(yuǎn)都打不贏的醉貓。

20年,1人寫出70萬行代碼!沙盒游戲「鼻祖」13年靠玩家捐贈維生

在酒館里的貓在地板上走來走去,貓爪就沾了不少灑出來的酒,結(jié)果貓在舔爪的時候就喝醉了。

這個bug是因為在貓?zhí)蜃z入東西的代碼里,有個數(shù)字出錯了,結(jié)果這個bug就讓貓顯示出了酒精中毒的癥狀。

不過,這個bug反倒是被Tarn利用起來,添在了有毒生物的設(shè)計代碼里了。

 

責(zé)任編輯:張燕妮 來源: 新智元
相關(guān)推薦

2012-07-23 09:58:50

代碼程序員

2021-03-02 13:56:24

Linux 5.12代碼驅(qū)動

2019-01-03 09:29:15

Linux 系統(tǒng) 數(shù)據(jù)

2009-07-21 08:44:14

微軟Linux內(nèi)核開源操作系統(tǒng)

2015-09-01 16:26:18

Linux內(nèi)核

2020-05-27 14:10:50

代碼開發(fā)工具

2019-09-29 10:29:55

Python 開發(fā)編程語言

2015-08-24 13:46:17

2009-07-21 08:51:33

微軟發(fā)布Linux設(shè)備微軟開源虛擬化

2009-08-20 16:34:50

Linux源代碼紅帽Linux內(nèi)核

2011-05-03 09:10:12

項目管理程序員

2024-03-13 15:48:43

2018-10-15 09:20:08

代碼軟件工程師

2019-04-19 13:01:12

Java代碼庫Go代碼移植

2023-06-28 14:18:06

2009-06-30 08:59:55

上海服務(wù)外包人才

2020-02-24 16:27:19

開源大數(shù)據(jù)計算引擎

2020-10-13 14:43:33

智慧城市華為阿里

2009-11-30 09:17:00

IBM員工數(shù)量

2024-12-16 09:05:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號