龙空技术网

[我的世界]伪和平的制作过程及原理(1)

我的世界MC百科 212

前言:

如今各位老铁们对“mc算法的原理”大约比较讲究,兄弟们都想要分析一些“mc算法的原理”的相关文章。那么小编在网上收集了一些对于“mc算法的原理””的相关文章,希望姐妹们能喜欢,各位老铁们快快来学习一下吧!

哈喽。大家好,我是百科,我是一位新人创作者,这是我在头条上发布的第一篇文章,如有不足,请各位指出纠正。码字不易,如果大家觉得我的文章还不错的话,请一定要点赞收藏加关注呀

首先我们先来了解一下什么是伪和平。伪和平,是一种利用生物容量上线,以及区块加载的特性,来制作的一种用于抑郁生物刷新的机器。可以让世界不在刷新新的怪物,也就是说,有了它,我们就不用再担心自己建的大(火)基(柴)地(盒)被苦力怕炸没了。

伪和平的基本原理

伪和平的原理实际上很简单,就是通过堆叠怪物,使怪物达到容量上,线,以抑制怪物刷新,来达到让世界不再刷新新的怪物的效果。可由于怪物刷新机制的原因,怪物一远离玩家128格以外就会被立刻刷新,消失的无影无踪,这样伪和平就无法使用了。因此,我们要用特殊的方法来离开和维持伪和平。

接下来。我会讲解一些基础知识,以便于后面讲解伪和平。

一、怪物的刷新与清除。

玩家16格以内,刷怪笼工作。

玩家24格以外,怪物正常刷新。

玩家36格以外,怪物不会移动,并随机清除。

玩家126格以外,怪物立刻消失。

二、什么是区块?

区块(Chunk)是Minecraft世界里一个大小为16×256×16的部分。由于一个世界极大并且包含极多区块,因此游戏仅加载部分区块以使游戏可玩,游戏不会运算已卸载的区块。

1.加载等级

加载等级用于决定了这个区块中哪些游戏内容能够被运算。

加载等级可以分为以下有四种加载等级类型

类型

强加载 31及以下 所有游戏内容都能够被运算

弱加载 32 除了区块刻以及实体不会运算(例如不会移动),所有的游戏内容都正常运行

不可访问 34及以上 各种游戏内容都不会运算,但世界生成会在这些区块中运行。

2.等级传播

等级传播示意图

带有加载标签的区块,会相邻(8个)的区块传播加载等级。对于每张“标签”使用“flood fills”算法从“标签”的位置传播,每向外传播一次就加载等级增加一,直到达到上限44。

3.标签类型

不同来源的标签有不同的类型,用于确定不同加载等级

(1)玩家

由玩家加载的标签。“玩家”标签的加载等级为31。玩家的加载范围内的区块都会获得“玩家”标签。

玩家的加载范围:

玩家的加载范围是一个以玩家为中心正方形。

单人游戏中,正方形的边长取决于选项中的“渲染距离”:边长 = 渲染距离 × 2 + 1.

多人游戏中,正方形的边长取决于server.properties里的“view-distance”:边长 = view-distance × 2 + 1.

例如,当“渲染距离”为5个区块时,强加载区块有11×11,外边围一圈弱加载区块,再围一圈加载边界。

(2)强制

使用/forceload命令可以让区块获得“强制”类型的加载标签。加载等级为31。

“强制”类型的加载标签在游戏重启后依然有效。

(3)出生点

“出生点”加载标签的等级传播

世界出生点所在的区块会获得“出生点”加载标签。使用/setworldspawn改变世界出生点时,加载标签会同时改变。加载等级为22,是游戏中最小的加载等级。

(4)传送门

当实体通过下界传送门传送时,在即将到达的地狱门所在的区块会获得传送门标签,加载等级为30。

“传送门”加载标签本身没有“存活时间”,不过如果传送门300gt(不卡顿则300gt=15秒)内没有使用过,传送门系统会移除这个的加载标签。

(5)龙

“龙”加载类型的加载等级为24。在屠龙战开始时,在末地的(0,0)区块创建,并在屠龙战停止或结束后移除。

(6)瞬移后

实体瞬移后在瞬移到的区块创建的加载标签,包括使用/tp命令、/spreadplayers命令,通过末地传送门。对于/tp命令,加载等级为32,而/spreadplayers命令和末地传送门的加载等级为33。

具有“存活时间”属性,为5gt,也就是说它在5个游戏刻后失效。

(7)编辑

在任意游戏代码调用“getChunk”方法时创建的标签。如果游戏认为这个区块应该被加载,它就会把这个“临时”标签赋给那个区块(可能在创建它之后)。

加载等级与区块是否已经完成世界生成有关。它的等级至少会是33,但在许多情况下会大于33。

例如:生物游荡AI执行时,它将会检查某个方块是否有完整上表面。作为检查的一部分,这个区块会获得等级为33的“临时”类型

4.闲置超时

每个维度都有自己的闲置超时时长。如果这个维度内存在玩家,或者有被强制加载的区块(使用/forceload),闲置超时会被禁用。每次有实体进入/离开这个维度,闲置超时会被重置为0。

如果闲置超时时长到达300,就会停止这个维度的一些运算,其中包括实体运算,屠龙战和全局实体(闪电‌[需要更多信息])。

在加载区块中并不是所有游戏内容永远会运算,因为它们可能还有其他条件,其中包括:

(1)区块刻

在每个游戏刻中,只有区块中心距离玩家128个方块之内的区块才会执行区块刻。

(2)攻击型生物距离玩家超过128个方块时会立即消失。

包括在下界传送门的僵尸猪人和在沼泽小屋的女巫。

被动性生物不会自然生成在距离玩家240x240个方块范围外的位置。

被动性生物的生成数量限制由多少被动性生物被载入内存决定。这意味着所有在出生点区块生成的被动性生物都会被算入该生成数量限制,通常会导致被动性生物无法再次自然生成。唯一的例外是伴随新生成的区块而生成的被动性生物。

5.特殊情况

一个区块中的事件可能会影响外部的区块。如果外部的区块处于非活动状态,则在大多数情况下会立即暂停。特别地,

弱加载区块边缘的方块发生变化,可以将方块更新传播到弱加载区块外部的方块,并使它们做出适当的响应。更新可以一个方块接一个方块地传播,直到传播到加载边界之外,这时它会创建一个“临时”加载标签并且继续传播。

加载等级为33的区块中的方块可以请求一个计划刻,但是直到该区块获得32及以下的等级时才进行处理。

流动的水或熔岩可以扩散到弱加载区块之外的第一个相邻方块,但流动会暂停,直到外部区块获得更高的等级。

火可以传播到弱加载区块外的第一个相邻的可燃方块。像水和熔岩那样,也会暂停;直到外部区块获得33及以下的等级。

草和菌丝可以传播到弱加载区块外的第一个相邻方块。

在强加载区块边缘生长的南瓜和西瓜茎可将其果实放置在外面区块的相邻方块上。

尝试移动到弱加载区块的实体(例如生物、矿车和箭)在离开强加载区块后会即刻停止所有活动。当这个弱加载区块获得更高的加载等级时,实体会继续移动。

强加载区块中的点燃的TNT会摧毁弱加载区块内的方块。

由于文章长度问题。剩余内容请看下一章。

文章资料来源于中文WiKi,如有侵权,请联系删除。

虽然说本文章主要是讲解伪和平。但还是详细讲解了区块,如果没耐心的小伙伴,可以只看到第二大条,第二小条。

文章码字不易,如果觉得还不错的,请不要忘记点赞加关注。

标签: #mc算法的原理