游戏Minecraft中的世界类型 无主之地( 五 )


PocketInvEditor (或任何可以移动玩家位置的游戏编辑器)

    创建一个新的“无限”世界 (名字和种子不限)
    载入该世界并稍等一会, 然后完全关闭游戏 。
    打开你选择的编辑器, 并移动/传送玩家到一个在 X/Z: 12,550,780 附近的地方 。
    重新打开游戏,并且载入该世界, 然后等一小会, (你也许需要走一小段) 你就可以看到手机版游戏的边境之地了 。
当你在第四步时载入世界后,游戏崩溃了,不用担心,这很正常, 重新试一次 。
在边境之地移动会有很多故障,你最好只进行短时间移动 。
确保你处于飞行状态, 边境之地的方块不是固体 。
边境之地的地形生成很慢,渲染距离很短 。

游戏Minecraft中的世界类型 无主之地

文章插图
生成原因地形是通过16维Perlin噪声倍频函式生成的 。每个噪声生成器需要输入一个浮点值和一个插值 。它是这样工作的:
    Java 将1个整数向下取整到0,并挑选最接近表示值来处理溢出 。
    如果这个整数大于原来输入的数字,那幺将这个数字减1,然后向下取整 。
    将原始数字与该数字相减,获得一个余数,并在插入到 [0,1] 区间内的合适区域 。
它在 [?2, 2] 之前不会造成任何问题 。问题是,许多倍频函式的涵盖範围比一个方块还要小,每个方块最多只能够有 171.103 个噪点 。要注意的是,2≈171.103×12,550,824.053,一旦超过这个值,这个整数将永远是 2?1,因此在一个轴上每次都会生成相同的噪声值 。这个是造成边境之地和边境之地的隧道地形长期不变的原因 。正数的余数通常从一个相当小的值开始,但在通常情况下比1要大得多,并以每个方块 171.103 的速度递增 。负数的余数从?2开始 。然后通过((6x?15)x+10)x五次样条曲线拟合函式进行调整 。甚至在每个方块的正数那一段,调整后的值已经在 10附近,并且负数将总会从 ?10附近开始!对于边境之角,就是边境之地的值相乘的结果 。当插值(外推法)尝试变成与这些数字一样大时,它同样会产生巨大的输出 。这个输出让所有的其它地形变矮,并将会赋予地形规则的形状,而不是通过这个噪声函式生成有效的地形 。在输入被除以 2时并求余时,该问题被修复 。无论如何,当噪点每重複 2单位时,不会产生任何的副作用 。但是它并不能防止溢出 。通过移除这些指令,边境之地的地形可以被转化为当前游戏版本的地形 。有几种因素使这种情况更複杂:噪声只抽取4个样本,并往其中线性插值 。这就是为什幺当 12,550,824 时会被漏洞影响,它从 12,550,821 延伸了3个方块 。每个噪声生成器会随机在 [0, 256] 的一个偏移位置中添加它的输入 。这通常会将世界边界移动到 12,550,824 以下,边境之地从 12,550,821 开始,一些少数的种子会在 12,550,825 开始 。非常罕见的是,如果世界边界罕见的在 12,550,824 以内,那幺边境之地的第一对方块看起来差不多和正常的方块一样 。边境之地的南部和北部是各自独立的 。在负数的那一端,边境之地通常在坐标方块 -12,550,825 开始,而正数则在 -12,550,824 开始 。实际上有2组噪声生成器,它们都互相混在一起并互相依赖对方,这相当于负责生成2组的隧道或平原 。偶尔的,如果一个噪声生成器由于它使用了一个不同的偏移位置,在另一个生成边境之地前开始生成边境之地,那幺将会产生不协调的边界 。当另一个倍频函式溢出时,第2组边境之地开始在 ±25,101,648 附近生成 。在那里将没有任何视觉上的变化,因为原始的边境之地会让那里的一切东西缩小 。历史1.8
游戏Minecraft中的世界类型 无主之地