MCBE 区块加载/卸载/保存全流程解析序章——名词解释

作者:Naytia_帕芙洛 · 2026年01月28日 15:07 cv45074160 · 区块机制

本文为区块系列机制解析的序章,旨在统一后文可能会用到的名词和概念。区块系列会全面的从最底层的所有重要细节介绍基岩版区块加载卸载保存流程。研究基于对BDS1.21.1.03,1.16client,1.21.110的反编译,以及游戏内实验。本文只介绍重要的名词和概念


一、区块(Levelchunk)

1 LoadState:指区块的加载状态,在1.21.110之前为0-9,一共十个状态。在1.21.110后新增了几个。

2TickQueue(BlockTickingQueue): 区块存储的计划刻,内部记录了NextTickQueue和ActiveTickQueue两个记录Blocktick的优先队列,还记录了拥有它的区块和currentTick(区块计划刻系统的内部计时器),该对象的QueueType是计划刻

3RandomTickQueue(BlockTickingQueue):区块储存的随机计划刻,结构和计划刻列表一样,只不过QueueType是随机计划刻

4Generator:生成该区块的chunksource(后文会讲)

5SubChunks: 区块的子区块数组,内部记录subchunk对象,区块的方块以数组的形式分两层(block和extrablock)存储在各个子区块

6FullChunkDirtyTicksCounters:区块的dirtyTicksCounter列表,里面记录了各个子区块,方块实体,实体,计划刻,区块边界的dirtyTicksCounter(后文会讲)

7Entities:区块的实体数组

8BlockEntities:区块的方块实体数组,用于遍历方块实体

9PreservedBlockEntities:刚刚从世界被移除的方块实体到析构前会呆一会的一个地方

二、区块管理器(ChunkSource)

1Chunkside:该ChunkSource管理的区块的宽度

2Parent:该Chunksource的祖先Chunksource,非第一代的chunksource在创建时会继承一些先代chunksource的区块(要不然就是空的了)

3OwnedParent:该ChunkSource的父亲

4ChunkGenerationGridMap:记录正在生成(LoadState在1-8)之间的区块的一个Map

5ChunkGenerationTasksInFlight:记录区块生成任务的一个列表

三、主区块管理器(MainChunkSource)

MainChunkSource是chunksource的子类,包含chunksource记录的一切内容。Mainchunksource是维度的根chunksource,每个维度只有一个,并且记录和管理该维度内的所有区块

1、ChunkMap:记录该维度内所有区块的map

四、局域区块管理器(ChunkViewSource)

ChunkViewSource是chunksource的子类,包含chunksource记录的一切内容。每个玩家都会创建一个chunkviewsource,用于管理玩家加载范围内的区块。同时chunkviewsource还作为一种区块的容器,在涉及到多区块的传递时作为一种载体

1Area:记录chunkviewsource矩形范围内的区块的二维数组

2MainSource:chunkviewsource所属维度的MainChunkSource

四、关于区块的易混淆重要概念

1区块加载:区块加载指的是区块从存档文件加载到内存的过程,而不是区块tick(区块更新)

2区块加载范围:指的是区块加载的范围而不是模拟距离,区块加载范围还分为开始加载范围(会创建区块的范围)和完成加载范围(区块加入世界的范围)

五、杂项

1BlockSource:ChunkSource所对应的方块管理器,用于管理ChunkSource内部区块里的方块行为。BlockSource只能获取所属ChunkSource的区块内的方块

2DirtyTicksCounter:记录了区块的某类更新(如方块实体,子区块,实体...)上次更新的时间和自从归零后的总时间(lastupdate和totaltime)

3服务器线程(MC_Server): 控制游戏更新,游戏逻辑的主要线程,Gametick(gt)便是在这里执行的。每一次循环会执行一次游戏tick

4服务器线程调度器阶段(Scheduler):一个独立于游戏tick,但是仍在服务器线程内的更新阶段。以执行来自其它地方发来的任务为主,执行任务的数量取决于超时任务的比例(别的文章会讲)

5区块回收器(LevelChunkGarbageCollector):卸载区块的管理器

6区块保存管理器(LevelChunkSaveManager):区块保存管理器

7区块加载线程(Streaming Pool):区块加载实际逻辑发生的线程,一般情况下有三个

8IO线程:游戏nbt数据写到存档文件里的地方

原专栏链接 » « 返回区块机制栏目 « 返回文章列表