導航:首頁 > 源碼編譯 > 我的世界地形演算法

我的世界地形演算法

發布時間:2024-05-19 12:26:18

1. MC世界種子的原理是什麼不都是隨機的嗎一串數字怎麼能描述那麼大的數據量

地圖種子的原理是:地圖生產是實時,隨機,可重現的

在相同版本的minecraft里,相同的種子生成的地圖是一樣的
地圖生產的細節:
種子:intseed = hashcode(xxxx);(這也是為什麼中文也可以生產地圖的原因)
動態生產地圖的公式是。
map = fun_map(intseed) = fun_天空(intseed)+fun_地形(intseed) + fun_方塊(intseed) + fun_建築(intseed) +fun_生物(intseed) + fun_礦物(intseed)

舉個栗子:
生成地圖函數:f(c)
如果f是一個確定的函數,那麼對於同樣的c值,f(c)的值一定是確定的。
c就是那個種子,f(c)就是生成的地圖。

地圖生成使用的隨機函數,當然是「偽隨機函數」

什麼是「偽隨機函數」?計算機進行的是確定性運算,不存在真正的隨機性,這意味著想要求計算機「獨立」(依靠外部輸入「例如磁碟存取、鍵盤滑鼠操作等」來獲得熵源的隨機數發生器不在討論范圍之內。)生成真正的隨機數,在理論上不可能。許多編程應用銀橡中想要隨機效果,使用的都是「偽隨機函數」,就是用某種非常復雜的演算法,來生成一系列看似毫無關聯卻又均勻分布的數字(例如 0.9024310185642406, 0.6399798616249142, 0.8728940712975358, ...),稱為「偽隨機數列」,以此來模擬隨機的效果。每次程序調用這個偽隨機此手函數的時候,就從這個數列中取出下一個數字返回給程序。這樣做在孤立來看是沒問題的,但是問題是如果你把程序關閉,重新啟動運行,你得到的還是原來那個數列,每次取隨機數取出來的還是跟上次一樣的那些數字,例如仍然是「0.9024310185642406, 0.6399798616249142, 0.8728940712975358, ...」。如果你依賴這個數列來生成游戲內容,那麼每次游戲所得到的的結果都會一樣,這就失去了隨機的意義。

為了解決這個問題,我們只能從「偽隨機函數」外面給它加入某種「擾動」,讓它在每次運行的時候結果不一樣,產生不同的「偽隨機數列」。「種子」就是最常見的一種擾動方式。相同的「種子」產生相同的數列,不同的種子產生不同的數列。如何保證每次運行的「種子」不相同呢?最簡單的辦法就是採用「系統時間」作為種子。相同的程序,上次運行和這次運行的時間肯定不一樣,這就確保了每次的種子不同。當然,如果你人為去修改系統時間,並且讓兩次運行時的系統時間嚴格一致,那麼還是會得到相同的運算結果。但是作為游戲來說,一般沒必要考慮這些。

Minecraft 裡面的地圖種子就是這樣的原理。地圖本質上是「偽隨機函數」生成的,跟別的游戲沒什麼區別,但是我們知道 Minecraft 是個比較 geeky 的游戲,它把種子的控制權交給你,允許你指定種子,那麼當你森搏嫌使用相同的種子的時候,游戲中所有本該「隨機」的元素都會變成「命中註定」。不僅生成的地形完全相同,連什麼地方會刷出什麼花草牛羊都一樣。如果玩家的玩法操作也完全嚴格相同的話(這個不太可能),那麼整個游戲完全就等於是在放電影,一切都是預定好的。

另外,在minecraft里,地形生成、建築生成、礦物生成是分開的,如果安裝了生成建築或者礦物mod,並不會干擾特定種子的形成特定的地形。

2. 鎴戠殑涓栫晫-鍒朵綔鑷鐒跺湴褰㈡柟娉


銆婃垜鐨勪笘鐣屻嬭繖嬈炬父鎴忕洰鍓嶅寘鍚浜嗗悇縐嶅悇鏍風殑娓告垙鎶宸э紝鍏朵腑鍒朵綔鑷鐒跺湴褰㈠氨寰堥噸瑕侊紝濂界殑鍦板艦浼氳╂父鎴忓彉寰楁洿鐪熷疄錛屼竴璧風湅鐪嬪叿浣撶殑鏁堟灉鍚!
濂芥瘮璇磋繖鏄騫沖畬鍦板悗榻愭暣鐨勮竟緙橈紝涓鐐逛篃涓嶈嚜鐒躲
緇忚繃鎴戠殑鎶宸у勭悊鍚庣殑鎯呭喌鏄榪欐牱鐨勶紝榪欏彧鏄綆鍗曠殑紺烘剰錛屾墍浠ユ晥鏋滃苟涓嶅敖鍠勫敖緹庯紝鎴戣繖閲屽彧涓哄憡璇夊ぇ瀹惰繖鏍蜂竴涓鍘熷垯鑰屽凡錛屽ぇ瀹朵緷娉曠偖鍒跺氨鑳藉仛鍑烘洿濂界殑鏁堟灉銆
鎺ヤ笅鏉ユ垜璇磋村叿浣撶殑鍋氭硶銆
澶у跺鉤鏃惰佹敞鎰忚傚療mc鏈韜鐢熸垚鍦板艦鏃剁殑寮鏇叉槸鎬庢牱鐨勶紝鐒跺悗浣犲湀鑼冨洿鐨勬椂鍊欐墠鑳藉湀鍑哄悎鐞嗘祦鐣呯殑鏇茬嚎銆
鍏跺疄榪欎釜鍜屽儚緔犵敾鐢繪洸綰挎槸涓鍥炰簨= =
鎵浠ュ彲浠ュ熺敤閭h竟鐨勬硶鍒欏ぇ瀹舵病浜嬪彲浠ョ湅鐪嬪儚緔犵敾鐨勭粯鍥炬妧宸с
鎴戜滑璇翠釜渚嬪瓙銆
鎴戣瘯鍥劇敤鏇茬嚎閾炬帴涓や釜騫寵岀嚎錛岃繖鏍風湅璧鋒潵鑲瀹氱壒鍒鐨勪笉鍜岃皭瀵瑰惂錛
涓嬪浘榪欏氨濂藉氫簡錛屼絾鏄綰㈡嗚繕鏄鎬鎬鐨勩
鏂規硶灝辨槸涓嶈佺洿鎺ヨ繛鐩寸嚎錛屾洸綰跨殑璇濈敤2鏍3鏍煎幓鍋氱殑璇濅細濂戒竴鐐廣

3. 鎴戠殑涓栫晫涓涙灄鍦板艦鎬庝箞鎵撅紵

鍦ㄧ敓瀛樻ā寮忎笅錛屼綘闇瑕佸噯澶囬熺墿銆佺伀鎶娿佹湪鏉愩佹﹀櫒銆佸伐鍏楓佹姢鐢茬瓑錛屼互鍙婂伐浣滃彴鍜屽簥榪欎簺鎺㈤櫓蹇呭囩墿鍝併
璁頒笅瀹剁殑鍧愭爣xyz錛堟寜F3寮瑰嚭璇︾粏鏁版嵁錛夛紝浠ュ厤榪瘋礬鎵句笉鍒板剁殑鏂瑰悜銆
鏈濈殑鏂瑰悜鏄疦錛屼篃灝辨槸north鍖楋紝涓鐩磋蛋銆
榪愭皵濂界殑璇濊蛋涓嶈繙灝辮兘鎵懼埌涓涙灄錛屾壘涓嶅埌涓嶈佹斁寮冿紝鍙浠ラ傚綋鎹涓鏂瑰悜鎴栬呬竴鐩村墠榪涳紝閮借兘鎵懼埌涓涙灄銆

銆婃垜鐨勪笘鐣屻嬫槸涓嬈3D絎涓浜虹О娌欑洅娓告垙銆傜帺瀹跺彲浠ュ湪涓夌淮絀洪棿涓鑷鐢卞湴鍒涢犲拰鐮村潖涓嶅悓縐嶇被鐨勬柟鍧楋紝鐢ㄦ兂璞″姏寤虹珛騫舵帰緔涓涓涓撳睘浜庣帺瀹剁殑涓栫晫銆傛父鎴忕敾椋庣嫭鐗癸紝涓繪墦縐鏈ㄩ┈璧涘厠椋庛傛父鎴忛噷鐜╁跺彲浠ュ湪鍗曚漢鎴栧氫漢妯″紡涓閫氳繃鎽ф瘉鎴栧壋閫犳柟鍧椾互鍒涢犵簿濡欑粷浼︾殑寤虹瓚鐗╁拰鑹烘湳錛屾垨鑰呴氳繃鏀墮泦鐗╁搧鎺㈢儲鍦板浘鏉ュ畬鎴愭父鎴忕殑涓葷嚎浠誨姟錛岄氳繃鑷宸卞壋閫犵殑浣滃搧鏉ヤ綋楠屼笂甯濊埇鐨勬劅瑙夈

閱讀全文

與我的世界地形演算法相關的資料

熱點內容
pdf推文 瀏覽:353
69程序員 瀏覽:577
阿里雲伺服器鏡像如何遷移到騰訊 瀏覽:979
安卓如何顯示日期在狀態欄 瀏覽:800
cadsplt這個命令用不了 瀏覽:463
安卓誇克怎麼取消監管 瀏覽:662
pdf怎麼裁剪圖片 瀏覽:436
黑上宏命令 瀏覽:644
mac解壓壓縮包有密碼 瀏覽:704
命令與征服知乎 瀏覽:561
小時代pdf 瀏覽:221
化工設備第三版答案pdf 瀏覽:465
防火卷簾控制器單片機程序 瀏覽:16
rdlcpdf 瀏覽:109
鏈表實現快速排序python 瀏覽:590
php輸出命令 瀏覽:987
d站app叫什麼名字 瀏覽:172
oppor系列如何解除應用加密 瀏覽:602
程序員那麼可愛姜逸城初戀 瀏覽:500
modbustcp編程 瀏覽:493