作者:nenn(百度id:正正正正正好

注1:本文中提到的所有Minecraft版本均为1.11。

注2:禁庄转。

我们知道,Minecraft中的矿车有着较为广泛的用途,因为兼具运量大、速度快、搭建方便、成本低廉这些优点,因此被用在不同的交通和运输系统,例如刷怪塔的物资收集系统、自动熔炉的燃料和物品的补给和收集、动物或村民的运输等等。国内最早对1.5以后的矿车系统有较为深入研究的是Octopuscraft(墨鱼服)Mackler发布在Minecraft吧的《【半教程向】关于矿车系统的研究与应用》。这个帖子由浅入深,从最基本的矿车和铁轨的介绍、铁轨的方向控制、基于铁轨的BUD以及铁轨在CUD中的重要作用,到之后编组列车车站系统和矿车分离系统的设计,都给予了玩家相当的启示。可以说,这个帖子启蒙了红石更新以后国内对于矿车系统的研究。

但是如果需要设计一套矿车系统,概念上的启蒙是不足够的。只有对矿车系统进行许多测试并对测试结果进行分析总结,才能得到成熟的铁路系统设计方案。非常遗憾的是,Minecraft Wiki作为一个基本知识的普及平台,并没有提供足够丰富的实验和数据。而本文希望将这些结果呈现出来,以方便不同的玩家进行矿车系统的设计。

关于充能铁轨的基本实验

我们知道在游戏中一共存在六种矿车(普通矿车、运输矿车、动力矿车、TNT矿车、漏斗矿车和命令方块矿车)和四种铁轨(充能铁轨、探测铁轨、普通铁轨和激活铁轨)。这里简单介绍一下这些矿车和铁轨:普通矿车可以运输玩家以及大部分动物和怪物;运输矿车可以运输物品;动力矿车可以使用燃料自行前进;TNT矿车可以产生爆炸;漏斗矿车可以收集物品;命令方块矿车可以执行游戏命令。充能铁轨可以加速或减速矿车;探测铁轨可以对矿车进行探测;普通铁轨可以转向;激活铁轨可以激活TNT矿车或让矿车内的玩家、动物或怪物下车。

2016-12-13_08-40-13

不难理解,常规情况下,矿车自动前进离不开充能铁轨或动力矿车。比于动力矿车,充能铁轨有着更多优势,是主流的矿车动力来源,也是我们重点的研究对象。但是在此之前,需要说明的是其他三种铁轨对于矿车的作用是相同的。有了这一点的保证,之后的实验和结果才有意义。使用一格充能铁轨对矿车进行加速,然后观察矿车在不同轨道上的滑行,可以发现所有矿车的滑行距离是相同的。如果仔细观察整个过程,其实会发现这个过程中这些矿车有微小的不同步。但是这很容易理解为游戏动画渲染造成的结果,因为不论更换充能铁轨的数量还是更换矿车种类,所有矿车的滑行距离都是相同的。所以根据这个小实验很容易得到结论:笔直的普通铁轨、探测铁轨和激活铁轨对于同一种矿车的作用是相同的,这三者之间的互相更换不会对矿车的运动造成影响。

2016-12-13_08-56-48

1.充能铁轨数量和所提供的动力

要研究充能铁轨数量对所提供动力的影响,我们需要着重考虑这些因素的影响:充能铁轨数量、充能铁轨的排列方式、矿车种类、矿车初速度、铁轨角度。作为测量手段,我们使用不带转向和高度差的长距离探测铁轨。依靠长距离探测铁轨的阻尼对充能铁轨提供的动力进行评估,使用命令方块记录下经过每一个探测铁轨的时刻。

1)一格充能铁轨(平地上,矿车初速度为0)的加速作用下

2016-12-13_09-29-22

普通矿车:8格

运输矿车(空):64格

动力矿车:5.13格

TNT矿车:8格

漏斗矿车(空):64格

命令方块矿车:8格

可见矿车按惯性可以大致分为三类:

1)物品运输矿车,有运输矿车和漏斗矿车。不带有物品时可以滑行64格。

2)实体运输矿车,有普通矿车、TNT矿车和命令方块矿车。可以滑行8格。

3)自带制动矿车,有动力矿车。可以滑行5.13格。

对于运输矿车和漏斗矿车,其中载有的物品也会影响到滑行距离。

下图中,左侧方块表示漏斗矿车中的物品数量,铁块、金块、青金石块和钻石块分别对应16、32、48和64个物品,使得漏斗矿车通过比较器输出的信号强度从上到下从0-15变化。

2016-12-13_10-16-49

下图中,左侧方块表示运输矿车中的物品数量,铁块、金块、青金石块和钻石块分别对应1、2、4和8组物品,使得运输矿车通过比较器输出的信号强度从上到下从0-15变化。

2016-12-13_11-03-36

对于漏斗矿车/运输矿车,其载有物品量对应的比较器输出信号强度和滑行距离的关系:

强度00:64.00格

强度01:53.34格

强度02:45.72格

强度03:40.00格

强度04:35.56格

强度05:32.00格

强度06:29.13格

强度07:26.69格

强度08:24.63格

强度09:22.88格

强度10:21.34格

强度11:20.00格

强度12:18.84格

强度13:17.81格

强度14:16.88格

强度15:16.00格

通过指数衰减曲线模型的拟合可以看出,拟合结果和原数据点吻合较好。可以看到整个过程中存在两种阻尼作用,它们的弛豫时间分别为约2s和8.4s,作用强度分别为约16.4和38。

qq20161213110812

对装填不同物品数量的漏斗矿车和运输矿车,滑行距离和耗时之间的关系如下。0-15即漏斗矿车或运输矿车通过比较器输出的信号强度。

qq20161213150006

上图放大后:

qq20161213191331

这样的结果这给分拣不同载货量的运输矿车或漏斗矿车提供了启示。分拣可以使用两种不同的方式:根据经过一定距离的耗时来分拣或根据一定耗时下的路程来分拣。第一种方式下由于不同载货量的运输矿车或漏斗矿车能够滑行的距离在16~64格,因此为保证分拣过程之后矿车不至于失速,一定距离的选取必须短于16格。将转向的普通铁轨考虑在内的话,滑行距离的选取应在0~14格的范围内。然而这段距离对于时间分辨率的要求达到了2gt以下,已经难以通过简单的红石电路进行控制,因此第一种分拣方式的可操作性非常差。相比之下,第二种方式则更加容易实现。所定的一定时间必须比最短耗时150游戏刻更短。根据上图,100~150游戏刻的范围内,不同载货量的运输矿车或漏斗矿车可以通过不同的轨道进行分拣。

qq20161213203901

去除个别干扰点后,使用指数函数进行拟合可以发现,拟合结果和原数据较为吻合。拟合使用两个指数函数和的形式进行,拟合结果显示其中一个指数函数的贡献远大于另一个的,与之前的结果并不类似,这说明这一项阻尼的变化主要是由于运输矿车和漏斗矿车中载货量的不同造的,而另一项阻尼则不受其影响。

qq20161213205327

qq20161213205215

2)多格充能铁轨(平地上,矿车初速度为0)的加速作用下

根据实际经验,在足够多充能铁轨的加速作用下,矿车会匀速前进。那么到底在多少格充能铁轨的最用下,矿车可以达到匀速运动呢?使用同样的方法,观察不同矿车在不同长度的充能铁轨作用下能够滑行的距离。

2016-12-13_21-40-26

2016-12-13_21-42-34

qq20161213213737

也就是说对于不同的矿车种类,充能铁轨的加速作用都存在一个饱和的现象。随着充能铁轨数量的增加,加速作用不是一直增加,而是渐渐趋于饱和。当充能铁轨数量超过某一个阈值时,矿车不会再进行额外的提速了。

运输矿车和漏斗矿车:加速作用饱和的充能铁轨数量是14个。对于这两种矿车,游戏设定了一个截断式的加速上限。

普通矿车、TNT矿车和命令方块矿车:加速作用饱和的充能铁轨数量约为40个。

动力矿车:加速作用饱和的充能铁轨数量是14个。

如果继续仔细观察该实验结果,可以发现一些更有趣的现象:相邻的奇数个和偶数个充能铁轨的加速作用是非单调变化的,充能铁轨的个数增加不一定会导致加速作用的单调增加。仔细观察就可以发现,对于普通矿车,17个充能铁轨能够比18个充能铁轨带来更大的加速作用。

2016-12-13_22-02-11

放大刚才的数据点就可以发现这种根据充能铁轨数量奇偶性发生的变化。在接近加速饱和的过程中,这样的现象会变得更明显。

qq20161213220558

qq20161213220821

3)平地、上坡和下坡充能铁轨(矿车初速度为0)的加速作用下

充能铁轨的坡度对于不同矿车的加速作用也是不同的。这可以通过下面这个简单的实验来验证。

2016-12-14_18-17-35

更改一格探测铁轨的坡度可以发现,不同的矿车的确会滑行不一样的距离。但是这种实验方法有个非常严重的问题,上坡的一格铁轨无法发车,因此无法获得更多的信息。为了避免这一问题带来的影响,发车段的轨道必须是水平的。改变坡度段充能铁轨的数量,观察其与不同矿车滑行距离的变化情况。

2016-12-16_01-46-05

2016-12-16_01-48-13

 

qq20161216052142

阻尼直轨的数学模型

之前的实验中为了了解充能铁轨对矿车的加速作用,使用了在阻尼直轨上滑行的方法进行评估。虽然从实验结果上可以看到明显的变化趋势,但是这些实验难以提供更多信息以帮助我们了解矿车的运动速度等信息。幸运的是,根据之前的实验,我们已经有办法构建起一个基本的阻尼直轨的数学模型,用来评估矿车的运动状态以及铁轨对矿车的作用。

之前的实验中,对于平地上不同数量充能铁轨的加速作用下,漏斗矿车/运输矿车经过不同位置处探测铁轨的耗时和矿车已经在探测铁轨上滑行的距离之间的关系。但是这个实验的数据中,矿车滑行的距离不超过64格,而实际上根据上面的实验结果我们已经知道了,不载有实体的各种矿车最远可以在阻尼直轨上滑行约209格的距离。因此有必要进行更加优化的实验来构建这个模型。对载有实体的普通矿车(下图最上曲线)、运输矿车/漏斗矿车(下图次上曲线)、普通矿车/TNT矿车/命令方块矿车(下图次下曲线)以及动力矿车(下图最下曲线)达到充能铁轨加速至满速后,经过阻尼直轨后的滑行距离与耗时进行研究,可以获得下面的信息。

qq20161216194745

各曲线可以使用同样的公式进行拟合:

qq20161216123637

其中k为矿车在充能铁轨上的饱和速度,h为矿车减速过程中的弛豫时间,t0为偏置时间,A为减速作用的大小,tc为匀速转减速过程的时间节点,b表示距离的偏置。

由于连续性条件,还存在下面的关系:

qq20161216194015

如此可以对不同情况下矿车的运动情况有更深入的所了解。这是因为该拟合图线描述了矿车在阻尼直轨上的S-t关系,通过该关系很容易求得v-t关系及a-t关系,这有助于我们判断进入阻尼直轨时矿车的初速度。

qq20161216124142

qq20161216124249

经过数据的拟合发现,所有的矿车在都可以被足够多的充能铁轨加速到饱和速度。对于动力矿车,饱和速度是0.2格/游戏刻(4格/秒),而对于其余的矿车则是0.4格/游戏刻(8格/秒)。一旦失去充能铁轨的加速作用,不同的矿车就会呈现不同的减速过程。所有矿车的减速过程都遵循e指数衰减的规律。

不同矿车在阻尼直轨上的运动学方程均有如下形式:

qq20161216123637

其中分段处连续且光滑,故有:

qq20161216194015

对运动学方程进行一阶和二阶微分就可以得到不同矿车的v-t和a-t关系:

qq20161216124142qq20161216124249

运输矿车和漏斗矿车在阻尼直轨上的运动学方程参数:

t0=332.17674
bk=0.09704(bk≈0.1)
be=208.77126(be≈209)
h=-199.01578
k=0.40002(k≈0.4)

A =-75.8868
tc =322.6437

普通矿车、TNT矿车和命令方块矿车在阻尼直轨上的运动学方程参数:

t0=29.68292
bk=0.07921(bk≈0.1)
be=23.71155(be≈24)
h=-25.31608
k=0.40161(k≈0.4)

A =-11.8348
tc =33.5279

动力矿车在阻尼直轨上的运动学方程参数:

t0=26.39714
bk=6.09904E-4(bk≈0)
be=9.12571(be≈9)
h=-17.07667
k=0.19992(k≈0.2)

A =-3.8766
tc =28.5671

载有实体的普通矿车在阻尼直轨上的运动学方程参数:

t0=453.57039
bk=0.1025(bk≈0.1)
be=309.62311(be≈310)
h=-332.74978
k=0.39998(k≈0.4)

A =-128.1940
tc =441.0904

由此可知,载有实体的普通矿车、运输矿车/漏斗矿车、普通矿车/TNT矿车/命令方块矿车以及动力矿车在阻尼直轨上的耗时和速度及加速度的对应关系为:

qq20161216201420

qq20161217061914

阻尼弯轨的特殊性

普通铁轨远没有看起来的那么普通。弯曲的铁轨和笔直的铁轨对于矿车的作用并不相同。使用一格充能铁轨对不同矿车进行加速,矿车在阻尼弯轨上的滑行距离都大于在阻尼直轨上的。

2016-12-13_15-51-57

笔直的普通铁轨上,普通矿车:8格

笔直的普通铁轨上,运输矿车(空):64格

笔直的普通铁轨上,动力矿车:5.13格

笔直的普通铁轨上,TNT矿车:8格

笔直的普通铁轨上,漏斗矿车(空):64格

笔直的普通铁轨上,命令方块矿车:8格

 

弯曲的普通铁轨上,普通矿车:11.28格

弯曲的普通铁轨上,运输矿车(空):90.38格

弯曲的普通铁轨上,动力矿车:7.44格

弯曲的普通铁轨上,TNT矿车:11.28格

弯曲的普通铁轨上,漏斗矿车(空):90.38格

弯曲的普通铁轨上,命令方块矿车:11.28格

可以发现,几乎所有的矿车在弯曲普通铁轨上滑行的距离都是在笔直普通铁轨上的约1.41倍,而动力铁轨稍高,为约1.45倍。这两个数值都与sqrt(2)的数值相近。

载物矿车的特殊性

 

 

 

 

 

自动化铁路系统的设计准备

作者:nenn(百度id:正正正正正好) 注1:本文中提到的所有Minecraft版本均为1.12。 1.实现意义及基本技术 设计自动化铁路系统主要是为了解决两类物流问题...

阅读全文

安检模块的优化

作者:nenn(百度id:正正正正正好) 注1:本文中提到的所有Minecraft版本均为1.12。 1.主要优化 来自TopologyCraft的璺斝薧(百度id:璺斝薧)设计的一种...

阅读全文

自动化堆叠矿车分离模块

作者:nenn(百度id:正正正正正好) 注1:本文中提到的所有Minecraft版本均为1.12。 1.功能说明 [1]中提出的新型仓库系统中,车队操控技术是最重要的基础...

阅读全文

1 条评论

  1. Mackler(应该)说过,空载人矿车和满载人矿车是不一样的,为什么开头不提满载人车?