各位老MC、小飢友們好,我是你們的MC萌新老飢友GW。
我們都知道MC《我的世界》地圖近乎於無限的大,透過11路生物電車走完地圖,都不知道猴年馬月了,如果玩家想獲得心儀的地圖,常常都會詢問別人獲取“種子”,直接在該地圖上冒險。
而“種子”就是決定這個地圖樣子的關鍵因素,就像我們長什麼樣是由爸爸媽媽的基因決定的。在遊戲地圖生成時,會把一個“種子”丟進一個“偽隨機演算法”裡,得到的“偽隨機數”,從而決定地圖的模樣。
01“偽隨機數”具備隨機性和規律性
但“偽隨機數”同時具備隨機性和規律性,老話說:“世界上沒有相同葉脈的2片樹葉”,其一,表示了世界萬物的隨機性和唯一性;其二,樹葉都長得相似,表現出共性,既規律性。
遊戲是計算機執行的,而計算機是產生不了絕對隨機的數字串,因為遊戲程式碼也都是程式設計師按照一定規律編寫,“偽隨機數”其實也是被安排得明明白白,帶有規律。
其中在遊戲的原始碼中有這麼兩段程式碼:
1、根據系統時鐘記錄的“特定數值”,生成“隨機種子”
movedata(0x0040,0x006c,FP_SEG(temp),FP_OFF(temp),4);
該段程式碼的作用:記錄系統的時鐘值,生成“種子”,以供呼叫。如何在一樣的演算法中,加入“相對隨機”的變數呢?Bugjang官方的解決辦法是利用系統時鐘。
每個玩家都是“隨機時間”開啟遊戲的,這不就是最大的“隨機”嗎?
2、將“隨機種子”進一步經過演算法生成“偽隨機數”
RAND_SEED=(RAND_SEED*12359)%65536;
因為“隨機種子”的原因,再經過一步處理後,得到了決定地圖樣貌的“偽隨機數”,看似隨機卻又有著規律性。
如果具體討論,為什麼計算機產生不出絕對的隨機數,那就要從遊戲的原始碼進行分析了,這裡就不展開篇幅細說程式碼和計算機原理,如果各位小夥伴有興趣可私信GW,GW給大夥說說。
02結論
這裡我們可以初步得出有關“偽隨機數”的結論:
1、地圖由“偽隨機數”決定模樣。
2、偽隨機數是由隨機種子根據一定演算法得出的一串隨機數字。因此,種子一樣,演算法一樣,那麼得出的隨機數也就一樣,地圖也就一樣。
3、隨機種子是由電腦系統時鐘來保證隨機性。可以說官方程式設計師富有想象力和挑戰力,用看似變化的數值來代入演算法(手動調系統時鐘,就可保證生成相同的種子,不過也並不影響玩家的遊戲體驗)
一串看似簡簡單單的數字,竟蘊含著大學問,我們玩家看似玩的隨機地圖,卻在程式設計師的程式碼下安排得明明白白。當然這個“隨機性”是可以給玩家所掌握的,官方也曾發發布過amidst“種子檢視器”,方便玩家輸入種子或匯入存檔後檢視地圖,還有根據玩家所選生態群落生成“種子”的工具。
GW也將在下一期分享這個工具的詳細使用方法,並進一步講解一些遊戲地圖生成的知識。
各位老MC,下方評論分享出你們心儀的種子吧,GW將會幫你生成這個地圖貼圖給大家看。
學會不要太膨脹,我是GW,給你們帶來一個腦洞大開的遊戲資訊。
來都來了,不如點贊收藏,關注走一波。