生物群系与世界生成

世界生成

世界生成World Generation, or WorldGen for short)是我的世界的一个重要内容。Minecraft 在发展,世界生成的代码却在很长的一段时间里没有发生太大的变化,而 1.13 正是对这一切进行变革的一个版本。那么为什么我们需要推翻一个使用这么长时间的、看似并没有太大问题的世界生成机制呢?我们为什么要这样变?这样变又有什么好处呢?

——Yaossg《浅析1.13世界生成》

世界生成是我的世界的一个重要内容。Minecraft 在发展,世界生成的代码却在很长的一段时间里没有发生太大的变化,而 1.13 正是对这一切进行变革的一个版本。在之后各个版本的世界生成中,1.13 版本的核心价值一直在不断地体现。这就是为什么会有这篇文章:因为这是一次划时代的更新。本文从世界生成的各个方面,逐一探讨其中的奥秘,揭开新版世界生成神秘复杂的面纱。

——Yaossg《浅析1.13世界生成》摘要

世界生成World Generation, or WorldGen for short)是我的世界的一个重要内容。1.13 重构以来,世界生成的代码在不断地发生变化。尽管如此,仍然有完全不同于其它版本的大改出现——作为分水岭,划时代的 1.17-1.18 更新让我们驻足 1.16。本文就主要围绕这个版本展开。

实际上,世界生成的奥秘无穷,神秘而复杂。要想深入分析世界生成,就必须从它架构说起。

世界生成的基本架构

这次Mojang代码的重构采用了全新的设计模式,增加了代码的可扩展性,主要体现在:

  • 将世界生成的功能被集中在了区块生成器和生物群系两部分上面,而不是离散在方方面面,更便于对代码之间的关系进行分析。

——Yaossg《浅析1.13世界生成》

剖析世界生成的结构,可以从顶层和底层两个角度观察:

  • 从上往下看,维度决定了世界生成,实际上就是由它提供的区块生成器生物群系来源

  • 从下往上看,区块、区元承载了世界生成,构成了整个世界。

两者相辅相成缺一不可,共同构建 MC 世界生成的体系。


接下来,我们重点介绍生物群系知识,来探究生物群系在世界生成中的重要地位。

生物群系的基本概念

如果你不知道什么叫作“生物群系”,我可以告诉你,它是游戏中用于设置何种地表(沙子?还是草?),是下雨还是下雪,长什么树,以及允许何种动物生成的气候区。

——Jens "Jeb" Bergensten

曾几何时,混沌初开 方块大陆上的生物们还在试图理解「为啥周围都变方了」 很快他们注意到了这个大陆上的奇妙的气候 特定的区域的气候是常年不变的,但降水却是随机的 相邻的两块区域的气候基本上是相近的,但有时候也会有雪地连着沙漠的情况 这些生物们开始慢慢适应这奇妙的环境,并最终与这奇妙的环境融为一体

——3TUSK 关于生物群系的诠释

生物群系(Biome) 是描述游戏中不同位置特定属性的享元(Flyweight),它决定了游戏中的自然环境。是的,这个世界无处没有生物群系,这个世界就是由生物群系组成,这个世界的万物包含在生物群系之中。每当加入新的生物群系时,我们都会为之侧目,因为我们知道,这不单单是加入了一个生物群系,更是加入了一个完整的系统。

生物群系——生成区块的第一步

Minecraft会首先获取当前区块下所有的生物群系。

——ustc-zzzz《答知乎提问:Minecraft 的地形生成算法是什么?》

在 1.13 以后,不再这样笼统的区分,每个区块都拥有一个状态,每个状态都表示他已经完成的某一个任务,并提供下一个任务,以此实现异步的区块生成。

(第一个状态)基础(base)状态的第一步:生物群系将会被选定

——Yaossg《浅析1.13世界生成》

在代码层面,生物群系的世界生成的影响也十分深远。正如小标题所言:无论是 1.13 之前还是之后,生成生物群系都是生成区块的的第一个步骤。这样的特殊位置也就意味着,要研究世界生成,第一步就是研究生物群系。

而正是这一点,昭示了生物群系在世界生成中如此特殊的地位,本文的标题和主旨也由此而来。