索尼承諾將“增加PS5主機(jī)供應(yīng)”
2023-01-31
更新時間:2022-03-30 03:24:24作者:未知
《無人深空》是怎樣生成一個宇宙的呢?下面帶來“Attack.On.Pika”分享的《無人深空》宇宙產(chǎn)生論述科普,一起來看吧。
為了解釋這個問題,我將用比較通俗的方法來為大家講述“過程算法”。不一定是非常嚴(yán)謹(jǐn)?shù)目茖W(xué)語言,但作為科普文,我希望能讓更多的人看懂。因此專業(yè)人士請手下留情。
現(xiàn)在,請先讓我們回憶起那個神秘的無理數(shù)——π:3.141592654....
我們把這個數(shù)字按位/格子寫在一條很長很長的紙帶上。
為了便于理解,請先想象/認(rèn)為宇宙是"一維"的,各個星球是排列在一條線上的。數(shù)學(xué)知識告訴我們這個無理數(shù)是無窮的,如果我們?yōu)檫@個數(shù)字加上幾條規(guī)則:
1.遇到1時,代表這是個恒星。
2.遇到2時,代表這是個行星。
3...............以此類推
那么此時,我就產(chǎn)生了一個“一維”的宇宙。而且由于π的各個位的數(shù)字并不是按規(guī)律排列的,因此你會感覺這個"宇宙"似乎是隨機(jī)的。
但我們都知道π是個定值,也就是說此時生成的這個宇宙并不是完全隨機(jī)的。它就在那里,并不會因為你每次開啟游戲都要實時模擬出一個真的宇宙。
現(xiàn)實中,宇宙是個多維的。因此,我們現(xiàn)在可以為這條"紙帶"多拉出幾個方向(上下左右前后任意組合),并進(jìn)行任意數(shù)字有規(guī)律疊加。同時也為它制定一系列復(fù)雜得多的規(guī)則,于是一個完全有幾條"紙帶"構(gòu)成的看似隨機(jī)的宇宙誕生了。而你的電腦里卻不過是記錄了一些簡單的數(shù)據(jù)。
專業(yè)點來說,開發(fā)者們通過一些復(fù)雜的"函數(shù)"創(chuàng)建了這個多維的數(shù)組("紙帶集合")。這就是這個游戲宇宙的生產(chǎn)辦法。(要知道計算機(jī)求π的計算式子是π=16arctg1/5-4arctg1/239 ,也是一個函數(shù))
總結(jié)一句:18,446,744,073,709,551,616個星球看似很多,但并不占什么數(shù)據(jù)量,只不過是一些可由計算獲得的數(shù)據(jù),通過一系列形成規(guī)則,構(gòu)成了這個看似無限的游戲宇宙。正如你不需要完全記憶π一樣,這么多星球的數(shù)據(jù)也并不要完全存在硬盤里,你只需要知道怎么計算它,并在需要的時候算出來就行。至于怎么算...往下看:
----------------
或許你可能仍有疑問。但是別怕,請接著往下看。
我看到有人質(zhì)疑,我的硬盤放得下這么大的宇宙么?
我要告訴你,可以的。實際上你的電腦里只存放了一個類似 Ta=a(1-sinθ)和x2+y2-a×x=a×sqrt(x2+y2)這樣的式子(實際上會更復(fù)雜),你每次遇到的星球,不過是CPU為這個式子帶入一個值,計算后獲得的相關(guān)數(shù)據(jù)。比如0x135486754(代表了這是個靠近恒星的沙漠星球以及有小型植物等等等)。
又有人會發(fā)問,我的CPU來得及計算這么大的數(shù)據(jù)么?
我要告訴你可以的。具體的過程簡單一兩句話說不清,但是要知道,官方給出的最低配置是i3。
還有人問,這么多的星球,怎么確保它會和其他的星球不一樣,生物長相怎么模擬?
同樣的道理,開發(fā)者既然有辦法寫一個函數(shù)就一定有另外一個方法寫另外一個函數(shù)。
開發(fā)者預(yù)置了不少的貼圖,并如上賦予了不少的規(guī)則。如
1.遇到1代表這個生物高2m
2.遇到2代表這個生物的嘴型是數(shù)據(jù)庫里編號為0x75的那張貼圖
3..............
實際方法會很復(fù)雜,但是實現(xiàn)原理大致如上。
再一點,學(xué)過計算機(jī)的都會對計算機(jī)得到18,446,744,073,709,551,616以及運算這樣一個復(fù)雜的函數(shù)的能力表示質(zhì)疑,一是懷疑內(nèi)存不夠,二是擔(dān)心計算能力不足。
關(guān)于第一個問題:
同樣再次假設(shè)宇宙是一條"紙帶",星球依次排列。假如在你的視野內(nèi),你可以看到5m長的紙帶,那么你的內(nèi)存也只需要保存著5m長的紙帶,5m之外的紙帶雖然依舊存在,但你并不需要記憶它們,因此實際上你并不需要記錄那么多的星球。當(dāng)你的飛船移動,你就把紙帶移動,你可以看到后面的一部分紙帶而把你身后那些已經(jīng)看不見的紙帶"遺忘"。
這就是"過程生成".
關(guān)于第二個問題:
我們再舉個例子,當(dāng)你查英語字典的時候,如果你要查bull這個單詞,你會先去查目錄,然后從B開頭的單詞查起,而不會從A開頭的單詞查起。A/B之分實際上就是一種標(biāo)簽(tags)。
同樣的道理,每次你模擬這個宇宙,你并不需要從3.14159開始往下運算,只需要查明你當(dāng)前的位置,通過預(yù)定在函數(shù)中的標(biāo)簽,只計算5m長的紙帶就好了。因此看起來運算量很大,實際上并不復(fù)雜。這也就是為什么游戲敢于給出i3最低配置的原因
ps:這部分暫時就這些,有什么沒懂得或者想問的留言吧。
剛剛有人問了,這樣隨機(jī)組合,到時候會不會重復(fù)度很大?
我個人看的內(nèi)部視頻感覺其實還好,因為貼圖是矢量圖,且背后有一定量的復(fù)雜設(shè)定(變形、上色、紋理等等)作為依靠,實際演示的時候制作人告訴我剛剛那只恐龍和那條魚用了一樣的身體,我是完全沒看出來的==?!舵咦印酚螒蚶镆膊⒉皇怯兄鵁o窮的生物組件,但通過相互間的組合創(chuàng)造,也弄出了數(shù)不清的奇特生物。所以我們有理由相信這個游戲里的生物的相似度也并不會太高。
但你非要模擬出180000億個完全不同的星球換我我都不信。畢竟158塊,158塊買個真實宇宙這種事...再等幾百年看看吧.....
對了小聲說一句:說到實際效果,我感覺非常不錯。對喜歡這個配色的玩家來說簡直一顆賽艇。從出宇宙到入星球,每到一個地方都有一種期待感。——個人觀點,選擇性忽略.