topologycraft吧 关注:879贴子:21,819

【挖坑】准备研究观察者

只看楼主收藏回复

打算研究一下和观察者有关的电路中的微观时序
好久没技术研究了,贴吧上一看,感觉我已经完全落后了...
填坑!


来自Android客户端1楼2016-10-04 14:17回复
    电脑不能用,先在手机上乱写点东西
    观察者收到方块更新信号后,是否立即更新呢?它如果使用了blockevent,同样不会造成很大的影响。我想验证它不是通过blockevent更新的


    来自Android客户端3楼2016-10-04 15:26
    回复
      经过验证,观察者确实是直接地传递信号的!
      这是我的测试方法:
      在活塞和观察者的中间放一个红石块。
      上方的活塞推出了。
      注意,当前我的朝向是west。方块更新存在微观时序,对于任意一个方块更新源,在发出6个方向的更新的时候,一定先更新西边的方块。
      所以,如果上方的活塞先推出,一定说明在上方的活塞被更新之前,下方的活塞还没有被更新。所以红石块更新观察者后,观察者必定直接更新了上方的活塞。
      也就说明观察者是直接传递信号的。


      IP属地:北京4楼2016-10-04 15:34
      收起回复
        然后我们把中继器换成投掷器。投掷器的优先级是0。
        实验结果说明。观察者的优先级小于等于0
        所以观察者的优先级是0



        IP属地:北京6楼2016-10-04 15:45
        收起回复
          观察者做的时钟:
          4个观察者摆成一个圈,然后更新一个观察者可以做出一个时钟。
          经过简单的分析,发现这个时钟的长度是2gt,亮的时间从0(nte)到2(nte),在之后有一瞬间是熄灭的。


          来自Android客户端8楼2016-10-04 20:58
          回复
            这相当于一个0t负脉冲。不过,因为它的位置在nte而不在blockevent,它的性质和活塞0t脉冲有所不同


            来自Android客户端9楼2016-10-04 21:03
            回复
              我可能说的不清楚,没关系,之后我会重新整理一下的。
              我们知道,当摆好电路,更新第一个观察者(假设是A)时,A点亮更新B,B点亮更新C...所以进入NTE的顺序是ABCD。所以接下来我们在脉冲下边沿发生顺序为ABCD的情况下进行分析。
              首先,A收到延时标记,脉冲下边沿,更新B,因为B已经是亮着的状态,所以它的亮灭没有变化。
              然后,B收到延时标记,脉冲下边沿,更新C。
              ...
              D收到延时标记,更新A。A亮起,更新B,B亮起,更新C...最后更新D。
              所以,我们最后发现,这种负脉冲的长度,为3个"微观单位"。其中微观单位的含义指的是在下边沿和上边沿之间延时标记的数量(也就是B,C,D这三个观察者的下边沿),推广之,对于任意n个观察者构成的环形2gt时钟发生器,下边沿的微观长度都为n-1次延时标记


              来自Android客户端10楼2016-10-04 21:50
              回复
                我在上一楼没有提到再下一次延时标记的添加顺序,是因为我不太清楚mc添加延时标记的代码。如果mojang不怎么sb的话,它可能会这样:
                当检测端有方块变化时,如果自己是灭着的,那么亮起,并添加延时标记
                这样的话,下一轮里,延时标记的顺序还是ABCD。
                但如果mojang很sb,它可能会这样:
                当检测到方块变化时,不管如何,都添加一个延时标记玩玩
                如果这样的话,下一轮里,延时标记的顺序就是BCDA


                来自Android客户端11楼2016-10-04 22:17
                回复
                  怎么去判断mojang是否这么sb呢?我想把A和C连接到两个面对面的投掷器。如果始终都是A先投掷的话(mojang不sb),在玩家的视角中,物品一直都在A里。如果物品的位置不停变化,就说明是第二种情况(sbmojang)


                  来自Android客户端12楼2016-10-04 22:21
                  回复
                    账号转换太快,头晕


                    IP属地:浙江来自Android客户端13楼2016-10-04 22:29
                    回复
                      我实验后发现是第一种情况


                      来自Android客户端14楼2016-10-05 05:58
                      回复
                        其实10hz高频时钟还有一个更简单的形式(从duoduo的贴里找到的)


                        来自Android客户端15楼2016-10-05 05:59
                        回复
                          举个例子



                          IP属地:北京17楼2016-10-05 09:28
                          回复
                            既然有这个bug,来脑洞一下mojang该怎么修它吧。
                            1.在移动方块时,检测世界的nextticklist,把它的信息也给移动一下(可能更卡)
                            2.在每次更新时,不管是否激活,都添加到nte。这样,在它被移动后的2gt后就会重新熄灭。(其实这就是我之前说的sbmojang的情况,现在发现这样做并不一定就是sb,还是有一些道理的)


                            来自Android客户端19楼2016-10-05 16:07
                            收起回复
                              学术论文马一个


                              IP属地:浙江来自Android客户端21楼2016-10-06 12:38
                              回复