Minecraft的地形生成算法是什么

2024-07-16 00:37:35作者:饭克斯

我来试着简要说一下地形生成吧。其实我一段时间也没怎么关心过地形生成,但是最近我在翻译一个开发文档的时候,那个开发文档提到了一些关于Minecraft地形生成的细节,所以我就被迫了解了一些关于Minecraft地形生成的知识。目前这里只介绍主世界正常情况下的生成,下界和末界或者超平坦什么的再说(可能我会回来填坑呢)。由于本回答所有内容都是本人照着反编译后的Minecraft源代码手动总结而成,所以难免会有疏漏,欢迎指出。同时未经本人允许,禁止转载本答案。这里依照的Minecraft源代码是不包括Forge、Bukkit等任何模组或插件魔改过的纯原版1.10.2服务端代码。当然因为Mojang的代码水平着实不敢恭维,所以说这里我尽可能隐去令人迷惑的代码细节。Minecraft的地形生成分为两个阶段:Generation和Population(这两个词我也不知道怎么翻译合适,就不翻译了)。我们先从Generation阶段开始。Generation阶段主要用于生成基本地形、以及一些大型的建筑等,Generation阶段生成的单位是一个长宽为16,高为256的单个区块,区块也可以说是Minecraft中比方块更大一级的组织单位了。

一、 获取生物群系Minecraft会首先获取当前区块下所有的生物群系。对于生物群系的获取,Minecraft代码是使用一种类似于Decorator模式的方式提供生物群系的信息的。换句话说它就像流水线一样,每个环节都对当前生物群系进行一次处理。这条流水线大概是这样子:加入河流←平整化←放大化←放大化←添加海岸←放大化←添加更多岛屿←放大化←生成向日葵草原←生成山地生物群系←生成边缘生物群系←放大化←放大化←生成更丰富的生物群系←生成深海←生成蘑菇岛←添加更多岛屿←放大化←放大化←生成稀有生物群系←生成高山←生成沙漠←添加更多岛屿←生成高山森林←去除过多的深海←添加更多岛屿←添加更多岛屿←添加更多岛屿←放大化←添加更多岛屿←有锯齿地放大化←在海洋上生成最基本的平原岛←_←

展开全文

相关攻略