凋灵骷髅塔机制讲解

您所在的位置:网站首页 铁傀儡仇恨机制 凋灵骷髅塔机制讲解

凋灵骷髅塔机制讲解

2024-07-11 15:13:31| 来源: 网络整理| 查看: 265

本篇文章为对应视频“【1.16+】133skull/min 跨维度凋灵骷髅塔”的讲解

文中,大标题描述这个凋零塔的设计思路和运作方式,而小标题则用于说明使用的机制

由于我是以在游戏内进行测试而得出的结论,因此不保证绝对准确

但可以肯定的是,我是基于所得的结论而制作出这个凋灵骷髅塔的

本文为纯文本文章

建议配合视频以及存档观看

存档链接:https://pan.baidu.com/s/1wYTgdncqmhzQxVOnGOwpSQ 

提取码:WSKP

 

刷怪单元

刷怪单元优化自两年前发的凋灵骷髅塔的设计

5gt快速处理堡垒怪物,小猪人则是寻路至下方海龟蛋

原设计由于在制作时尚未更新1.16版本,并没有考虑到1.16版本下猪灵的加入带来的影响

直接升级版本会有大量猪灵占用上限导致效率下降的情况

猪灵不会像僵尸猪灵那样去搜寻海龟蛋,所以只要在沙子上刷出就会一直占用上限

直至游走进地狱门或者窒息死亡

而新的设计在原先的基础上进行修改

增加了地狱砖游走

更换了海龟蛋的位置以修复小僵尸猪灵偶尔卡住的bug

增加了光源来避免猪灵在地狱门上以及白色混凝土粉末上生成

增加了遮光和一些低亮度光源以减少光照更新

利用1.16的标靶方块,压缩了一格高度

在此感谢TIS Carpet作者Fallen_Breath

存活时间统计功能在我排查猪灵生成时给予了很大帮助

 

 

僵尸猪灵的寻路差异

多数情况下,当海龟蛋下方的方块为可站立方块时,僵尸猪灵才会尝试走上海龟蛋

否则僵尸猪灵只会在靠近海龟蛋后,与海龟蛋保持一定的距离

这也是原设计会卡小僵尸猪灵的原因

 

活板门对寻路的影响

活板门在众多版本更改后,仍被生物视为可在上方站立及不会阻挡横向寻路的方块

然而活板门是否打开对此判断并无影响

 

海龟蛋的位置选择

僵尸猪灵搜寻海龟蛋的范围是47*47*7

若海龟蛋所处的位置与僵尸猪灵不处于同一平面时,寻路系统会寻找可下落平台的可行路径

而僵尸猪灵的寻路距离又足够远,因此我将海龟蛋藏在了刷怪平台下方

本设计中,大多数小僵尸猪灵会在尝试下落到打开的活板门上时掉下去

而极少数落在活板门上的也会在下次寻路时被活板门阻挡而掉下去

 

怪物筛选

原设计在1.16版本下恶魂会窒息了,不得不重新设计新方案

由于怪物在地狱生成之后,是通过粘液块弹射进入地狱门

所以从主世界地狱门出来时均会带有一个初始速度

通过在第三格高的位置放置方块

小于2格的其他生物会离开地狱门

僵尸猪灵和骷髅移动时无法通过活板门的1.8125限高,进入摔落通道

烈焰人则能通过限高,进入脚手架

脚手架能够避免烈焰人之间产生碰撞推动

同时,让脚手架含水来持续对烈焰人造成伤害

正方向的水流能够产生充足的推力

可以防止烈焰人因随机游走而离开水方块

旁边的活板门以及海龟蛋用于处理极小概率下卡住的小僵尸猪灵

而大于2格高的凋灵骷髅则留在地狱门中

之后,再用持续甩落生物的船将这些凋灵骷髅提取出来

此处的船在第三格高的位置,绝大多数情况下只有凋灵骷髅会与其产生碰撞并搭载到船上

而船乘坐在矿车上,因此不会传送到地狱,且位置受到矿车的限制

矿车的位置则受铁轨限制,所以船只会在方块中心±0.01的位置

通过气泡柱将被船甩落的凋灵骷髅升起,进入脚手架中消除碰撞并对齐坐标减少卡顿

而其他生物偶然的通过船移动到这里的话,则会被灵魂沙窒息致死

且由于灵魂沙内部存在多层碰撞箱,所以其他生物即使跳跃也会被灵魂沙顶头

(巧克力千层蛋糕(¯﹃¯))

 

 

船搭载生物的机制

当船对生物造成碰撞推动时

(是“船对生物造成”而非“生物对船造成”,这一点很重要)

(就比如你主动乘坐上面包车和被面包车上几个壮汉拐上面包车的区别,在MC里的船属于后者)

如果满足以下条件,船就会搭载该生物

(下文对被搭载的生物简称为“乘客”)

(关于碰撞推动,可见下文“碰撞推动的机制”)

1.船上有空位

2.生物能够搭乘船

3.生物没有搭乘冷却(见下文“生物的搭乘冷却”)

4.船没有进入无法搭乘状态(见下文“无法搭乘的船”)

 

船的碰撞范围

船对生物产生碰撞推动的范围,在大多数情况下

是以碰撞箱为基础,向X轴和Z轴各方向延伸0.2格,即1.375+0.2*2

(下文将此范围简称“延伸碰撞”)

本设计中,从船的位置到地狱门1*3空间的边缘的距离为:X轴1.51格,Z轴1.5格

只要船的碰撞范围加上凋灵骷髅的碰撞箱大于这段距离

那么凋灵骷髅就必然会受到船的碰撞推动,并被船搭载

1.375/2+0.2+0.7=1.5875>1.51

少数情况则包括:

1.船处于无法搭乘状态时(见下文“无法搭乘的船”),对能够上船的生物无延伸碰撞

2.处在搭乘冷却的生物(见下文“生物的搭乘冷却”),船对其无延伸碰撞

3.船处于弱加载区块时,对所有生物无延伸碰撞

4.生物为凋灵,船对其无延伸碰撞

 

生物的搭乘冷却

能够搭乘载具的生物在离开载具后

会有60gt的搭乘冷却,此时该生物无法搭乘任何载具

同时也不会受到载具(船/矿车)的延伸碰撞影响

 

无法搭乘的船

船的视线高度大约在0.5625高的位置

当船的视线高度中心浸水时,生物将无法搭乘上船(下文简称“无法搭乘状态”)

需要注意的是,当船的Y轴坐标为y.4375时,视线高度将会在整数高度

而这可能会产生一些奇怪的问题

 

船下沉的机制

只有一层水的情况下,假设水方块高度为y

当船的碰撞箱与水方块接触时

如果船的高度低于大约y+0.3253894,船将会下沉

但如果船处在y+0.4375的高度上时,船可以受到比y高一格的水方块影响,并且下沉

二层水的情况下,船一般也会受到上层水的影响而下沉,在此不进行考究

 

船甩落乘客的机制

当船持续下沉60gt后

船就会把乘客甩落

被甩落的乘客将会移动至船的X轴、Z轴坐标相同,船的Y轴坐标+0.5625的位置

对于1.16+的版本,甩落乘客的落点将有所不同,似乎与矿车甩落乘客的机制相似

 

持续甩落乘客的船

船甩落乘客的条件与船进入无法搭乘状态的条件不对等,因此可以控制变量单独触发并利用

仅满足甩落乘客条件的船,每gt均能让两个生物搭乘,并在gt+1时将其甩落

仅满足无法搭乘条件的船,虽然船不会搭乘乘客,但已在船上的乘客也不会被甩落

 

数量限制

出于以下几个原因,这里使用了船来限制每次处理的凋灵骷髅数量上限

1.击杀装置每次处理数量存在上限,返回的凋灵骷髅瞬时数量不能过大

2.堆叠的凋灵骷髅数量大于实体挤压限制的话会存在损失

3.让返回的凋灵骷髅所占用的怪物上限更稳定

使用的也是仅满足甩落生物条件的船

而船每gt最多可处理两只生物

由于生物处于可攀爬方块时,船不会搭载该生物

所以我只需让堆叠的凋灵骷髅离开可攀爬方块Ngt就能分离出最多N*2个凋灵骷髅

利用在梯子上方的开启的活板门会视为可攀爬方块的特性

通过开/关活板门来控制凋灵骷髅进入/离开可攀爬方块

对比活塞推动而言该方式不会产生实体移动带来的卡顿

 

 

可攀爬方块对船搭乘生物的影响

处于可攀爬方块中的生物不会受到其他生物的碰撞推动

在碰撞箱相交时只会有处于可攀爬方块中的生物对其他生物的碰撞推动

这使得船无法对处于可攀爬方块中的生物造成碰撞推动

所以处于可攀爬方块中的生物也就无法被船搭载

(关于碰撞推动,可见下文“碰撞推动的机制”)

 

传送带

简单的粘液块弹射传送带,活塞用量比10bps传送带更少

末端额外的活塞用于在下落时对齐凋灵骷髅

底部活塞则是让凋灵骷髅进入气泡柱前再一次对齐

气泡柱的水带有方向,避免堆叠的凋灵骷髅散架

 

 

生物碰撞卡顿

生物在强加载区块中时,每gt均会对碰撞箱相交的生物造成碰撞推动

而处于同一个交点(或者说同一个位置)的情况下

碰撞推动的计算量会随着相交的生物增加呈指数增长,卡顿也随之增加

那么也就出现了减少碰撞推动的需求

而方式有如下几种:

1.所有实体碰撞箱均没有相交时(船和矿车需考虑延伸碰撞),不会产生碰撞推动

2.碰撞箱相交的生物均在梯子之类的可攀爬方块时,不会产生碰撞推动

3.碰撞箱相交的生物之间的坐标差值小于0.01时,不会产生碰撞推动

其中,方式1能从根源上避免碰撞推动产生,因此卡顿也是最小的

而方式2、3则只能减少卡顿

这里我使用的是第三种方式,通过活塞将生物坐标对齐来避免碰撞推动

 

速度(Motion)堆叠

由于弱加载区块中的实体不会进行移动运算,也不会有速度衰减

通过不断的给弱加载区块中的实体增加速度即可轻易的让其获得极高的速度

这里我把凋灵骷髅运送到了地狱门3*3强加载范围的边界

经过前面的移动之后,此时的凋灵骷髅已离开传送门方块超过300gt,传送冷却结束

活塞将其推入弱加载区块,通过推动统一坐标

再用活塞推动造成触碰方块的方式,或是被粘液块推动的方式,实现统一X/Y/Z轴的速度

同时利用粘液块给予1.0的X或Z轴速度,来控制X、Z轴的优先度

最后推动至与蜘蛛碰撞箱相交的位置,开始堆叠X、Z轴速度

由于碰撞推动每gt所增加的速度是固定的

因此只需控制凋灵骷髅与蜘蛛相交的时长即可直接控制凋灵骷髅的速度

最后把拥有极高速度的凋灵骷髅推回强加载区块,同时与地狱门接触

使凋灵骷髅返回地狱后立即弹射归中

而电路设计方面,由于用了两种方向的地狱门方块

因此我制作了两套对应的电路

具体可以在存档里查看

 

我不知道弱加载堆叠速度这个机制是由谁发现的,印象中也看到过利用这个机制制作TNT炮的视频;

弱加载堆叠速度和碰撞推动结合起来的则是2No2Name,详见BV1HK411s7Td

在此表示感谢

 

 

实体移动方式

实体在强加载区块中时,每gt会根据nbt标签中的Motion来进行移动

Motion储存着三个数据,数据类型为双精度浮点数,分别对应X,Y,Z轴的移动量

移动时按照设定的先后顺序在各轴上分别进行直线移动

其顺序为Y轴最优先,而X轴和Z轴则需比较绝对值的大小,更大的轴先行运算

例:获取实体的Motion标签,为[1.0d,0.0d,-2.0d]

意味着该实体在下一gt时,先在Y轴移动0.0格,再在Z轴坐标移动-2.0格,最后在X轴移动1.0格

 

生物的速度清零的条件

活塞推动并不会让生物的速度清零

但推动过程中如果生物因触碰到方块而提前结束移动的话,就会将速度清零

而粘液块推动则是让生物的速度设为1.0

 

碰撞推动的机制

生物在强加载区块中时,每gt均会对碰撞箱相交的生物增加速度

增加的速度的值与相交的两个生物之间的X/Z轴距离相关

距离<0.01时不增加速度

距离≥1时达最大值,为0.05,即每gt增加0.05的速度

且相交的双方均会增加速度

若双方均处于强加载区块时,假设先运算的生物为生物A,后运算的生物为生物B

生物A最多可增加0.05+0.05 的速度

而生物B由于需要进行移动,由生物A运算时给生物B增加的0.05的速度会在移动时体现出来,并计算阻力系数

因此生物B最多可增加0.05+0.05*阻力系数 的速度

在没有被卸载的情况下,运算的先后顺序是实体的生成顺序,先生成的生物先运算

而生物在弱加载区块中时,不会进行移动运算和碰撞运算

所以当弱加载区块中的生物C与强加载区块中的生物D相交时

只有生物D会触发碰撞推动

并同时给生物C和生物D各自增加最多0.05的速度

在此感谢讲解碰撞推动计算的lovexyn0827,感兴趣的话可以去看他的专栏CV12289098

 

地狱门

这里我利用传送门方块的搜寻机制以及两端地狱门结构的对照关系

将凋灵骷髅在地狱出现的目标点尽量向中心偏移

通过搜寻机制,可以让从主世界进入地狱的生物X轴和Z轴各自与换算后的坐标(即X轴和Z轴除以8)造成最多16格的偏移

而地狱门结构的对照关系,则可以在此基础上再造成X轴或Z轴最多20格的偏移

不过为了避免搜寻到错误的传送门方块,我所使用的布局并没有达到上述的最大值

在此感谢Carpet作者gnembon,显示传送门连接的功能帮我排除了一个我一直没排除出来的bug

对地狱门机制感兴趣的话可以去看他的视频BV1iA41177R8

 

 

地狱门的传送机制

1.传送门方块的搜寻

生物通过下界传送门时,会在另一端以换算后的生物坐标(从地狱传送到主世界为X/Z坐标*8,从主世界传送到地狱为X/Z坐标/8)为中心,一定范围内(主世界为256*256,地狱为32*32,Y轴距离不限)搜寻欧几里得距离(直线距离)最近的下界传送门方块

2.地狱门结构的投映

随后基于搜寻到的传送门方块,记录两端的地狱门的大小以及与生物的相对位置,并在传送后等比缩放

“地狱门”的判定在1.16版本是从接触的传送门方块开始,寻找与其连接的传送门方块

基于寻找到的符合条件的传送门方块,来判断整个“地狱门”的大小以及生物所处在的位置

寻找范围以及条件我没有测试

考虑到原版生存中难以制作出大于21*21的传送门方块,我不会进行测试

(应该需要用到区块保存抑制以及更新抑制,然而区块保存抑制在此前的版本就已失效)

不过,经测试存在如下特性

等比缩放后生物不得移动至距离搜寻到的传送门方块大于21格

区块加载的中心点为搜寻到的传送门方块所在的区块

所以无法借助这个特性来给加载链提速

但由于最大的地狱门可达21格宽,足以横跨3个区块

所以限定条件下,生物可以直接传送到弱加载区块中,弱加载TNT掠夺复活了

 

击杀单元

基于实体移动的特性(见上文“实体移动方式”)

在速度堆叠时,控制了X、Z轴的优先度

这样一来,就能让回到地狱的凋灵骷髅先从地狱门的正面出来,避免与地狱门框架碰撞

而凋灵骷髅因其极高的速度,会在5gt内弹射至击杀单元,与船产生碰撞

碰撞后的下一gt,船将会搭载凋灵骷髅,且不再占用上限

随后凋灵骷髅在船上被盔甲架触发横扫之刃砍死

由于凋灵骷髅死亡动画期间仍然处在船上

所以凋灵骷髅占用船的时间最大值为:玩家攻击间隔+20gt死亡动画

这让我用较快的时钟周期时不得不堆叠更多的船作为冗余

这里我每个坑位均堆叠了20个船,最多可同时处理40只凋灵骷髅

 

 

船的作用

1.16版本下,船/矿车搭载的生物不会计入上限

利用这点可以省略掉凋灵骷髅死亡动画及玩家攻击间隔时占用上限的时间

这里再次感谢TIS Carpet作者Fallen_Breath

这个特性是我在使用TIS Carpet的怪物存活时间统计时才意外得知的

(本想用这个功能来统计凋灵骷髅在主世界的存活时间的,没想到上过船的凋灵骷髅都被排除了)

缺失这个特性的话,我就做不出效率这么高的凋灵骷髅塔了

也就不会有这个作品

 

乘客的坐标与船的朝向

船上载有一名乘客时

乘客的X、Z坐标与船的X、Z坐标相同

而船上载有两名乘客时

先上船的乘客的X、Z坐标会是:

从船的X、Z坐标为起始点,向船的朝向以直线距离增加0.2格

后上船的乘客的X、Z坐标则是:

从船的X、Z坐标为起始点,向船的朝向以直线距离减少0.6格

那么为了让先后上船的两名乘客均处于横扫之刃的攻击范围内

就需要控制船的朝向

 

可攀爬方块的作用

虽然乘客与载具之间不会产生碰撞运算

但乘客会与其他船产生碰撞计算

而船上载有两名乘客时,乘客与船的坐标不相等

因此会产生碰撞运算

而可攀爬方块(此处使用的是梯子)能有效减轻碰撞运算

从而降低卡顿

 

在地狱堆叠船的方法

利用玩家在床上睡觉后起床会准确朝向东南西北各个方向的特性

即可放置出准确朝向各个方向的船

再通过地狱门将船传送,就能在地狱堆叠任意数量的船

 

横扫之刃的范围

生物需要同时满足以下两个条件才会被横扫之刃伤害

1.以被玩家攻击的生物为中心,碰撞箱X轴和Z轴各方向向外延伸1格,Y轴各方向向外延伸0.25格的范围,该生物的碰撞箱需要与此范围相交

2.该生物坐标与玩家坐标的欧几里得距离(直线距离)小于3格

在此感谢Youmiel提供的数据

 

横扫之刃的一些未定义性质

首先不得不提一点,生物在受到一些类型的伤害时会产生击退效果

而这会让原先的速度减半并根据方向和生物的状态(站立/浮空),在X/Y/Z轴上增加速度

由于过于冗长,具体的公式就不提了。有兴趣的可自行研究或去看lovexyn0827的专栏CV12289098

而横扫之刃会对符合上述范围条件的生物产生击退效果

并且对于带有无敌标签的生物也仍然适用

而对于没有无敌标签的生物,还会因受到伤害而再次触发击退效果

这导致横扫之刃会直接让生物的速度降低至原先的1/4,拥有极高速度的生物会产生极为明显的降速

不过,对于由伤害产生的击退效果还是可以避免的

1.5版本改动后,生物受到伤害时触发的被击保护不再是真无敌了

而是在此期间若受到伤害的话,受到的伤害需大于上一次造成的伤害才会正常触发并“覆盖”原伤害

这在德芙的直播贴里也有提到过

(但实际并不是覆盖而是减去上一次的伤害,具体可通过TIS Carpet的log damage指令进行测试)

利用这点可以用仙人掌之类不会产生击退效果的伤害,预先使该生物进入被击保护

在此期间玩家用更高的伤害“覆盖”掉原先由仙人掌造成的伤害

就能避免由伤害产生的击退效果

但是由横扫之刃产生的击退效果则无法消除

 

掉落物/经验球处理

掉落物和经验球的生成位置与凋灵骷髅死亡时的坐标相同

而凋灵骷髅搭乘在船上时,其y轴坐标会比船更低

所以掉落物不会直接生成到船中并且产生挤压

其他非凋灵骷髅的生物可能无法使用这种设计

之后用蜂蜜块推动上方掉落物

由于整个过程都是间接的推动

因此不存在掉落物意外挤出来的可能性

漏斗与阳光传感器之间的间隙是0.25,刚好可让掉落物通过

经验球无法通过这个间隙,而在靠近玩家的过程中会接触到岩浆销毁

 

 

蜂蜜块的机制

蜂蜜块移动上方实体的范围为蜂蜜块上方0.5格范围内处于站立状态的实体

所以当掉落物仍在空中时,并不会被蜂蜜块推动

也就不会有掉落物卡到中间

 

电路设计

通过地毯复制的掉落物实现主世界加载以及电路触发

为了避免初次加载时可能产生的卡顿及所带来的影响

各个地狱门的加载会在时序上稍微错开

并且开机后会先进行加载,再激活主世界电路

 

主世界接收端通过物品分类判断时钟开关(即凋灵骷髅处理电路)

若收到白色地毯,则开启

若收到黑色地毯,则关闭

之所以主世界不使用响应设计而是分别制作时钟电路

是为了避免一些意外情况下导致白色地毯延迟或丢包

地狱端地毯复制逻辑则是检测输入的脉冲信号

若为8gt正脉冲,则输出黑色地毯

若为8gt负脉冲,则输出白色地毯

至于为什么不做成两条线路分别控制两种地毯

只是想尝试做单线路的信号传输而已

 

其他

刷怪单元会出现沙子被粘液块粘走的情况

虽然概率极小且对效率影响不大,但需要运维

投影mod的功能可以查找不正确的方块(右Ctrl可透视查找,或者通过原理图纠正功能),建造完成后保存一份结构文件就能在出错时快速找出错误单元

运维只需在上方通过僵尸猪灵的掉落通道下去,投掷物品/箭/雪球触发一下绊线钩即可

 

凋零塔占用的堡垒范围为173*49*176

……

高情商:极大程度的利用了地狱堡垒的刷怪范围

低情商:需要一个天选堡垒才能达成如此效率

 

凋零塔运行时的上限占用在41左右,甚至比上版本还要低

所以理论上仍能继续堆刷怪单元来增加效率

而实际情况考虑到mspt,如果是服务器顶级CPU的话也确实还能堆

但我喜欢4*4地狱门这样方方正正的感觉

而且再堆的话还要重新设计地狱门排列,重新校对时序

所以就这样吧

 

最后放上一些测试数据

运行平台

CPU:5800X 4.45GHz

内存:8g*2 3200MHz

Java:jdk17

Minecraft:Server

测试方式

服务端假人挂机测试

运行150分钟后测试3分钟



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭