【问题标题】:Minecraft How are Chunk Sections storedMinecraft 如何存储块部分
【发布时间】:2015-09-08 02:59:46
【问题描述】:

我目前正在制作一个 Minecraft 块处理程序,我想知道 Minecraft 块部分是如何存储的。

来自Minecraft Wiki Article on how Minecraft Stores its chunks

Sections:复合标签列表,每个标签都是排序的子块。

一个单独的部分。

Y:本节的 Y 索引(不是坐标)。范围 0 到 15(从下到上),没有重复,但如果为空,则某些部分可能会丢失。

方块:定义地形的 4096 字节方块 ID。每块 8 位,加上 ?下面添加标签中的位。

添加:可能不存在。 2048 字节的附加块 ID 数据。添加到(组合)上述块 ID 的值以形成 0 到 4095 范围内的真实块 ID。每块 4 位。组合是通过将此值左移 8 位,然后从上面添加到块 ID 来完成的。

数据:2048 字节的块数据,另外定义了部分地形。每块 4 位。

BlockLight:2048 字节,记录每个块中块发出的光量。与加载时重新计算相比,加载时间更快。每块 4 位。

SkyLight:2048 字节记录阳光或月光照射到每个方块的量。每块 4 位。

但我不明白Blocks 是如何读取的。块中的每个部分都是 16 x 16 x 16 块。但是 Minecraft 将块存储在 1-d 数组的一个部分中。

【问题讨论】:

    标签: minecraft chunks


    【解决方案1】:

    3D 数组也线性存储在 RAM 中。您需要将坐标转换为索引。对于“块”标签,其公式如下:

    Index = Ycoord * 256 + Zcoord * 16 + Xcoord
    

    这称为 YZX 订单。标签 "HeightMap" 或 "Biomes" 使用 ZX-order (Index = Zcoord * 16 + X)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多