當前位置:編程學習大全網 - 源碼下載 - Minecraft的地形生成算法是什麽?

Minecraft的地形生成算法是什麽?

我來試著簡要說壹下地形生成吧。其實我壹段時間也沒怎麽關心過地形生成,但是最近我在翻譯壹個開發文檔的時候,那個開發文檔提到了壹些關於Minecraft地形生成的細節,所以我就被迫了解了壹些關於Minecraft地形生成的知識。目前這裏只介紹主世界正常情況下的生成,下界和末界或者超平坦什麽的再說(可能我會回來填坑呢)。

由於本回答所有內容都是本人照著反編譯後的Minecraft源代碼手動總結而成,所以難免會有疏漏,歡迎指出。同時,未經本人允許,禁止轉載本答案。

這裏依照的Minecraft源代碼是不包括Forge、Bukkit等任何模組或插件魔改過的純原版1.10.2服務端代碼。當然因為Mojang的代碼水平著實不敢恭維,所以說這裏我盡可能隱去令人迷惑的代碼細節。

Minecraft的地形生成分為兩個階段:Generation和Population(這兩個詞我也不知道怎麽翻譯合適,就不翻譯了)。我們先從Generation階段開始。

Generation階段主要用於生成基本地形、以及壹些大型的建築等,Generation階段生成的單位是壹個長寬為16,高為256的單個區塊,區塊也可以說是Minecraft中比方塊更大壹級的組織單位了。

壹、獲取生物群系

Minecraft會首先獲取當前區塊下所有的生物群系。對於生物群系的獲取,Minecraft代碼是使用壹種類似於Decorator模式的方式提供生物群系的信息的。換句話說,它就像流水線壹樣,每個環節都對當前生物群系進行壹次處理。這條流水線大概是這樣子:

加入河流←平整化←放大化←放大化←添加海岸←放大化←添加更多島嶼←放大化←生成向日葵草原←生成山地生物群系←生成邊緣生物群系←放大化←放大化←生成更豐富的生物群系←生成深海←生成蘑菇島←添加更多島嶼←放大化←放大化←生成稀有生物群系←生成高山←生成沙漠←添加更多島嶼←生成高山森林←去除過多的深海←添加更多島嶼←添加更多島嶼←添加更多島嶼←放大化←添加更多島嶼←有鋸齒地放大化←在海洋上生成最基本的平原島←_←

  • 上一篇:鬥魚官方《野王的加冕》|和大舅哥壹起野王爭霸
  • 下一篇:計算程序
  • copyright 2024編程學習大全網