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

在十分之一秒中发生了什么——短脉冲研究

只看楼主收藏回复

我保证不会有很多的代码截图的,另,事实证明,我最好还是不要一次性全发出来比较好。
先发一段
我们先讨论一下各种红石元件的激活原理:
中继器 和 红石火把:
对于外部红石信号的响应方式:方块更新
自我更新改变状态的方式:UpdateTick(难翻译QAQ)
激活过程:方块更新→标记UpdateTick→1至4刻延迟→Updatetick执行
活塞:
内部更新方式:当有方块事件时(OnBlockEventReceived)
以方块事件(BlockEvent)驱动,方块更新响应
激活过程:方块更新→添加事件→当有方块事件时(OnBlockEventReceived)
红石线:
激活过程:方块更新→中间方法→结束方法(英文太长且难以翻译)
关闭过程:这个是特有的,因为这个红石线的能量,在关上时不是一下降到0的,而是一个逐渐降低的过程,如果原来的红石线是15格的能量,那么打掉输入后,会变成14→13→12......→0的过程,并且在一刻内发生,这就是“微观延迟”了。
这里就引出了微观延迟,微观延迟只是我命的一个名称,它指的是:
在一个游戏刻中发生状态转换的一种延迟,主要与软件运行顺序有关,会被“宏观延迟”抹平,即这一游戏刻中的微观延迟将不会对下一游戏刻“产生”影响。
而与之相对宏观延迟指的是:至少一个红石刻的延迟,只在下一刻及以后体现。
同时既然没有短于一刻的延迟就没有短于一刻脉冲,所以在正正正正正好的帖子里说的0.5与0刻脉冲其实都必然有1刻,只是因为微观延迟的一些现象与一些BUG(我姑且说是BUG)导致的不同反应。实际上并没有少于一刻的脉冲,0t与0.5t只是一种比较感性的说法而已。


IP属地:北京1楼2014-05-17 00:27回复
    感觉回车太多了


    IP属地:北京2楼2014-05-17 00:28
    回复
      这一段有什么应用价值呢?
      主要还是为后面的做铺垫,要说应用,也大概只有断线脉冲了。
      摆成这样

      打掉中间的红石:

      这个是因为红石的关闭时的特殊效应(在上面有介绍),所以激活了红石灯。


      IP属地:北京3楼2014-05-17 00:36
      收起回复
        微观延迟有一定的顺序。比如方块更新是立即产生影响的,而UpdateTick是在上一刻通知之后产生的,通知具有优先级,优先级为非正数(目前是的),绝对值越大,优先级越先。
        各种优先级:
        红石线:瞬间,无UpdateTick。
        中继器:-1,-2,-3(主要为-1,几乎没有-3)
        火把:0
        比较器:无UpdateTick,但表现为0优先级。
        我们可以利用这个推测出一些微观延迟现象,如:
        有一个中继器-1的UpdateTick,1只火把,中继器引起的方块更新。
        顺序为:
        中继器UpdateTick;
        方块更新;
        火把;
        通过这个方法我们可以解释 正正正正正好 的0.5刻的脉冲的产生。
        首先,红石线中有一刻脉冲,引发了红石中继器的方块更新和优先级为-1的UPdateTick;
        1红石刻;
        下边缘到来;
        UPdateTick,它突然发现自己没有输入,于是点亮自己(BUG,我还是不发代码吧)后通知自己UPdateTick,优先级-1;
        那么是如何影响火把的呢?
        中继器上边缘到达;
        火把通知自己UpdateTick,优先级0;
        一红石刻;
        中继器UpdateTick,火把输入消失;//优先级-1
        火把UpdateTick,无输入,不改变状态。//优先级0
        这就是0.5刻脉冲了
        以上基本全部通过看源代码得出,方便于描述一些一刻或几刻内的神奇的现象。
        另,最好不要叫0.5或0刻脉冲,因为没有少于一刻的脉冲。


        IP属地:北京4楼2014-05-17 01:27
        收起回复
          这回车欺负我QAQ


          IP属地:北京5楼2014-05-17 01:28
          回复
            嗯果然是个大触
            肯定能进oc
            先顶!


            IP属地:山东6楼2014-05-17 06:38
            回复
              OAO


              IP属地:中国香港来自iPhone客户端7楼2014-05-17 10:03
              回复
                解释的很清楚,追源码追到这种地步挺辛苦的……


                来自Android客户端8楼2014-05-17 13:11
                收起回复
                  觉得对代码一类的只管看结论,其他的反正也看不懂……


                  IP属地:福建9楼2014-05-17 14:58
                  收起回复
                    能不能帮我验证一下mfr2 -1能量的产生。
                    *-*给欺负红石,命令方块和mod的一记响亮的耳光!QAQ


                    IP属地:江苏来自WindowsPhone客户端10楼2014-05-17 22:01
                    收起回复
                      Mfr2强模开发到-二十亿到正的二十亿能量强度的范围。
                      *-*给欺负红石,命令方块和mod的一记响亮的耳光!QAQ


                      IP属地:江苏来自WindowsPhone客户端11楼2014-05-17 22:03
                      回复
                        这样就得到了-1 能量


                        IP属地:江苏12楼2014-05-17 22:19
                        收起回复
                          1楼说法正解!


                          IP属地:上海来自Android客户端13楼2014-05-19 09:54
                          回复
                            怒顶赞!


                            IP属地:上海来自Android客户端14楼2014-05-19 09:58
                            回复
                              @zat喵


                              IP属地:上海来自Android客户端15楼2014-05-19 10:53
                              回复