在minecraft的同壹個版本中,相同種子生成的地圖是相同的。
地圖制作細節:
seed:int seed = hashcode(xxxx);這就是為什麽中國人也能制作地圖。
動態生產圖的公式為。
map = fun _ map(int seed)= fun _ sky(int seed)+fun _ terrain(int seed)+fun _ square(int seed)+fun _ architecture(int seed)+fun _ biology(int seed)+fun _ minerals(int seed)。
舉個栗子:
生成映射函數:f(c)
如果f是壹個定函數,f(c)的值對於c的相同值壹定是定的。
c是種子,f(c)是生成的地圖。
地圖生成中使用的隨機函數當然是偽隨機函數。
什麽是偽隨機函數?計算機執行確定性操作,並不存在真正的隨機性,這意味著想要要求計算機“獨立”的隨機數生成器(依賴於外部輸入,如磁盤訪問、鍵盤和鼠標操作等。)來獲得熵源不在討論範圍內。理論上不可能產生真正的隨機數。許多編程應用程序想要隨機效果,使用“偽隨機函數”,即使用非常復雜的算法生成壹系列看似無關但均勻分布的數字(例如,0.9024310185642406,0.6038+06438+042。每當程序調用這個偽隨機函數時,它從這個序列中取出下壹個數字並將其返回給程序。這在孤立的情況下是沒有問題的,但問題是如果妳關閉程序並重新啟動它,妳仍然會獲得原始系列,並且每次妳取壹個隨機數時,妳仍然會獲得與上次相同的數字,例如,它仍然是“0.9438+0438+0438+0+”。20083。000000000606如果妳依靠這個序列來生成遊戲內容,那麽每場遊戲的結果都將相同,這就失去了隨機性的意義。
為了解決這個問題,我們只能在“偽隨機函數”中添加某種“擾動”,使其每次運行的結果都不同,並產生不同的“偽隨機數”。“種子”是最常見的擾動方式。同樣的“種子”產生同樣的系列,不同的種子產生不同的系列。如何保證每次跑步的“種子”都不壹樣?最簡單的方法是使用“系統時間”作為種子。同壹個程序,上次運行和這次運行的時間肯定是不同的,這保證了每次運行的種子都是不同的。當然,如果人為修改系統時間,使兩次運行的系統時間完全相同,仍然會得到相同的操作結果。但作為遊戲,壹般沒必要考慮這些。
這就是《我的世界》地圖種子的工作方式。地圖基本上是由偽隨機函數生成的,這與其他遊戲沒有什麽不同,但我們知道《我的世界》是壹個極客遊戲,它讓您可以控制種子並允許您指定種子,因此當您使用相同的種子時,遊戲中所有本應隨機的元素都將成為“命中註定”。不僅生成的地形完全相同,而且什麽花草牛羊都會畫在任何地方。如果玩家玩的是完全相同的遊戲(這不太可能),那麽整個遊戲完全相當於放映壹部電影,壹切都是預定的。
此外,在minecraft中,地形生成、建築生成和礦物生成是分開的。如果安裝了建築生成或礦物mod,則不會幹擾特定種子和特定地形的形成。