-
種子
(遊戲《Minecraft》中的世界生成依據)
鎖定
在Minecraft中,種子(Seed)是一個由一個或多個字符(包括正整數和負整數)組成的一個值,遊戲根據這個值創建每一個Minecraft世界。
種子注意事項
種子在不同平台上不兼容,並且同一平台上的不同版本之間可能不兼容。
種子世界生成方式
當遊戲準備生成世界時,遊戲會調用算法,生成一個偽隨機數,它決定了世界的樣子。但由於偽隨機算法的性質,若算法初始輸入的種子是相同的,算出的最終結果也是相同的。
當世界生成算法更新後,相同的種子就不會生成相同的地形。這也是平台某些不同的遊戲版本中,相同的種子無法產生相同的地形的原因。但在村莊和掠奪更新後,村莊和結構發生變化,但地圖的特徵沒有變化。
一個世界生成後,其種子便已經確定。默認情況下游戲會使用系統時間自動選擇種子,但玩家也可以手動設置種子。種子可以用於與其他玩家分享世界。種子的設置可以用數字(包括負數)、字符等,非純數字種子會被自動轉換成純數字。
如果將舊版本的世界導入到新版本中,則新生成的區塊會基於新的種子,因此並不一定會與舊區塊吻合。被刪除的區塊會重新生成,但只要種子或生成算法其中一個有所不同,區塊就會不同。
種子其實只是輸入到偽隨機算法中的值,而不是世界真正的名字,根據某個種子生成的世界的特徵並不註定與種子的字面含義有關。例如,即使是使用一個生物羣系的名稱作為種子,生成的世界也並不會以此作為主要的生物羣系,也不會在該生物羣落中產生玩家。
[1-2]
種子漏洞
有問題的世界生成
有問題的世界生成是指區塊不能正確加載並導致某些區塊無法渲染 ,不過可能會在一段時間後好起來。某些種子可能由於Java的Math.random函數會返回0,導致世界地形會在x或z軸上重複生成。
種子查看方法
在我的世界:JAVA版中要確定一個世界的種子,玩家需要執行命令/seed。在我的世界:基岩版中,種子可於世界選項界面中查看。
種子技術細節
種子Java版及原主機板
Java中的String.hashCode函數用於將包含非數字字符的種子轉換成純數字。此函數輸出的數據類型限制了遊戲在使用非純數字種子生成世界的總數量(232,即4,294,967,296)。由Minecraft隨機生成的多人聯機世界的種子調用了nextLong函數,可能只有248種。
原主機版主要遵循Java版種子的世界生成。
種子基岩版
基岩版中,種子無論是使用數字還是字符串,都有總共232(4,294,967,296)種可能的世界。這個結論對於64位版本的Windows 10版同樣成立。這是由於基岩版使用了32位的梅森旋轉算法,只接受32位的種子。
種子歷史背景
Java版(Pre-classic) | |
---|---|
rd-160052 | 添加了一個簡單的世界生成器。 |
Java版(Classic) | |
0.0.12a | 世界生成器更新。 |
2009年8月25日 | 展示了再次進行更新的世界生成器。 |
生成更多的懸崖。 |
Java版(Indev) | |
0.31 (2009年12月23日) | 公佈了等軸距級渲染的屏幕截圖。 |
0.31 (2010年1月6日) | 現在可以在生成世界時選擇島嶼、浮島、平坦或原始作為世界類型。 |
可以選擇正方形、長形或下深作為世界形狀。 | |
可以選擇小、正常或大作為世界大小。 | |
0.31 (2010年1月7日) | 下深浮島地圖現在有多層島嶼。 |
現在可以選擇世界主題,有正常和地獄。 | |
0.31 (2010年1月11日) | 現在島嶼生成更多的沙子。 |
0.31 (2010年1月13日) | 海洋現在生成無限的水。 |
0.31 (2010年1月22日) | 水現在可以自然生成於海平面上和浮島上。 |
減少洞穴被水淹沒的可能性。 |
JAVA版(Beta) | |
---|---|
1.3 | 允許玩家自定義地圖種子。 |
1.8.1 | 調試屏幕開始顯示當前世界的種子。 |
JAVA版 | ||
1.2.1 | 服務器將不再向客户端發送種子。 | |
1.3.1 | 12w18a | 由於單人遊戲的實現方式與多人聯機合併,世界的種子不再顯示在調試屏幕上。 |
12w21a | 添加/seed命令,用於顯示當前世界的種子。 | |
1.7.2 | 世界生成算法發生改變,這意味着使用一箇舊版本存檔,原先未加載的區塊將生成不同地形。 |
種子相關知識
- 某些種子會在遊戲內部中返回0,引起洞穴和其他結構的無限生成。
- 107038380838084種子會在第一次被調用時返回0,而164311266871034會在第二次被調用時返回0,導致一些結構分別在X和Z軸上循環生成。
- 某些Mod 將採用前三個調用而不是前兩個調用來生成地形。這導致164311266871034在Y軸上無限地生成洞穴,240144965573432在Z軸上無限地生成洞穴。
- 這個特性是Java獨有的,因為基岩版沒有在第一次或第二次調用時返回0的種子(但是,257678572會在第6次調用時返回0)。這個特性在原主機版也可以看到。
- 只有種子的某些部分會被用於生成的世界上的特定特徵。僅通過將種子轉換為二進制並調整所需位,就可以生成具有相同洞穴系統和生成結構的多個不同的世界。
- 只有種子的某些部分會被用於生成的世界上的特定特徵。僅通過將種子轉換為二進制並調整所需位,就可以生成具有相同洞穴系統和生成結構的多個不同的世界。
- 例如種子發生器只使用種子的前48位來生成洞穴和惡地。
- 在創建世界時輸入種子0將自動生成隨機種子。種子0仍然可以以“creashaks organzine”作為種子進入。
- 這是由於開發者決定的,因為許多遊戲當提供種子選項時,都會使用0作為“隨機”,“無限”或“不在乎”的標誌。
- 參考資料
-
- 1. 種子(世界生成) .中文Minecraft Wiki
- 2. Seed (level generation) .英文Minecraft Wiki