minecraft吧 关注:2,549,824贴子:31,875,845

【OC】【标准化】树场速度计算

只看楼主收藏回复

大家好,我是墨鱼服的mackler
随着FTF的出现和发展,现在越来越多的高速树场设计涌现出来,相互之间为了几百几千的提高而较劲着,然而树场的运行速度是存在随机性的,而大家测速通常都是测试1分钟,然后乘以60作为一个小时的产量,然而一分钟相差1棵树,最后计算结果也相差了三四百,而通常测试相差的远远不止1棵,因此几百几千的所谓提高有时候只是测量误差。
因此本贴将给大家带来非常精确的树场速度计算方法,并且以此为树场进一步提速做出一些指导。


1楼2015-01-09 20:01回复
    好像很厉害的样子
    这个角度可以看到楼上胖次诶↖_↖
        ↖_↖................
        (/ω\)


    IP属地:山东来自Android客户端2楼2015-01-09 20:04
    回复
      树场以机械为主,时序和延时基本是固定的,但是有两个存在随机分布的量,造成了大家测量结果的不可靠。
      1.每棵树的产出
      2.树长出的时间
      第一种相对容易解决,现在也有很多计数方式是每分钟多少棵树,回避了每棵树的计算,但让人对实际产量的感受不够直观。第二种则是无论如何也回避不了了。


      3楼2015-01-09 20:04
      回复
        有多大误差


        IP属地:陕西4楼2015-01-09 20:06
        收起回复


          IP属地:广东来自iPhone客户端5楼2015-01-09 20:07
          回复
            刚刚才在OC吧看到


            IP属地:广东来自iPhone客户端6楼2015-01-09 20:07
            收起回复
              第一个问题解决很简单,查阅代码就能得到答案,mc中树木的生长代码中,每种树都有几个基本高度,然后再在一个范围内取一个随机的整数叠加上去。代码中的随机函数可以看作是均匀分布,所以树的平均高度,通常都是树的最大高度和最小高度的平均。
              以高速树场中最常用的白桦为例,白桦木最低是5,最高7,平均值是6


              7楼2015-01-09 20:07
              回复
                第二个问题涉及简单的随机分布的计算,看不懂的可以直接看结论,首先讲解一下树生长的时间规律,这里我们忽略掉树的自然生长,仅考虑骨粉的使用。
                树的生长有2个阶段,每次撒一个骨粉,mc会取0~1.0之间的一个随机数,随机数小于0.45,则生长一个阶段,生长了两个阶段树苗就变成了树。
                基本知识就这些。下面推导树场中树木生长,平均究竟要用多少时间。


                8楼2015-01-09 20:12
                回复
                  第一步先计算撒第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<x≤2N,则发射器发射2次。
                  因此发射器发射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表示树苗平均需要几次撒骨粉才能变成树木


                  9楼2015-01-09 20:29
                  收起回复
                    现在随机的问题解决了,再来讨论树场的周期究竟有多长。
                    先对树场的周期做个定义,树场周期的起点和终点定义为树木长出的瞬间,而树场周期则是连续两次树木长出瞬间间隔的时间。
                    现在再将一个树场周期分解为2部分,分界点为树苗第一次被发射器喷骨粉的瞬间。
                    从树木长出到新放的树苗第一次被发射骨粉,是树场周期第一阶段,从树苗第一次被发射骨粉,到树苗长成树木,是树场周期第二阶段。
                    第一阶段再作一个细的划分,分界点是泥土可以再次被放置树苗的瞬间,从树木长出瞬间到树苗可以放置的瞬间,是机械时序阶段,从可以放置树苗,到放置的树苗第一次被发射器喷洒骨粉,是放置树苗阶段。
                    机械时序阶段的时间取决于树场的时序设计,例如NTF的机械时序阶段为4.5 tick。


                    10楼2015-01-09 20:42
                    收起回复
                      oc吧看到


                      IP属地:北京来自iPhone客户端11楼2015-01-09 20:46
                      回复
                        因此我们得到如下重要的结论:
                        树场周期第一阶段为固定值,长度为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


                        13楼2015-01-09 21:07
                        回复
                          因此对于特定的N,树场周期的可能值仅有有限的几个。
                          N=1时,可能的树场周期为(第一部分分别为2tick、4 tick、6tick、8tick)
                          0.888888秒、1.088888秒、1.288888秒、1.488888秒。
                          对应的效率为(原木/小时)
                          24300、19837、16758、14507


                          14楼2015-01-09 21:11
                          回复
                            【结论】
                            如下表,竖着的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。


                            15楼2015-01-09 21:28
                            回复
                              【提速指导】
                              现在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交错,速度会更快。
                              当然,如果能把机械时序部分进一步压缩,那自然效率也会增长。


                              16楼2015-01-09 21:37
                              收起回复