Wiske Abused 笔记

Wiske Abused 笔记

视频传送门

主要的技术细节都在视频里介绍完了,这里补充一些视频里没介绍的细节:

刷怪面积布局

如果凋灵骷髅生成后,站在原地打死也不移动的话,理论上我们可以使用如下图所示的 2/3 面积利用率的刷怪面积。显然,这将显著地提升凋灵骷髅塔的效率

2/3 利用率

可惜我们并不能使用这一布局,因为凋灵骷髅会跑到两列凋灵玫瑰中间,去到一个矿车吸不到的位置

控制玩家与凋灵骷髅的距离,阻止凋灵骷髅随机移动,是不能避免这个问题的,因为凋灵骷髅会被矿车推动。下面是一些矿车相关的知识:

在每个 gt 运算矿车实体的时候,矿车会搜索一个范围内的实体,尝试与其交互。这个范围是其碰撞箱水平 4 方向各扩大 0.2m。碰撞箱与这个范围相交的实体都会被矿车尝试交互

  • 如果矿车是空载状态,这个实体将被吸上矿车
  • 如果矿车已经有了乘客,这个实体会被矿车往外挤

可以发现,只要凋灵骷髅处于能被吸上矿车的站位,那么来一辆载着客的矿车,将会把凋灵骷髅往外挤,直至凋灵骷髅离开了能被矿车吸走的范围

载客矿车推走凋灵骷髅

除非我们可以阻止凋灵骷髅往远离铁轨的方向移动。可惜,到目前最新版本 1.19.2 为止,MC 里不存在能满足不阻挡凋灵骷髅生成的,拥有极窄侧向碰撞箱的方块

活板门不太好使

如上图为例,打开的活板门太宽了,活板门碰撞箱范围与凋灵骷髅的碰撞箱相交,会导致凋灵骷髅无法生成

一种可行的解决方法是,利用生物寻路总喜欢回到方块正中间的特性,放几只铁傀儡让凋灵骷髅走两步,走回方块中间然后被矿车吸走。但这个解决方法的缺点也是显而易见的:部署铁傀儡非常影响刷怪面积的密度,凋灵骷髅的仇恨范围不可控,并且凋灵骷髅索敌消耗的时间也比较高

没办法,还是得乖乖地用 1/2 面积利用率的布局

真想用 2/3 面积的话,还是得等麻将什么时候出一个 2/16 宽度的,类似打开活板门那样横向碰撞箱极窄的方块,这样 0.125m 宽的方块用来限位就可以既防止凋灵骷髅被挤出矿车吸取范围,还能保证凋灵骷髅能正常生成

矿车物品循环

4 层刷怪面积,每 2 宽1个发射器,16gt 时钟,那每一列都会有1x 漏斗速度的矿车流量,因此我们需要找个如 1 宽可堆叠 1x 漏斗速,或 3 宽可堆叠 3x 漏斗速的打包机来处理矿车掉落物

注意这里的打包机的处理速度需要为满漏斗速度,也即换盒耗时不能超过 8gt,否则会在换盒时堆积输入的矿车物品

最后为了便于实现,也为了打包机部分的简洁性,我选择了 3 宽 3x 速打包机,这样会有比较充裕的空间进行 8gt 换盒的布线

3 宽 3x 速打包机

值得一提的是,这些 3 宽 3x 速打包机的满速工作,是需要输入端提供稳定的 3x 漏斗速输入的。如果有一个输入盒子的漏斗不是稳定的1x速输入,那么 3 个输入盒子的漏斗将无法同步其 8gt 运行周期,这会导致打包机无法满速工作,最坏情况下会导致矿车堆积

凋灵骷髅运输方式

理想情况下,凋灵骷髅应该从刷出到死亡,全程待在矿车里,这样可以能真正地最小化凋灵骷髅对刷怪上限的占用

不过这个设想的实践难度极高:带乘客的矿车流难以大范围合并,尤其是考虑峰值流量的时候。作为参考,150头/min 的产率下凋灵骷髅流量将达到一秒 45 只。如果用矿车运载的话,与之对应的矿车流量处理起来会非常棘手,还需要考虑实体挤压窒息的问题

让凋灵骷髅换乘矿车的操作也是不可行的。生物离开载具后会有 60gt 的骑乘冷却,这对存活时间的影响是致命的。最为对比,最终设计里凋灵骷髅下车后的平均存活时间为 50gt。换乘船同理

最后我选择了较为妥协的也最为直观的方案:让凋灵骷髅下车,用机械结构传送带送凋灵骷髅走完最后一程

凋灵骷髅移动路径

最后一次归中

铁轨矿车凋灵玫瑰刷怪面积这种架构的最大特点是,能在几乎不增加凋灵骷髅存活时间的前提下,提升刷怪面积,代价仅仅是卡顿会随之增加

因此,为了最小化存活时间,最理想的情况下是,在所有凋灵骷髅进入了玩家攻击范围的那一刻,就让玩家挥剑击杀凋灵骷髅。这样虽然会因玩家附近 24m 不能刷怪而损失了一些刷怪面积,但换来的存活时间下降是非常值得的

不过,上述仅仅是理想情况。20 血的凋灵骷髅玩家是无法一刀杀死的,需要两次攻击。这意味着凋灵骷髅需要承受 2 次伤害,间隔至少 1 次伤害冷却的时间,也就是 10gt

在这个凋灵塔的设计中,第一次伤害我选择了 TNT 的爆炸。我将 TNT 给出伤害的时间点定在了 20bps + 26.67bps 汇聚的那一刻,这样不仅能伤害到所有凋灵骷髅,还能让 TNT 伤害覆盖上层凋灵骷髅落地时的摔落伤害,统一化所有凋灵骷髅的血量。这应该算是适合放置 TNT 爆炸室的最早时刻

TNT 预伤害

在 TNT 伤害的 10gt 伤害冷却时间里,凋灵骷髅被运送到玩家旋风斩范围。伤害冷却一结束,玩家挥剑斩杀凋灵骷髅

10gt-damage-cooldown

如果玩家挥剑迟了,凋灵骷髅在击杀室落地了,也不需要担心,因为玩家的伤害足够覆盖凋灵骷髅在击杀室的摔落伤害,照样可以秒杀凋灵骷髅

10gt 的时间并不多,再加上把凋灵骷髅从受TNT爆炸伤害处推出来的时间,剩余下弹凋灵骷髅的时间所剩无几,这导致击杀室离刷怪平台的高度无法做的太高。虽然这样损失了一些刷怪面积,但这换来的存活时间下降依然是非常值得的

r=24 不可刷怪范围

矿车轨道架构

对于刷怪面积部分的铁轨线路布局,我曾经做出过如下图右侧的尝试:

折返布局

右侧的布局看上去有着很多的好处:

  • 矿车路程翻倍,有效提升了载客率,矿车物品的流量折半
  • 发射器发车点和仙人掌扎车点接近,不需要长距离运输矿车
  • 下车点离中心更近了,凋灵骷髅下车后走传送带的耗时能减小

但实际测试下来,在相同的刷怪面积的情况下,右侧布局的效率反而下降了,分析见下:

矿车的载客率提升会带来凋灵骷髅等车时间的提升,尤其对于那些生成于铁路末端的凋灵骷髅,得等好一会才能等到一辆空车。这导致了凋灵骷髅上车前存活时间的上升

除此之外凋灵骷髅上车前是没有套上南瓜头的,因此这部分对总刷怪上限占用存活时间的增加是100% 的权重,而非传送带里的 45% 权重

“-6gt(理论 + 实测)的传送带存活时间”的提升,还是抵不过“+2gt(实测)的上车前存活时间 + 刷怪面积阻挡”的下降

最后,右侧布局里矿车跟凋灵骷髅在转弯处增加的路程也会带来不小的卡顿,这部分卡顿还是会随着每层单元数的增加而增加的

可能的提升手段

与层相关的单元数

让每层堆叠的单元数量与层数相关。比如将第四层最边缘的单元移动追加至第一层末端。这样可以进一步减少一部分凋灵骷髅下车后的存活时间

但是由于这对存活时间的降低很小,会增加迭代机器的难度,更重要的是会让机器变丑,我没有去实施

梯形布局

细枝末节

各种刷怪塔通用的细枝末节:

  • 抠 lc
  • 抠同层实体方块数
  • 加大游走范围
  • ……

抠 lc 或许能让效率增加一丢丢,但是会让机器变得很不好看。我可不喜欢为了抠 lc,而整出了个凹凸不平的传送带天花板

同层实体方块当然可以抠,但数量已经没多少了,个别的同层实体方块对效率的影响其实甚至不如测量误差大

加大游走面积的话会增加找到适配堡垒的难度,毕竟现在已经需要 z 宽度 大于等于 ≥ 207m 了。现在 10m 游走其实已经非常足够了,再加的收益非常低

传送带加速

现在凋灵骷髅下车后的归中使用的是 20bps 传送带,如果能整出兼容的 30bps 传送带,可以进一步地减小这一次横向归中所需要的存活时间

但是 30bps 并不是这么容易安上去的。30bps 的复杂度就不提了,这里还需要这个 30bps 还需要 4 高可堆叠,否则会导致效率下降

更重要的一点是,30bps 大部分以是 3 长为基本单位进行堆叠,并且不支持每个位置都输入生物的。但这凋灵骷髅塔的布局是每 4 格一个侧向输入口的,3 和 4 互质,因此必然会存在凋灵骷髅输入口位于 30bps 的非法输入位置的情况。这只有增加适配模块调整凋灵骷髅位置才能解决,但这也会增加存活时间

总体来看,30bps 的工程可行性堪忧

双维度

让凋灵骷髅下车就进传送门,利用地狱门机制进行归中,利用跨维度机制来重置载具冷却,让凋灵骷髅在回地狱的时候立刻上船,类似 burst 的 1.19 凋灵塔(BV1e44y1f71v)

不过如果用了地狱门的话,那就是双维度农场的范畴了

视频制作

mod

Optifine:光影。1.16.5 sodium 的透明方块渲染真的不太行

Replay:核心渲染工具

G4mespeed:丝滑的活塞动画

TweakFork:选择性区域渲染,那些区域半透明的效果就是借助它做的

Carpet-TIS-Addition:拉满方块事件距离、实体追踪距离,让客户端能看得见机器运行时的所有事件

TweakerMore:拉满客户端的实体渲染距离和方块实体渲染距离;保证渲染时玩家皮肤已加载;用伪夜视给 BSL v8 的光影增亮(Tweakeroo 的 tweakGammaOverride 在这个光影下好像不太能用)

光影

BSL 8.0 以后,红石中继器跟红石比较器在激活的时候会出发光效果,这会显得很奇怪。虽然可以关掉光影设置里的 Material-Emissive 来解决,但这也会把其他光源的发光效果干掉

最终我的解决方法是修改光影包 zip 里 shaders/block.properties 这个文件(猜测是用于决定各种方块状态的渲染逻辑的),把里面的 minecraft:repeater:powered=trueminecraft:comparator:powered=true 删掉,就行了

这个方法至少在 BSL v8.2 有效

存档

大部分凋灵骷髅塔的存档都非常的大,存档很多体积都被无用的自然地形填满了,这显然是非常令人不爽的

减少存档体积的方法很简单,将无用的 .mca 文件都删掉,仅保留与机器有关 region 的 .mca 文件

为了最小化地狱侧的 mca 数量,在挑选地狱堡垒的时候,我就专门找了一个位于 region 中间的地狱堡垒,这样整个凋灵骷髅塔包括空置域都能被一个 region 所包含

这样,整个存档只需要包含一个地狱侧 region 的 mca 文件,以及一个主世界出生点 region 的 mca 文件,用于存放快速从出生点前往地狱的命令方块

存档内的mca数量

玩家数据进度什么的文件体积占用不大,可以不做处理

最后,整个存档的体积控制在了 2MB 左右,非常精简