我的世界小黑塔原理?
最近迷上了下界,为了搞明白地狱的生成原理,我翻了无数资料,看了很多视频,终于搞明白地狱的形成过程! 首先,我们要知道什么是种子(Seed)值,在创造世界的时候,有一个选项叫做“种子”,这里所说的种子就是由无数个生物群系、岛屿、沙滩组成的大型结构。
举个例子比如12345这个种子,它是这样分布的: 每个种子都有一个对应的地图文件,里面保存了这个世界中所有的生物群落和建筑的结构,当我选择12345这个种子时,游戏的加载地图的文件就会参照它来构建这个世界。 而在下界中,每一个小黑屋都有一个对应的地牢。所以要想研究地下城的生成机制,就要先掌握地牢的生成规律。
要搞清楚地牢的生成规律就得先弄清楚几个概念,第一个是结构化数组(Structured Array),它是一种被标准化的数组设计,允许数组的元素来自多个类型。在java中的list就可以看作是structured array的实现,而Java中的map就是一个hash map,本质上也是structured array的一种。
第二个是块(Chunk),它在我的世界里的实际意义是指一块地形,由256x256个方块的二维数组表示。 我们在设置种子值时,可以给它添加几项特殊的数据,这些特殊数据会形成一系列特定的结构,这些结构最终会形成我们看到的地形。
比如我在创建世界时加入了如下数据: 它们将被转化为下面这样的结构: 从上面我们可以得到一个结论,要想生成随机的地形,只要保证每个种子包含足够多的不同结构就行了。
接下来,我们看一下地狱的生成过程。在主世界64层以下,会不断有新的结构生成出来。 这些结构在主世界中是一目了然的,像树,岩石,草等。
但我们现在探讨的是地狱的生成,所以需要把这些结构带到深渊中去。 当新结构在主世界中生成后,它会沿着坡向上移动,直到遇到水或者岩浆池,此时会产生一个连接主世界的通道,我们把这样的通道称为“活板门”。
只有当有了活板门后,主世界才能与下界相通。 我们把通过活板门从主世界来到下界的结构称为“先驱者”,可以看到在下界中,最先出现的都是各种形状的洞穴。
随着游戏进行,在地狱的表层也会不断有新结构生成,但这些都是不会进入地狱深处的。只有在最外层的结构,在经过一段时间的放置后会自毁,然后从它们中间穿过一个隧道般的路径,才能进入到地狱中。这些外围结构我统一称它们为“哨兵”。