redstone_machine...吧 关注:3,458贴子:60,257
  • 82回复贴,共1

【Confidential】BUD档案 之 活塞BUD

只看楼主收藏回复

本帖为《【Confidential】BUD档案》(http://tieba.baidu.com/p/3410685042)的子贴。这里将详细阐述活塞BUD的形成方式以及特点,此外还将提供一些经典的可复位和不可复位BUD方案。


3种活塞BUD的形成模式:






3种活塞的特殊驱动方式:




回复
1楼2014-11-27 13:37
    3种活塞BUD的形成模式:


    一、给BUD位供能
    活塞激活的常规条件是其非木质面毗邻带有能量的方块(被充能的方块、电源或者指向活塞的传导元件)。下图中的红色玻璃表示了3种不同朝向下活塞的5个常规激活位。






    但活塞也有独特的非常规激活条件,也就是通过BUD激活或者隔空激活。这两种激活方式指出了活塞除了5个常规激活位以外,还有5个非常规激活位,也就是所谓的5个BUD位(用黄色玻璃标出)。如果BUD位为带有能量的方块,则活塞可以处于BUD态或者直接被激活。但需要注意,这不是必然关系,BUD位为带有能量的方块并不一定会让活塞处于BUD态或者直接被激活,判断方法则可以使用【活塞BUD的红石灯模型】(zoujt629 33楼 http://tieba.baidu.com/p/2819632775?pn=2)。





    【活塞BUD的红石灯模型】是将任何一个活塞看作其本身和其上方的一个方块均为红石灯的结构。这两个红石灯如果有任意一个能够点亮,那么活塞就能够通过某种方式激活,反之则不行。当然,针对红石灯与其他方块冲突以及上下红石灯都会点亮的情况,我们则需要分别对上下两个红石灯进行观察。








    【活塞BUD的红石灯模型】能够很好地判断活塞是否能通过“某种方式”被激活,这是一个严谨的判断方法,比各种“红石教程”贴里不完整的描述严谨地多。但请注意,前面并没有提到这激活的“某种方式”到底是哪种方式。所以下面我们需要对这“某种方式”进行说明:
    1)一旦下方的红石灯能够点亮,那么活塞可以以常规方式直接激活。


    2)如果由红石粉、红石火把、中继器或比较器仅仅使得上方的红石灯点亮,那么活塞可以以非常规方式直接激活。


    3)如果由红石粉、红石火把、中继器或比较器外的其他元件仅仅使得上方的红石灯点亮,那么活塞可以形成BUD态。




    特别注意!由红石粉、红石火把、中继器或比较器以非常规方式直接激活活塞,这个现象仅与BUD有关,但其本身并非BUD。理由很简单,其不符合BUD的定义(正正正正正好 2、3楼 【Confidential】BUD档案 http://tieba.baidu.com/p/3410685042)。这是需要着重指出的地方!


    收起回复
    2楼2014-11-29 10:14
      三、利用导线指向bug
      导线指向bug可以用来制作几乎所有元件的BUD态,活塞BUD当然也不在话下。其使用的思路依然是在不更新活塞的情况下让活塞满足伸长的条件。我们可以看看利用导线指向bug如何来让活塞达到bug态。


      可以看到从一个南瓜头到两个南瓜头,区别不过一个中继器来改变导线的指向而已,但却由于导线指向的改变不提供更新,从而使得活塞达到了BUD态。这里用来改变导线指向的元件,除了中继器,还可以使用比较器、探测铁轨、红石块、踏板、拌线钩、拉杆、按钮、光线感应器、红石火把以及陷阱箱。






      利用完全一样的思路,只要稍加注意使用一些元件(比如可以使用比较器)来避免打掉红石元件时产生的方块更新即可做到这样:






      前面也提到了,导线指向能够制作几乎所有元件的BUD态。制作步骤同前面演示用的活塞完全一样。






      可以用导线指向bug来达到BUD态的元件有:发射器、投掷器、普通活塞、粘性活塞、音符盒、TNT、栅栏门、活板门、铁门、木门、动力铁轨、激活铁轨、红石灯、漏斗、中继器、比较器、红石火把。可以看到,其中有不少元件的BUD是只能通过这种方式得到的,比如TNT BUD和中继器BUD等等,因此导线指向bug对BUD态的形成有着较大的意义。


      虽然导线指向bug一般被认为是bug,但实际上该bug已经存在多个版本中没有被修复(本人入坑的正式版1.1也有该bug),且mojang也并没有修复它的意思(据多位代码触估计,修复该bug不会太复杂,但实际情况却是,两年半过去了,即使经过了如此多的版本已经到了1.8,mojang依然没有修复该bug)。从这个角度来看,其在游戏中的表现更接近于一般的游戏设定。实际上你也很难说明导线指向bug和石头可以悬浮在空中的设定有什么模式上的区别。所以仅仅因为其“不科学”而不对其加以利用并不见得是一种理性的认知方式,这往往会限制思维的拓宽。


      收起回复
      4楼2014-11-29 18:48
        还需要补充一点关于导线指向bug形成活塞BUD的方法。用红石导线来改变导线指向也是可以的,但这和其他元件的处理方法不一样,我们不能尝试将红石线打掉来试图改变红石导线的指向。因为红石粉可以更新2格以内的方块,这势必会触发应该处于BUD态的活塞。可行的办法是通过非透明方块切断红石导线的连接来改变其指向。这个过程不会造成方块更新。






        还需要提醒的一点就是:如果动手搭建前面图中的电路,那么不难发现已经提到的BUD方案并不全面。因为活塞有伸长和不伸长两种状态,而两种状态都可能是BUD态,因此虽然活塞BUD只有3种形成模式,却可以有下面5种BUD方案:






        活塞处于BUD态以后就可以起到检测方块更新的作用,但是一旦有方块更新触发活塞BUD以后,活塞就会从BUD态回归到一般的状态,从而失去检测方块更新的能力。比如之前我们提及的几种活塞BUD方案都是这样一次性的。一次性BUD的应用价值不大,因为实际情况我们总是希望其作为一个传感器,能够一直正常工作,不断检测方块更新,而不是不停地为它复位。不难想到的是,活塞BUD在检测到方块更新的时候会产生一个输出信号,我们完全可以使用这个信号结合其他机械来对活塞BUD进行复位,这也是自复位活塞BUD的基本思路。


        举个实际的例子,如下图所示。一个单片的自复位活塞BUD方案。






        这个方案我们从图中的状态开始。不难看出活塞此时处于BUD态。因为红色羊毛实际没有被充能,而活塞却伸长了,所以活塞处于BUD态。我们对其更新以后(放置黄色羊毛)不难发现活塞会收回。






        而此时我们再仔细观察活塞,红色羊毛被弱充能,但活塞却没有伸长,所以活塞同样处于BUD态。我们对其更新以后(打掉黄色羊毛)不难发现活塞会重新伸长。


        于是随着方块更新,活塞就会在两个稳定的BUD态之间来回切换。这种BUD中的BUD态方块能够稳定处在两个不同的BUD态,因此我们称之为双稳态BUD。与此相对的,如果BUD态方块只能稳定处于某一个BUD态,那我们就称之为单稳态BUD。注意不论双稳态BUD还是单稳态BUD,他们都是自复位BUD。不能自动复位的BUD使用单稳态BUD或者双稳态BUD的概念没有太大的意义。


        有趣的是,单稳态BUD的电路有时候和双稳态BUD的非常相似。






        由于BUD在自动复位过程中是无法对方块更新作出反应的,因此控制复位的时间可以成功地控制复位时产生的方块更新不会再次触发BUD本身,这便是对单稳态BUD的电路进行改造从而变成双稳态BUD的一种思路。下图中,左边的都为单稳态BUD,右边的都为双稳态BUD。可以看到电路非常相似,仅仅是回复的延时不同而已。






        根据前面我们已经了解到的3种形成活塞BUD的模式,我们很容易理解一个事实:第二种模式只能用于单稳态BUD,而第一和第三种模式既可以用于单稳态BUD又可以用于双稳态BUD。原因嘛,可以看本楼第二幅图,因为第二种模式只可能让活塞形成一种BUD态。


        还有几个非常容易理解的问题就是:单稳态BUD经常被用作过零感应器,而双稳态BUD经常被用作导线或者是反相器(非门)。而如果我们将BUD的输出信号当作方块更新反馈回处于BUD态的活塞,那么BUD将成为时钟信号发生器。



        基于BUD实现的过零感应器(左)、导线(中)和反相器(右)单片方案。红色羊毛为输入端,绿色羊毛为输出端。





        基于BUD实现的时钟。红色羊毛为输入控制端,绿色羊毛为输出端。更新信号通过上方的普通活塞反馈给粘性活塞,从而实现正反馈。


        P.S.专业原因,脑海里容易浮现Rabi振荡和Rabi频率的概念23333


        收起回复
        5楼2014-11-29 21:15
          @保护漫画家 提醒,特殊的驱动方式还有另外两种:拉杆和踏板(木踏板、石踏板、金踏板、铁踏板)






          其原理与红石火把、红石粉、中继器和比较器的非常规激活完全一样。
          特此感谢!


          收起回复
          6楼2014-11-29 21:29
            后排支持!


            回复
            7楼2014-11-29 21:37
              经过前面的整理,我们大致已经清楚活塞BUD的几种模式了。但是关于如何运用这几个模式来搭建活塞BUD前面依然没有细说。下面,这里就针对几种活塞BUD方案进行分析,各位可以从实际操作中体会活塞BUD。


              下面两个方案可以说是曝光率最高的方案了。左边的是1.5版本以前没有红石块的方案,右边则是1.5及以后版本带有红石块的方案。对活塞BUD有过一定兴趣然后去查阅资料研究一些教学视频的骚年一定见过这两个经典得不能更经典的活塞BUD方案了。


              这两个都是单稳态BUD。至于为什么形成了BUD,前面有提,而且通过实际操作相信不难理解。但是现在有个问题,而且是个比较深入的问题:为什么这两个是单稳态BUD而不是双稳态BUD呢?实际上把中继器调制大于1t的延时,那么这两个方案都将成为双稳态BUD。那么为何会这样呢?这是喜欢思考的活塞BUD入门者容易提到的问题。







              其实不难理解。图中的方案活塞从开始伸长到完成伸长需要1t的时间,这与中继器的默认延时相符。当活塞BUD被触发以后,活塞伸长,重新形成BUD态。而活塞前的方块瞬间变成为透明的36号技术性方块,于是中继器也将在1t以后停止供能,于是产生一个更新。请注意,这个更新发生时活塞伸长。可能我这么提示各位没有概念,但如果我说这个更新毗邻活塞臂方块,各位就会重视起来了。所以,这个更新会重新触发活塞刚刚形成的BUD态。






              于是活塞收缩,1t以后完成收缩,中继器1t以后熄灭,同时也产生一个更新。那么,为何这个更新不会继续触发活塞BUD呢?因为这时候活塞已经收回了,这个中继器方块的更新不会对活塞有任何影响。于是,不会产生可怕的时钟信号了。






              上面就解释了为何这两个活塞BUD是单稳态BUD。使用一样的思路也很容易解释为何将中继器调至2t延时以后,这两个方案就变成了双稳态BUD。当然还有不少人会质疑:活塞的延时是1t?怎么听说有1.5t的版本?好像还有2t的版本?不对,还有无延时的活塞呢!


              那这里我们稍微扯开一点。。。(裙子:扯我裙子干嘛?变态!)


              这几个问题就是入门者经常容易被大触耍的团团转的原因,也就是说搞不清活塞的“延时”。虽然不少红石爱好者对此不屑一顾,但实际上如果只是停留在拿活塞做南瓜机和甘蔗机的阶段,那么可以肯定,关于活塞的“延时”,你还是门外汉。关于一些人说其没有实际用途,我只能说,你不用手机以前一定不会想到手机有什么用的。当你不想做出射速每分钟1200发的大炮、不想做出无延时传输元件、不想实现大型活塞门中的一些简化时许的时候,指着南瓜机和甘蔗机,我会很难有自信解释了解清楚活塞的“延时”真的有用。


              这里我们不会进行详细的实验和论证,仅仅把总结列出来。这份总结经过了约一年的讨论、修改和校对,结论参考了多位代码触以及机械触的分析和实验对比,因此具有相当的参考意义。(当然,不敢保证完全没错,但主要部分是没有问题的)这里对多位为黑石作出贡献的大触表示感谢。(感谢 OctopusCraft @maple_in_thu 别忘了德芙233、感谢 黑石团 @zat喵、感谢MC技术交流群 @Q1848037945 、感谢 RMC @正正正正正好)


              活塞从开始伸长到完成伸长动作这段时间是雷打不动的1t,收回也是一样的。但是活塞开始伸长的瞬间,活塞推动或者拉动的方块就会变成36号技术性方块,这个过程是无延时的。这就是无延时元件最基本的原理之一。但是别以为这就完了,请把下一段看完。


              活塞的特性的确奇葩了点。活塞被激活之前,如果与其相连的所有带有延时特性的红石传导元件(中继器、比较器、红石火把,不包括红石粉)都没有被激活,且同样没有任何活塞被激活,那么这个活塞从接收到上升沿信号到开始伸长动作之间,会加入0.5t的延时,也就是所谓的活塞的启动延时,否则则则为0t延时。因此这种情况下的活塞从接收到上升沿信号到完成伸长动作,耗时1.5t,收回也是一样。这就是目前非整数t延时引入红石电路的唯一方式。


              关于红石电路中的延时,可以参考这里:【元件库】精密时序比较器——关于时序精密描述的实现(http://tieba.baidu.com/p/3419179382


              关于无延时传输技术,可以参考这里:【红石】无延时电路元件的原理以及实现(http://tieba.baidu.com/p/2428743148)以及这里:关于长距离无延时传输技术。无延时非门。(http://tieba.baidu.com/p/2342035087)。不过无延时元件已有更简单的实现方法,而且实际上,无延时元件的制作原理其实也不止一个,具体内容在德芙的生存直播帖中有提到,本帖不再赘述。


              这样的话,就没人会质疑前面提到的“活塞从开始伸长到完成伸长需要1t的时间,这与中继器的默认延时相符。”这一类表达了吧。


              前面几楼也提到了另一种经典的方案,和上一个经典方案类似,不难理解,因此也不必详细描述了,这里仅仅给出方案。






              当然也可以做成这样,黄色羊毛表示处于BUD态的活塞。左边的方案上镜率更高些,而右边的方案知道的人不太多。





              当然你要是问我水缸(水缸、坩埚、炼药锅。。。)是干嘛用的话,那我肯定是不告诉你的啦。丢你一脸图就走人2333333





              左边的方案上镜率的确高,不信我们可以来看看哔哔哔(@yuank5121 )12x2x12的4x4活塞门。



              图片摘自:37楼 3B的作品总集(http://tieba.baidu.com/p/2744327952?see_lz=1)。


              nenn:所以啊!泥萌说不学好BUD怎么做活塞门!
              哔哔哔:一个字,大触!
              裙子:萌!
              108:我上课去→_→
              Eater:这样的话体积又能减小了!


              收起回复
              8楼2014-12-02 14:38
                nenn来讲解一下1.8的红石线的浑沌延迟吧


                收起回复
                9楼2014-12-02 18:04
                  顶呀顶…


                  回复
                  来自iPhone客户端10楼2014-12-02 18:13
                    虽然这两种活塞BUD很容易互相联想,但他们却是用了不同的模式。左边的方案,红石块位于活塞BUD位;而右边的方案,活塞因为无法伸长而形成BUD。





                    左边的方案使用了红石块,是自1.5以来一直广受好评的活塞BUD方案。其多次被使用在活塞门中以实现纵向的信号传递或者等效于多个脉冲发生器。除了哔哔哔的4x4活塞门,4one的4x4内吸门(http://tieba.baidu.com/p/3326907856)同样使用了这种经典的活塞BUD方案。但这种活塞BUD并不是空穴来风,在1.5之前,这种活塞BUD是通过下图的两种形式来实现的。下图左边是1.5之前最经典的BUD方案之一,而右边则是最小的自复位BUD方案。黄色羊毛表示处于BUD态的活塞。




                    前面图中出现的活塞因为无法伸长而形成BUD也并非完全凭空创造。其横向版(下图左)更早地被人们所熟知,而如果对其进行略加修改就能够制作出符合FTF要求的冷却时间更长一些的单稳态BUD(http://tieba.baidu.com/p/3377514455)。FTF是第一次真正意义上实现了的高速白桦生产的树场,最初几代FTF为OctopusCraf的IT4(堆叠村庄刷铁机,需要大量木门,基本等效于约20组原木)提供了大量的木材,其BUD方案则作为经典结构自最初的设计保留至今。至于他为何经典嘛,这是因为,他的BUD态活塞在整个BUD电路的最顶层。这是活塞BUD的第一种模式永远无法做到的,而这又恰恰满足FTF的要求。除了在树场方面的应用,这种BUD也被Dico和Sidney用在了全世界最快的5x5普通活塞门(2楼 http://tieba.baidu.com/p/3387440542)。


                    需要提醒一下,下图中的粘性活塞和普通活塞都是有讲究的,不能随意更换。具体是哪种活塞,下图中已经表明。各位如果有兴趣自我探索的话,可以更换以后看看效果如何。





                    关于第二种模式的实现,还可以使用下面的方案。虽然略显复杂,但实际上这个BUD的结构非常清楚:BUD的复位电路和反馈电路。





                    BUD的复位电路就只有下图的这些。其余的全是反馈电路,用于将BUD已经被触发的信号传递给BUD的复位电路。较为简单故不展开这一部分了。我们还是来看看BUD的复位是如何实现的。


                    首先明确横向的是粘性活塞,向下的是普通活塞。从初始状态到回复BUD态的过程如下图所示。






                    触发BUD以后,又重新回到初始状态。





                    因此只要建立一个时序完成复位即可,而这个时序来源于BUD的被触发。这就是对这个方案在思路上的理解。


                    回复
                    11楼2014-12-02 20:02
                      第三种模式的活塞BUD实现起来相当单调。也就是基于导线指向bug来构建活塞的BUD态。


                      淡蓝色的方法中,只要打掉中继器,我们就可以获得BUD态活塞。而绿色的方法中,只要填上非透明方块切断红石导线的连接,我们就可以获得BUD态活塞。






                      为了自动复位,我们必须想出一种方法来等效代替我们的这种操作。这也并不是非常难以想到。只需要借助于探测铁轨或者红石块等等这些能够被活塞推动用来改变导线指向的元件即可。于是就可以得到下面的一系列方案。黄色羊毛表示处于BUD态的活塞。





                      当然,使用非透明方块切断红石线的方法也可以。





                      具体的方案列举是没有尽头的,类似下图的方案,我们依然可以给出其更多的变种。但不论如何,我们要掌握如何借助于导线指向bug来实现活塞的BUD态。






                      通过直观操作我们或许会有这么一种感觉,借助于导线指向bug这种模式来搭建的活塞BUD缺乏变化,模式单一难以适应不同环境。实际上也的确是这样,导线指向的改变注定其无法做成单片电路,这是其上镜率较低的原因,因为鲜有电路会选用这种模式构建的自复位BUD。


                      回复
                      12楼2014-12-02 20:56
                        BUD档案 之 活塞BUD 到这里就暂告一段落。如果有错误希望各位及时向我指出!谢谢!


                        回复
                        14楼2014-12-04 18:49
                          接6楼,再补充一种特殊的驱动方式:陷阱箱


                          收起回复
                          16楼2014-12-06 20:28
                            赞一个


                            收起回复
                            来自Android客户端17楼2014-12-28 20:37
                              还不错


                              收起回复
                              18楼2015-01-03 12:56
                                睡咯。谢谢指导,学习之余再慢慢研究。


                                回复
                                来自手机贴吧19楼2015-01-05 00:15
                                  其实这贴挺水的不过我也是十五字


                                  回复
                                  来自iPhone客户端21楼2016-02-01 19:09
                                    6楼楼中楼挖坟狗,与之前帖子为同一ID。


                                    回复
                                    来自Android客户端24楼2017-08-06 16:43