我的世界标准化树场速度计算

时间:2017-04-04 来源:88130安卓下载 作者:佚名

  我的世界红石被玩家研究的越来越透彻,各种高速树场的设计也是涌现了出来,各种每分钟几百甚至几千的树场层出不穷,但是你们知道树场的速度吗?今天游戏园小编为大家带来了我的世界树场速度的计算,喜欢的朋友快来看看吧,希望能帮助到大家哦!

  作者:maple_in_thu

   随着FTF的出现和发展,现在越来越多的高速树场设计涌现出来,相互之间为了几百几千的提高而较劲着,然而树场的运行速度是存在随机性的,而大家测速通 常都是测试1分钟,然后乘以60作为一个小时的产量,然而一分钟相差1棵树,最后计算结果也相差了三四百,而通常测试相差的远远不止1棵,因此几百几千的 所谓提高有时候只是测量误差。

  树场以机械为主,时序和延时基本是固定的,但是有两个存在随机分布的量,造成了大家测量结果的不可靠。

  1.每棵树的产出

  2.树长出的时间

  第一种相对容易解决,现在也有很多计数方式是每分钟多少棵树,回避了每棵树的计算,但让人对实际产量的感受不够直观。第二种则是无论如何也回避不了了。

  第二个问题涉及简单的随机分布的计算,看不懂的可以直接看结论,首先讲解一下树生长的时间规律,这里我们忽略掉树的自然生长,仅考虑骨粉的使用。

  树的生长有2个阶段,每次撒一个骨粉,mc会取0~1.0之间的一个随机数,随机数小于0.45,则生长一个阶段,生长了两个阶段树苗就变成了树。

  基本知识就这些。下面推导树场中树木生长,平均究竟要用多少时间。

  第一步先计算撒第x次骨粉时树苗长成了树木的概率px

  这个概率相当于前x-1次骨粉中有一次让树苗生长了第一个阶段,同时第x次骨粉让树苗生长了第二个阶段。

  前者的概率为(x-1)*0.45*0.55^(x-2),后者概率为0.45

  因此px(x)=(x-1)*(0.45^2)*(0.55^(x-2))

  接下来考虑现在多发射器一起为一个树苗喷洒骨粉,N个发射器每次同时发一次,那么如果上面的x≤N,则发射器发射1次,树苗就长成了树木,若N

  因此发射器发射y次时,树苗长成树木的概率py为

  py(y)=∑px(i),(i=N*y, N*y-1, N*y-2, ... , N*y-(y-1))

  这时候就可以算树苗在N发射器齐发的情况下,平均需要多少次发射了,期望值ey为

  ey=∑i*py(i),(i=1, 2, 3, 4, ... , ∞)

  这个无穷级数的解析表达式化建起来比较麻烦,我就直接取了N为1,2,3,4直接数值求解出值了。如下

  N=1, ey=4.444444

  N=2, ey=2.451150

  N=3, ey=1.787229

  N=4, ey=1.463564

  N表示树场有多少个发射器,ey表示树苗平均需要几次撒骨粉才能变成树木

  现在随机的问题解决了,再来讨论树场的周期究竟有多长。

  先对树场的周期做个定义,树场周期的起点和终点定义为树木长出的瞬间,而树场周期则是连续两次树木长出瞬间间隔的时间。

  现在再将一个树场周期分解为2部分,分界点为树苗第一次被发射器喷骨粉的瞬间。

  从树木长出到新放的树苗第一次被发射骨粉,是树场周期第一阶段,从树苗第一次被发射骨粉,到树苗长成树木,是树场周期第二阶段。

  第一阶段再作一个细的划分,分界点是泥土可以再次被放置树苗的瞬间,从树木长出瞬间到树苗可以放置的瞬间,是机械时序阶段,从可以放置树苗,到放置的树苗第一次被发射器喷洒骨粉,是放置树苗阶段。

  机械时序阶段的时间取决于树场的时序设计,例如NTF的机械时序阶段为4.5 tick。

  我的世界红石被玩家研究的越来越透彻,各种高速树场的设计也是涌现了出来,各种每分钟几百甚至几千的树场层出不穷,但是你们知道树场的速度吗?今天游戏园小编为大家带来了我的世界树场速度的计算,喜欢的朋友快来看看吧,希望能帮助到大家哦!

  作者:maple_in_thu

   随着FTF的出现和发展,现在越来越多的高速树场设计涌现出来,相互之间为了几百几千的提高而较劲着,然而树场的运行速度是存在随机性的,而大家测速通 常都是测试1分钟,然后乘以60作为一个小时的产量,然而一分钟相差1棵树,最后计算结果也相差了三四百,而通常测试相差的远远不止1棵,因此几百几千的 所谓提高有时候只是测量误差。

  树场以机械为主,时序和延时基本是固定的,但是有两个存在随机分布的量,造成了大家测量结果的不可靠。

  1.每棵树的产出

  2.树长出的时间

  第一种相对容易解决,现在也有很多计数方式是每分钟多少棵树,回避了每棵树的计算,但让人对实际产量的感受不够直观。第二种则是无论如何也回避不了了。

  第二个问题涉及简单的随机分布的计算,看不懂的可以直接看结论,首先讲解一下树生长的时间规律,这里我们忽略掉树的自然生长,仅考虑骨粉的使用。

  树的生长有2个阶段,每次撒一个骨粉,mc会取0~1.0之间的一个随机数,随机数小于0.45,则生长一个阶段,生长了两个阶段树苗就变成了树。

  基本知识就这些。下面推导树场中树木生长,平均究竟要用多少时间。

  第一步先计算撒第x次骨粉时树苗长成了树木的概率px

  这个概率相当于前x-1次骨粉中有一次让树苗生长了第一个阶段,同时第x次骨粉让树苗生长了第二个阶段。

  前者的概率为(x-1)*0.45*0.55^(x-2),后者概率为0.45

  因此px(x)=(x-1)*(0.45^2)*(0.55^(x-2))

  接下来考虑现在多发射器一起为一个树苗喷洒骨粉,N个发射器每次同时发一次,那么如果上面的x≤N,则发射器发射1次,树苗就长成了树木,若N

  因此发射器发射y次时,树苗长成树木的概率py为

  py(y)=∑px(i),(i=N*y, N*y-1, N*y-2, ... , N*y-(y-1))

  这时候就可以算树苗在N发射器齐发的情况下,平均需要多少次发射了,期望值ey为

  ey=∑i*py(i),(i=1, 2, 3, 4, ... , ∞)

  这个无穷级数的解析表达式化建起来比较麻烦,我就直接取了N为1,2,3,4直接数值求解出值了。如下

  N=1, ey=4.444444

  N=2, ey=2.451150

  N=3, ey=1.787229

  N=4, ey=1.463564

  N表示树场有多少个发射器,ey表示树苗平均需要几次撒骨粉才能变成树木

  现在随机的问题解决了,再来讨论树场的周期究竟有多长。

  先对树场的周期做个定义,树场周期的起点和终点定义为树木长出的瞬间,而树场周期则是连续两次树木长出瞬间间隔的时间。

  现在再将一个树场周期分解为2部分,分界点为树苗第一次被发射器喷骨粉的瞬间。

  从树木长出到新放的树苗第一次被发射骨粉,是树场周期第一阶段,从树苗第一次被发射骨粉,到树苗长成树木,是树场周期第二阶段。

  第一阶段再作一个细的划分,分界点是泥土可以再次被放置树苗的瞬间,从树木长出瞬间到树苗可以放置的瞬间,是机械时序阶段,从可以放置树苗,到放置的树苗第一次被发射器喷洒骨粉,是放置树苗阶段。

  机械时序阶段的时间取决于树场的时序设计,例如NTF的机械时序阶段为4.5 tick。

  【重要部分】

  绝大多数树场的骨粉喷洒都是由高频时钟驱动的,高频时钟一个tick是上升沿,一个tick下降沿,交替出现,频率为5Hz,周期为2tick。

  仔细看第一阶段的定义。

  第一阶段的起始时刻为木头生成的瞬间,这个瞬间同时也是发射器发射骨粉的瞬间,也就是高频时钟上升沿的瞬间。

  第一阶段的终止时刻为新放置的树苗第一次被喷射骨粉的瞬间,这个瞬间也是发射器发射骨粉的瞬间,也就是高频时钟上升沿的瞬间。

  因此第一阶段为高频时钟的两个上升沿间距,其中必然包含了整数个时钟周期,因此第一阶段时间长度必然是2 tick的整数倍。

  ============================================

  接下来的第二阶段是从第一次被骨粉喷洒到长成木头,而发射器连续两次喷洒之间的间隔是2tick,因此第二阶段的平均时间是2*(ey-1),忘记ey是什么的往上翻。

  同时第二阶段每次时间长度虽然不一定相同,但第二阶段的开始和终止时间点也同样满足上述性质,因此第二阶段时间长度必然也是2 tick整数倍。

  因此每个树场周期都是2 tick整数倍。

  同时玩家右键按住不放时,对游戏输入的右键相当于2 tick一次,因此树场周期是右键周期的整数倍,两者的相位差不会改变。

  ============================================

  综合上述结论,我们再来梳理一下。

  在机械时序阶段的时间是固定的,例如NTF是4.5 tick

  在4.5 tick之后的第一次右键(也就是放下树苗的事件)可能发生在4.5、5、5.5、6当中其中的任意一个。

   而4.5 tick之后的第一次发射器喷骨粉,由于需要满足2tick要求,最近的一次应当发生在6 tick,此时树苗已经放置,且第一次被发射器喷骨粉,因此树场进入第二阶段,第二阶段又经历2tick整数倍的时间,重新回到第一个周期,由于树场周期 是右键周期的整数倍,因此上一次在4.5 tick放置树苗,下个周期还会在4.5tick放置,保持不变,则第一个阶段的结束时间也保持不变为6 tick,而第二阶段的结束时间平均值为2*(ey-1),对于NTF这样的四发射树场来说,是0.927 tick

  因此我们得到如下重要的结论:

  树场周期第一阶段为固定值,长度为2 tick整数倍

  树场周期第二阶段的均值为2*(ey-1)

  其中ey如下,N为发射器数量:

  N=1, ey=4.444444

  N=2, ey=2.451150

  N=3, ey=1.787229

  N=4, ey=1.463564

  因此对于特定的N,树场周期的可能值仅有有限的几个。

  N=1时,可能的树场周期为(第一部分分别为2tick、4 tick、6tick、8tick)

  0.888888秒、1.088888秒、1.288888秒、1.488888秒。

  对应的效率为(原木/小时)

  24300、19837、16758、14507

  【结论】

  如下表,竖着的1,2,3,4是N,即你的树场使用了多少发射器并发,横着的则是表示第一阶段的tick数。表中的数则表示每小时的产出,所有的树场的真实效率均值都应当是在这个表中。

  至于第一阶段tick数和机械时序阶段的关系,如果机械时序阶段时间比2n tick 短至少1.5 tick,则可以确保第一阶段时间落在 2n,否则可能会落到2(n+1),所以第一阶段2 tick这一栏基本可以放弃了。NTF目前处于6 tick这一栏。

  所以想知道自己的树场是什么速度,测试多组数据,得到一个大致的值,再根据发射器的数量,对照表中最接近的数。

  例如FTF,实验测得23000左右,对应表中22560

  例如NTF,实验测得36000左右,对应表中31181

  注意虽然是大致的值,也一定要多测量几次!里如NFTF测了25000,但实际仍然是22560。

  【提速指导】

  现在NTF已经做到了4发射,第一阶段稳定为6 tick,想按照图中的提高到4 tick,相当于机械时序阶段只能有2.5 tick,这个已经基本不可能了。

  想进一步提高速度,唯有突破上述模式。

  注意到我在上述讨论中,给树场加入了两个常见的限定

  1. 树场的高频时钟是连续运行的,和树场的机械相互独立的。

  2. 树场的多个发射器是同时发射,周期都是2 tick。

  而NTF将机械时序阶段压缩到了4.5 tick,在放置树苗阶段却等待了1.5 tick,这实在是十足的浪费。

  可以做的改进

  1.将高频时钟在每个树场周期和树场同步一下,每次在5 tick时候输出上升沿信号,让第一阶段缩短到5 tick,其效率也会随之提升到36000+

  2.将多个发射器在不同tick交替发射,例如每 tick交错,相当于5 tick时候就进入了第二阶段。如果每gt交错,速度会更快。

  当然,如果能把机械时序部分进一步压缩,那自然效率也会增长。

热门搜索

手游排行榜

  • 最新排行
  • 最热排行
  • 评分最高