octopuscraft吧 关注:2,143贴子:44,165

【探究向】关于TEUD的研究和应用

取消只看楼主收藏回复


10*4无痕内吸门镇楼
虽然这电路不太压缩,不过看在自己研发还有萌萌的Octopus的身上,还是放出来镇楼了。OwO
大家好,我是nenn。话说因为Mag和我发现暂时没有比较系统的BUD整理,所以才献丑怒来一发:http://tieba.baidu.com/p/2819632775。而本帖也是考虑到TEUD的特殊性(因为不是简单的BUD),所以在此单独整理出来。其中内容都是Mag和我两人合力研究和整理的,故在此对基友Mag表示感谢OwO。当然,考虑我们的水平有限,如果有错误,请大家指正。
还要感谢一下的喵喵大触。如果你经常光顾红石电路吧或者minecraft吧,相信zat喵喵全能触的名字不会陌生吧。就是这个全能触拉我入了黑石坑QwQ。。。哦对了,黑石的称呼最早也是喵喵给出的,意为“暗藏在黑暗角落的红石原理”,指的是那些冷门的甚至BUG的红石原理。后来大家觉得这称呼不错所以黑石也就在小圈子里面沿用开了。
哎呀罗嗦了QAQ。。。那下面我们开始研究吧。。。
P.S. 手速或许不够快 不过会尽快更的QwQ


IP属地:上海通过百度相册上传1楼2014-01-25 19:59回复
    问题的焦点在于比较器 就是下面这个科♂学的元件 OwO

    比较器是红石更新引进的处理模拟信号的元件。基本介绍大家可以参看wiki:http://minecraft-zh.gamepedia.com/%E7%BA%A2%E7%9F%B3%E6%AF%94%E8%BE%83%E5%99%A8 不过千万注意,wiki中文关于比较器的介绍有一部分是有错误的(其实是信息没有更新)。。。1.5.2及以后的版本中,比较器的延时为1t,但是作用与机械时存在微延时(原因应该是同一个tick中代码执行的先后顺序 不过是微延时只有对机械作用时才能体现出来 已有实验证明微延时存在 这里不赘述)。

    物品栏中有物品的方块以及盛水的水缸、放入唱片的音乐盒等等,都可以直接或者透过非透明方块被比较器检测到并输出信号。信号强度随物品多少、盛水多少、唱片编号等等而变化。这一点相信很多人都已经知道了。

    带有物品附加值的方块无法被活塞推动,所以几乎所有可以使得比较器输出信号的方块无法被推动(因为有物品栏)。但是,盛水的水缸例外(就是炼药锅啊坩埚啊啥的,名称随便啦233)。正是由于水缸的这一特性,这个结构被经常用于机械电路(主要用于需要排除bud干扰的活塞向上传递信号)。


    IP属地:上海3楼2014-01-25 20:21
    收起回复

      除了水缸以外,箱子也是很有特点的方块。带有动画这点不说,如果箱子上方有非透明方块,那么箱子会打不开。不过,还有些其他的性质,或许很多人不知道。

      如图,箱子中放任意数量的物品之后,比较器会输出信号。

      如果在箱子上方放置一块非透明方块,你会发现毫无变化。。。。23333

      不过我nenn从来不吭人OwO。这时候估计你会想把信号接出来,在比较器前面放个方块或者红石粉啊啥的,这时候你就发现比较器变暗了!OAO 如果你已经知道了BUD(别说mc只有活塞BUD 那样的话喵喵大触会哭的)为何物,那么你就可以肯定,这种处于亚稳态而且方块更新可以造成红石信号变化的装置就是BUD。由于是比较器处于亚稳态,因此我们可以称其为比较器BUD。
      这是从现象得到的结论,现在我们再从游戏机制分析一下。箱子上方压着非透明方块时,游戏并不会将这个箱子认做是一个”正常“的箱子,而只是一个普通的方块。虽然活塞依旧推不动,不过比较器并不能检测到箱子中的物品,我们也无法打开箱子。值得注意的是,箱子的这种状态的切换并不造成方块更新,所以处于上图中处于BUD态的比较器不会发生变化。
      利用比较器隔墙检测的性质以及箱子状态的切换不会造成方块更新,我们可以通过活塞移动箱子上方非透明方块的位置来控制箱子的状态。这样一来,可以自动重置的比较器BUD便成为可能,比如下图中的经典方案。

      上图是经典的自复位单稳态比较器BUD(其实不仅仅是个简单的BUD探测器)。
      下图是经典的自复位双稳态比较器BUD(同样不仅仅是个简单的BUD探测器)。

      当然如果你是熊孩子的话,这款基于比较器BUD的时钟肯定适合您OwO

      时钟形成的原因主要是:活塞的伸长和缩短(就是方块更新)触发了比较器BUD,触发以后电路进行重置,活塞伸长缩短重新触发比较器BUD。。。如此形成循环,因而输出的不是一个简单的脉冲而是一个时钟信号。


      IP属地:上海4楼2014-01-25 20:55
      收起回复
        当然了,要做成可自动复位的BUD还有其他方案。还记得前面我特意列出来的水缸么OwO那是我最喜欢的方块2333 水缸可以被推动这一点同样可以用来做比较器BUD。
        原理就是推开被隔墙检测到的盛水水缸并不会造成比较器周围的方块更新,这样比较器便会一直处于BUD态,如下图所示。
        这个现象是我独立发现的。。。那是在压缩隐藏附魔台的电路时,突发奇想想用这个装置产生一个脉冲结果误打误撞发现了比较器BUD。都怪邪恶的3B大触 QAQ

        利用这一原理,我们可以制作重置BUD的电路(下图)。这个电路之后也经过Mag的优化从而能够产0.5t的短脉冲,而这一点几乎就等于直接在BUD上加装了一个T触发器,所以这个优化非常有意义。具体的我们后面应用的时候再说。


        IP属地:上海5楼2014-01-25 21:11
        收起回复
          利用水缸和箱子的特性作出的自复位比较器BUD是非常方便实用的。除了这两种比较好的方案,我们还可以利用运输矿车和探测铁轨的作用以及红石导线的指向bug来制作比较器BUD。下面我会做一一介绍。
          运输矿车有个箱子。。。不过运输矿车是实体,实体不是方块(实体是实体,实体方块是非透明方块,切勿混淆概念),比较器表示无力检测2333 不过由于探测铁轨的的特性,载物的运输矿车如果在探测铁轨上方便可以通过比较器输出信号(其实变得和箱子一样了),而其他矿车甚至载人的矿车都不行(大家可以亲自尝试),如下图所示。

          仔细想想不难发现,点亮比较器的是探测铁轨而不是矿车本身。借鉴前面水缸的BUD自复位电路的思路,我们同样可以抽离探测铁轨来形成比较器BUD。由于思路和前面相同,而且电路用到了不很稳定的实体(运输矿车),所以这种思路下的方案就不再详细介绍了。

          运输矿车和探测铁轨的作用结果从侧面表明了探测铁轨可以区分其上的矿车是否为运输矿车,而所有矿车为实体。这从侧面暗示了探测铁轨可以检测其上方的实体。虽然这个原理制作的可复位BUD方案不佳,但是其原理在后面TEUD的内容中也是很重要的。


          IP属地:上海8楼2014-01-26 00:49
          收起回复
            说最后一种自回复比较器BUD之前,我们有必要先了解一个黑石知(zi)识(shi),那就是红石导线的指向bug(不是BUD,是个真真实实的bug!)。
            记得喵喵曾经和我说过,所有的红石元件中,红石导线是最神秘复杂的。虽然中继器有5种主要的基本功能,比较器除了有中继器5种功能中的其中4种外还有另外4种模拟信号处理功能,红石火把有熄灭特性。。。这些性质可以说,查阅相关资料都可以很快找到。但是红石导线的指向bug、红石导线的微延时、红石导线传递信号的种类等等问题,可不是一般外部的资料可以找到的。好吧,貌似偏题的节奏。。。回来说红石导线指向bug。
            红石导线的指向bug真的非常bug!这bug已经bug到可以让几乎所有的机械都达到BUD态。啥红石灯BUD、门(铁门、木门、活板门、栅栏门)BUD、红石火把BUD、音符合BUD、活塞BUD、中继器BUD、比较器BUD、TNTBUD。。。。。好吧,貌似列举没意义了。。。总之非常bug 我可以给大家看看我曾经利用红石导线的指向bug做的各种BUD,相信能够耐心看到这里的我觉得无需过多言语解释了OwO 大触们 看图吧






            我真心没用任何mc1.7.2以外的任何辅助软件或者插件,修改器啊 we啊啥的都没有。这些都是我在纯净原版里面做出来的,即使生存下我同样可以演示给大家看。
            有一段时间我以为红石导线的指向bug制作的BUD只能手动复位,但后来,探测铁轨提醒了我。。。。。。于是逆天的自复位BUD就出现了

            稳定的自复位红石火把BUD

            稳定的自复位中继器BUD


            IP属地:上海9楼2014-01-26 01:13
            收起回复
              下面说说如何利用红石导线的指向bug来制作各种机械的BUD,图片我就用我以前的截图了(我才不承认是我懒QwQ)
              那我们制作BUD态的红石火把吧 23333
              第一步 略(2333)

              第二步 放个中继器改变红石导线的走向 让红石导线不指向方块

              第三步 点亮线路

              第四步 打掉中继器。。。

              好吧。。我承认的确很简单。。。利用这个方法我们可以简单地制作出各种机械的BUD。所以这一类方法制作出的BUD我们不用处于BUD态的元件来命名(不然毫无意义 也不能区分QAQ),而是直接称导线指向BUD。。。。
              如果再加上探测铁轨来自复位的话,那么自复位的比较器BUD还可以有这种方案:

              相信如果理解了导线指向bug,这个图我也无需多多解释了。大家仔细观察比较器为何会点亮,然后看看后方红石导线的指向就可以看出来了。 OwO


              IP属地:上海10楼2014-01-26 01:31
              收起回复
                晚上回家继续更~


                IP属地:上海12楼2014-01-26 17:23
                回复
                  回来了OwO 我们继续吧。
                  话说 我们先讨论点轻松的吧。。。了解过BUD的朋友可以来看看这个问题,下图中的比较器BUD如何制作呢?

                  一般来说,制作比较器BUD总要控制信号输入。所以怎么说比较器四周都不可能没有方块啊OAO 可是图片就这样摆在那里啊OAO
                  23333 好吧,不该调戏各位大触的OwO 其实乃们如果真的按照上面这样想的话才更接近真相。。。这玩意儿根本不是BUD 233333
                  很多人看见自己伸长的活塞就条件反射是BUD,看见自己亮着的红石灯就条件反射是BUD,所以看见了自己亮着的比较器也是BUD。BUD是啥?Block Update Detector,就是方块更新感应器。狭义上来说,只有能够对方块更新作出反应并把这种改变的信息通过红石线路输出的装置才叫BUD。对方块更新作出反应和有红石信号输出这两点缺一不可。当然,广义上的BUD不强调输出,但是对方块更新作出反应这一点没有疑问。不过无论狭义还是广义,BUD的亚稳态特点总是不变的。亚稳态是一种稳定的状态,只是在一定条件下会变得不稳定而已。
                  所以伸长的活塞在毗邻方块更新时会收回才叫触发了BUD,其他机械同理。这里不惜写那么多来说明一下BUD的基本概念,只是因为看见外面大触好多 QAQ 他们都已经很懂BUD了 而我却才知道一点点 QAQ
                  介绍了BUD的概念,我们根据这个概念判断看看上图中的比较器处于什么状态。不过之前当然先要告诉大家怎么搞出这个奇葩玩意儿 OwO 相信玩过模电的骚年们已经知道了,这朵奇葩来自模电的经典异或门。。。
                  下图展示的是经典的模电异或门单元。注意比较器都要设置在减法模式,也就是比较器前端的红石火把要处于点亮状态。

                  如果你用过这个电路,你应该知道上图的单元是没法直接放到电路里的。。。如果需要通用性比较好的红石导线作为输入和输出,需要下图的结构。由于是模电,所以这里拉杆位置原本阻断的两路信号即使串起来也没事。

                  如果乃和我一样手贱OwO 乃试试按照这个顺序拨动拉杆:右左右左。。。然后你应该就可以看到下面的科♂学状态了

                  看见那个科♂学的比较器了么OwO That's it! 现在可以放心打掉那个周围的其他东西啦OwO然后就出现了前面图里的那个突兀的比较器。。。。。。。
                  诶?等等。。。打掉?放心打掉? OAO 好吧。。。。
                  打掉周围的方块比较器依然亮着啊OAO 这尼玛肯定不是BUD啊 坑爹啊OAO 如果我们的研究再深♂入一点,比较器的输出前面用红石导线引出来,你会看到。。。

                  23333 好吧 没有信号。。。。
                  这说明了什么呢OwO 这说明了,比较器其实没有被点亮,但是却显示成了点亮的样子。。。。这个只是个贴图错误,不是BUD。。。。但是,非常容易被有些大触们误认为BUD。。。。
                  大概是新加入的缘故,比较器造成的贴图bug不止这里一处。
                  话说,大家知道中继器的五个特性么 0.0 强充能、中继、延时、单向和D锁存。D锁存特性体现的时候,姿势应该如下图左边的电路所示:

                  可以看到处于锁存状态的中继器会出现奇怪的结构。。。根据输入和输出的情况来看,中继器也的确处于锁存状态。可是右边的电路呢OAO 为何根据输入输出同样应该处于锁存状态的中继器却显示正常?难道也是BUD么OAO


                  IP属地:上海13楼2014-01-26 21:20
                  收起回复
                    其实先说了吧。。。这同样是贴图错误。如果你切换比较器的模式就会看到正常的贴图,这时你再切换回来贴图将一直显示正确了。所以比较器同样可以使得中继器处于锁存态。

                    这一点一开始我以为很多人都知道。后来和小兔子大触讨论比较器的延时问题时,发现连小兔子大触也不知道。。。之后我才注意到貌似很多人也不知道。。。
                    好吧关于比较器的一些小问题不多说了。。。。大家可以看看这里思考思考 http://tieba.baidu.com/p/2812537755 其中23楼我整理的问题貌似现在还没人给出比较合理的解释。。所以如果有大触可以查看比较器和中继器的源代码的话,也可以去看看吧。。。
                    比较器现在尚未解决的几个主要问题:
                    比较器的微延时是如何作用在红石导线和火把上的
                    比较器高频时钟发生器发出的时钟信号能否通过比较器为何同信号强度有关
                    比较器组为何会改变2个间隔1t的单刻脉冲
                    好吧,TEUD的前戏差不多就到这里了。关于比较器乃是不是有了更多的了解呢OwO。那下面我们就进入TEUD的内容吧。


                    IP属地:上海14楼2014-01-26 22:22
                    收起回复
                      OwO 我们继续吧
                      比较器的一些补充内容说得差不多了,其中关于可自复位的单稳态比较器的BUD,我们前面给出了四种方案,如下图所示。

                      其中输出都从左边引了出来,玻璃位置则代表比较器BUD检测的方块位置。
                      比较器BUD看似貌似普通,但是事实上,由于比较器的特性,比较器BUD同样有着其他BUD没有的特点。下面我来一一演示。
                      为了体现比较器BUD的特殊性,我们另外使用一种普通的活塞BUD作为对比。

                      虽然这种活塞BUD并不是最简单的(最简单的用到了船。。。但是船会撞毁。。。而用沙子的方案可能会出现卡机。。。),但却是最稳定曝光率最高的活塞BUD之一。这个活塞BUD同样也是有着自己的特点,这里稍微展开说一下。首先,这个活塞BUD可以纵向扩展从而形成多输出;其次,这个活塞BUD产生的是脉冲信号是标准的单刻脉冲。这两个性质的证明实验如下图所示。


                      多输出不解释了,而粘性活塞无法拉回方块证明了脉冲信号为短脉冲。那么究竟是哪种短脉冲?0.5t脉冲还是1t脉冲?
                      可以看到,短脉冲可以通过比较器和红石火把组成的的原始中继器,并使得粘性活塞无法拉回方块。根据火把和比较器不会对1t以下脉冲有反应的特性,我们可以得知,这个活塞BUD产生的是标准的单刻脉冲。
                      为了显示清楚,下面我们对比较器BUD和活塞BUD能够探测的更新进行列表明细(可以探测记1,不能探测记0):
                      活塞BUD
                      放置、敲除方块:1
                      熔炉燃烧或熄灭、红石导线点亮或熄灭、作物生长、中继器延时调节、充能铁轨点亮等:1
                      开关门(铁门、木门、栅栏门、陷阱门):0
                      比较器模式调节(指向BUD态元件):1(仅从减法模式切换成比较模式)
                      比较器模式调节(不指向BUD态元件):0
                      改变箱子的可打开状态:0
                      箱子打开或关闭:1
                      音乐盒中插入唱片:0
                      酿造台完成酿造:0
                      鼠标点击容器物品栏:0
                      容器中物品数量增加或减少:0
                      上方有实体的探测铁轨:0
                      调节音符盒音高:0
                      改变命令方块的指令:0
                      比较器BUD
                      放置、敲除方块:1
                      熔炉燃烧或熄灭、红石导线点亮或熄灭、作物生长、中继器延时调节、充能铁轨点亮等:1
                      开关门(铁门、木门、栅栏门、陷阱门):0
                      比较器模式调节(指向BUD态元件):1(仅从减法模式切换成比较模式)
                      比较器模式调节(不指向BUD态元件):0
                      改变箱子的可打开状态:0
                      箱子打开或关闭:1
                      ---》音乐盒中插入唱片:1
                      ---》酿造台完成酿造:1
                      ---》鼠标点击容器物品栏:1
                      ---》容器中物品数量增加或减少:1
                      ---》上方有实体的探测铁轨:1(输出脉冲信号或者时钟信号)
                      ---》调节音符盒音高:1
                      ---》改变命令方块的指令:1


                      IP属地:上海16楼2014-01-27 22:19
                      收起回复
                        差点忘记一些很冷门的内容了。。。
                        活塞BUD
                        水缸水位的变化:0
                        末影传送门框架插入末影之眼:0
                        打开或关闭末影箱:0
                        点击末影箱的物品栏:0
                        比较器BUD
                        ---》水缸水位的变化:1
                        ---》末影传送门框架插入末影之眼:1
                        打开或关闭末影箱:0
                        点击末影箱的物品栏:0
                        被标有“---》”符号的是比较器BUD可以探测的但是活塞BUD无法探测的内容。
                        通过归纳这些现象我们可以得出一个经验结论:比较器BUD首先可以当作普通BUD来检测方块更新,但是由于比较器可以检测方块的实体附加值,所以方块的实体附加值的更新同样可以触发比较器BUD。比如改变音符盒的音高、改变容器中的物品数量、点击容器的物品栏等。。。这也就是为什么比较器BUD也被称作TEUD(Tile Entity Update Detector 实体附加值更新感应器)或者DUD(Data Update Detector 数据更新感应器)。
                        当然,由于比较器可以隔开一个非透明方块检测实体附加值,所以,TEUD同样可以隔开一个非透明方块依旧正常探测到实体附加值的更新。这一点经常应用在隐藏性比较好的触发装置上,后面的TEUD应用中我们会看到。
                        关于实体附加值的相关资料,大家可以参看wiki:http://minecraft-zh.gamepedia.com/%E5%AE%9E%E4%BD%93%E9%99%84%E5%8A%A0%E5%80%BC
                        搞了半天,神秘的TEUD就是前面说得比较器BUD。。。 23333
                        除了前面所说的实体附加值,TEUD还可以检测实体。还记得前面提到的运输矿车和探测铁轨的组合么?我记得提醒过这个自复位BUD的原理很重要。那么,为何重要呢?OwO 因为探测铁轨可以和TEUD组合检测实体的存在与否,甚至鉴别实体的类型 OAO
                        实体的检测方法如下图所示:

                        如图两种方法放置探测铁轨的话,探测铁轨就可以探测其上方的实体。这里作为演示,我们只使用经典的使用箱子的TEUD方案。其他TEUD的行为后面我们会列表给出。
                        首先测试生(zhang)物(yu)。


                        这里给出2张种情况的截图只是为了证明隔墙的TEUD同样有效,后面的演示中我就略过这个证明了,直接使用隔墙的TEUD。
                        可以看到上面的图中,探测铁轨上方的章(da)鱼(chu)(其实乌贼和章鱼不是一种生物= = 不过不要在意这些细节拉 OwO)使得TEUD发出一个周期4t,占空比25%的时钟信号。如果换成其他生(da)物(chu),结果相同,故不再赘述。
                        其次测试矿车。

                        矿车的则是一个周期10t占空比20%的时钟信号。其他矿车的信号相同故也不再赘述。
                        第三测试掉落的物品。

                        同样是周期4t占空比25%的时钟信号,和生物的相同。
                        第四测试箭。

                        可以看到,箭射中探测铁轨以后,TEUD发出一个单刻脉冲,而不是时钟信号。
                        值得注意的是,如果弓箭射入探测铁轨所在方块的上半部分(下半部分无效。。。位置如下图所示),TEUD同样可以被触发。

                        第五测试经验球。

                        同样周期4t,占空比25%的时钟信号。
                        第六测试钓鱼竿的吊钩。

                        可以看到吊钩输出的时钟信号是不稳定的,虽然周期是5t,但是占空比会不停变化。
                        第七测试船。

                        船发出的同样是周期4t占空比25%的时钟信号。


                        IP属地:上海17楼2014-01-28 00:20
                        收起回复
                          第八测试放上探测铁轨的瞬间。。。。。

                          一个2t长的脉冲。。。不是时钟。。。。。
                          暂时测试这些实体吧。。。那么现在整理一下使用箱子的TEUD方案时,检测实体可以得到的几种信号。
                          时钟信号
                          周期4t,占空比25%:生物、物品、经验球、船
                          周期5t,占空比不稳定:吊钩
                          周期10t,占空比20%:矿车
                          脉冲信号
                          单刻脉冲:射入箭
                          2t脉冲:放置探测铁轨
                          的所以可以根据TEUD输出信号来判断探测铁轨上的实体类型,虽然不能做到完全彻底的分类,但至少可以做到简单的鉴别,比如鉴别铁路线上有没有滞留关键通道中的玩家 OwO 当人或者矿车快速经过探测铁轨时,TEUD会发出一个或者两个单刻脉冲或者2t脉冲。根据脉冲长度筛选,我们可以直接在接收到单刻的脉冲以后触发报警装置,告知铁路线无法正常通行。关于TEUD的应用,之后会有进一步介绍 OwO
                          以上部分的资料参考主要来自了火黑大触的搬运帖 http://tieba.baidu.com/p/2515879179 和一位不认识的大触 http://www.mcbbs.net/thread-125127-1-1.html 当然我加入了许多参考资料中没有的新内容,比如水缸和指向bug做出的自复位TEUD、TEUD可以检测末地传送门框架插入末影之眼和水缸水位变化、TEUD的输出信号可以判断实体类型等等。。。。


                          IP属地:上海18楼2014-01-28 00:45
                          回复
                            第二个就是不用陷阱箱的陷阱箱。。。。。。
                            细节不说了。。。说了就太多了 就给个预览吧。。。总之就是3个部分:TEUD、T触发器和3*3卧式陷阱门。。。大概结构就是这样 OwO 这个卧式3*3是我自己设计的,开门速度逆天,很适合做陷阱2333 再加上很多人觉得不太会碰到3*3陷阱门(大概压根就没见过?)23333防范意识薄弱2333 坑爹啊有木有 OwO

                            把电路隐藏掉以后的样子。打开关闭箱子没有问题,只有点击物品栏才会触发陷阱。。。




                            IP属地:上海22楼2014-01-30 20:23
                            收起回复
                              第三个是不用水流的物品按钮
                              右边的是原始的物品按钮方案,左边的是用了TEUD的物品按钮方案。

                              用水流只是为了让物品从边上掉下去。。。因为栅栏1.5高。如果掉在栅栏上方就没法正常输出信号了。。。

                              而这个方案则是使用TEUD的物品按钮。但是缺点很明显,耗材是硬伤。。。


                              不过有一点好OwO 一个就是没有水流,而且对于现在经常使用的漏斗通路同样有效,甚至连探测铁轨也不需要,还可以隐藏电路 OwO 大触们看着耗材看着没水流啥的自己掂量着吧 OwO 怎么好用怎么用


                              IP属地:上海24楼2014-01-30 20:53
                              收起回复