本站文本內容除另有聲明外,均在知識共享 署名-非商業性使用-相同方式共享 3.0 協議下提供。(詳細信息…

種子(世界生成)

從 Minecraft Wiki
跳到: 導覽搜尋

Minecraft種子(Seed)是一個由一個或多個字符(包括正整數和負整數)組成的一個值,遊戲根據這個值創建每一個世界。[1]

世界生成[編輯 | 編輯原始碼]

當遊戲準備生成一個世界時,遊戲會調用一個算法,生成一個偽隨機數,這個數決定了世界的樣子。但由於偽隨機算法的性質,若算法初始輸入的數值(種子)是相同的話,算出的最終結果是相同的。這就是種子的意義:使用相同的種子可以生成出多個相同的世界。

當世界生成算法更新(通常是加入新的生物群系)後,相同的種子就不會生成相同的地形。這就是某些不同的遊戲版本中,相同的種子無法產生相同的地形的原因。

一個世界生成後,其種子便已經確定。默認情況下遊戲會自動選擇種子(使用系統時間)。但玩家也可以手動設置。使用相同的種子可以重複玩相同的世界,種子也可以用於與其他玩家分享世界。種子的設置可以用數字(包括負數)、字符等,非純數字種子會被自動轉換成純數字(見下)。

如果將舊版本的世界導入到新版本中,則新生成的區塊會基於新的種子,因此並不一定會與舊區塊吻合(這種現象在冒險元素更新後廣泛出現)。被刪除的區塊會重新生成,但只要種子或生成算法其中一個有所不同,區塊就會不同。

必須注意的是種子其實只是輸入到偽隨機算法中的值,而不是世界真正的名字。根據某個種子生成的世界的特徵並不註定與種子的字面含義有關。例如,即使是使用一個生物群系的名稱作為種子,生成的世界並不會以此作為主要的生物群系。

查看種子[編輯 | 編輯原始碼]

要確定一個世界的種子,玩家需要執行命令/seed。在攜帶版中,種子可於世界選項界面中查看。

技術細節[編輯 | 編輯原始碼]

Java 中的String.hashCode() 函數用於將包含非數字字符的種子轉換成純數字。此函數輸出的數據類型限制了遊戲在使用非純數字種子生成世界的總數量(232,即4,294,967,296)。由Minecraft隨機生成的多人聯機世界的種子調用了nextLong()函數,可能只有232種。

攜帶版[編輯 | 編輯原始碼]

攜帶版中的種子,無論是使用數字還是字符串,都有總共232(4,294,967,296)種可能的世界。這個結論對於64位的Windows 10版同樣成立。這是由於攜帶版使用了32位的梅森旋轉算法,只接受32位的種子。

歷史[編輯 | 編輯原始碼]

Pre-classic
rd-160052 添加了一個簡單的世界生成器。
Classic
0.0.12a 世界生成器更新。
0.24_06 世界生成器又更新。
生成更多的懸崖。
Indev
2009年12月25日 公佈了等軸距級渲染的螢幕截圖。
2010年1月6日 現在可以在生成世界時選擇島嶼、浮島、平坦或原始作為世界類型。
可以選擇正方形、長形或下深作為世界形狀。
可以選擇小、正常或大作為世界大小。
2010年1月7日 下深浮島地圖現在有多層島嶼。
現在可以選擇世界主題,有正常和地獄。
2010年1月11日 現在島嶼生成更多的沙。
2010年1月13日 海洋現在生成無限的水。
2010年1月22日 水現在可以自然生成于海平面上和浮島上。
減少洞穴被水淹沒的可能性。
Beta
1.3 允許玩家自定義地圖種子。
1.8.1 調試螢幕開始顯示當前世界的種子。
正式版本
1.2.1 服務器將不再向客戶端發送種子。
1.3.1 12w18a 由於單人遊戲的實現方式與多人聯機合併,世界的種子不再顯示在調試螢幕上。
12w21a 添加/seed命令,用於顯示當前世界的種子。
1.7.2 世界生成算法發生改變,這意味着使用一個舊版本存檔,原先未加載的區塊將生成不同地形。

你知道嗎[編輯 | 編輯原始碼]

  • 某些特定的種子,如107038380838084,會在遊戲內部代碼中返回0[2],導致遊戲生成無限的由洞穴及其它結構構成的陣列。

外部連結[編輯 | 編輯原始碼]

參考[編輯 | 編輯原始碼]