植物大战僵尸吧 关注:540,066贴子:4,937,391

[废话连篇] 瞎掰几些植物机制

只看楼主收藏回复

慢点发
之前发的两次因为排版问题全都删了,这是第三遍希望我不要再手贱了


IP属地:湖北来自Android客户端1楼2023-01-13 00:46回复
    这一贴临时加急,可能有错字病句什么的委屈一下带伙多多谅解将就着看


    IP属地:湖北来自Android客户端2楼2023-01-13 00:46
    回复

      这几天本来想好了要填蹦极的坑,但随着测试的进行我发现事情并没有想象中那么简单。首先是植物机制研究的缺失,这部分内容因为同冒险一样偏离SE主线所以几乎没人关注,当然也可能先前早已有之,不过这并不重要。然后由于我个人主观上意图把蹦极处理这方面在自己退坑前发出来并尽量讲好讲全,本着一个不落的原则,这些待测项几乎涵盖了整个植物图鉴。
      终于在测试的后半阶段,仍然有未知而震撼我妈的新东西被发现且呈现越来越多的趋势,此时的我就像一个施工队队长望着眼前本该打地基的地方挖出了一座墓葬群还附带一堆陪葬品似的,低头看看自己的建筑图纸,我不禁陷入了沉思。
      思来想去还是临时决议把这部分机制先拎出来单开一贴细说,不然后续的主体会显得非常臃肿,很败阅读体验。


      IP属地:湖北来自Android客户端3楼2023-01-13 00:47
      回复
        搞个临时目录在这儿,后面再有内容会在本楼楼中楼更新,不过我觉得八成不会有了。
        1.双发的首轮攻击机制
        2.胆小菇的胆小(或者叫缩头)机制
        以上内容均为游戏内使用ShowMe等工具读属性实现,未涉及更底层分析。
        5楼正文。


        IP属地:湖北来自Android客户端4楼2023-01-13 00:47
        回复
          经典二打一
          双发射手,顾名思义,一轮攻击发射两颗豌豆的射手。但其实双发并不是每每攻击都打两发。相信绝大多数玩家都遇到过一种情况:不管在哪种模式,场地上的双发在本行出现僵尸时偶尔会先只打一发,接着恢复一轮两发。这是为什么?
          要想知道上述情况的原因,我们首先要知道植物是怎么发射子弹的,即植物的攻击原理。这部分内容可以阅读我此前分析底线植物的贴子,当中在【基础零件】 - 【曾相关】部分(春、曾,底线矿——以理论计算薄纱海量测试 ,4楼)对曾的攻击机制做了详细说明,其他植物虽有特例但都大同小异;另外,贴子提出“动”、“静”这两种概念仅为区分初次攻击和连续攻击的时间差异,作为推广,这种差异不止曾有,除地刺外的植物都有,限于文章篇幅在此不作展开。
          现在,默认读者已明白上述外链的内容,在此基础上,引入一个新概念:子弹发射倒计时(下文简称为子弹倒计时)。这个概念不是我提出的,是ShowMe自带的可读选项。这玩意儿看它的名字就知道,是预告子弹发射的倒计时,单位cs。该倒计时在植物处于静息状态下时为0,当转为攻击状态时,倒计时会重置为一初始值,然后每cs-1。对一些植物来说,倒计时减为1时将进行一次有效攻击,因此可以用它来判断植物是否“由静转动”。以冰豆为例:设其攻击间隔固定为[150],攻击初始时刻(即ShowMe的生产物品倒计时)为[20],且该时刻恰有一蹦极落地准备抓取冰豆。使用ShowMe配合TSV逐帧读取冰豆的两项倒计时:初始时刻子弹倒计时为0。20cs后,随着攻击倒计时重置为[150],子弹倒计时将同步被重置为[35](不同植物的该值不尽相同);控制游戏刻缓慢运行当子弹倒计时减为[1]时,冰豆打出子弹并贴脸命中蹦极;再下一帧,子弹倒计时将最终减为0,直到本轮攻击倒计时结束再次重置时,它才会跟着被重置为[35]。这也是部分射手的攻击原理。


          IP属地:湖北来自Android客户端5楼2023-01-13 00:48
          收起回复
            回归一开始提出的问题,双发启动时为什么有时只打一发?答案就在这个引出的新概念上:双发有两个子弹倒计时,且两个倒计时相互独立,而许多其他能连发的植物如曾等也仅仅只有一个倒计时。
            事实上,经过后续的复现,双发的攻击机制是这样的:设攻击间隔固定为150,在通常连续攻击状态下,双发的两发子弹先后生成于[150]、[125]。因为两个子弹倒计时相互独立,所以当僵尸进入其攻击域时,有两种情况:
            其一,若此时攻击倒计时在[150]至[26](含)之间,则当倒计时减为[25]时,将生成第一个子弹倒计时,初始化为[26],随后当攻击倒计时进入下一轮[150]时,对应子弹倒计时减为[1],打出第一发子弹,与此同时子弹倒计时再次被重置为[26],并在第二次减为[1]时打出第二发子弹。该情况见本楼第一张图。
            其二,若此时攻击倒计时在[25]至[1](含)之间,由于当前已经错过了第一个倒计时,则当攻击倒计时进入下一轮[150]时才会顺带重置子弹倒计时为[26],并在25cs后打出子弹。不过又因为两个子弹的生成时刻按倒计时顺序是[150]→[125],所以对该时段进入攻击域的僵尸会出现只打1发的现象,这一发实际上是双发的第2发。该情况见本楼第二张图。



            IP属地:湖北来自Android客户端6楼2023-01-13 00:49
            回复
              话又说回来,其实开头的描述的现象并非双发独有,凡是有两个子弹倒计时的植物比如裂荚的双发端(见本楼第一二张图)、猫(见本楼第三四张图)都存在这种现象,感兴趣的读者可以开游戏验证一下。该特性也使得这些植物在极端情况的判定上比其他植物拥有更短的最大攻击间隔。





              IP属地:湖北来自Android客户端7楼2023-01-13 00:50
              收起回复
                手动分割线


                IP属地:湖北来自Android客户端8楼2023-01-13 00:51
                回复
                  大丈夫能屈能伸
                  这部分比较简短,纯纯描述一下有关胆小菇是怎么胆小的,胆小过程中都发生了什么。游戏内实测可能不准,若有错误还请各位指正。
                  仍然设攻击倒计时固定为150,则
                  缩头:范围内存在僵尸时,若胆小菇此时处于静息状态,则下一cs状态(就是ShowMe读出来的“状态”一项)变为20,倒计时重置为149并锁定,进入缩头模式,130cs后状态变为21,“茎秆”完全埋入地面,进入胆小窝囊废坐以待毙模式;
                  伸头:范围内所有僵尸被io击杀死亡(血量低于临界值并继续降至0后)的下一cs、或是被灰烬炸黑的同一cs状态变为22并进入探头模式,约一秒(实测1.2几的都有,不固定)后状态恢复为1,“茎秆”完全伸出,与此同时倒计时解除锁定并从148继续递减。若本行有僵尸,需要等到本轮倒计时结束的下一轮才能正常攻击,卡极大攻击间隔了属于是。
                  连续攻击状态下则与倒计时挂钩,胆小菇子弹生成于[126],若本轮倒计时>[108],则(正常打出本轮攻击后)于[108]的下一cs切换状态为20并重置倒计时为149开始缩头;若本轮倒计时≤[108],该情况的判定与静息状态一致。


                  IP属地:湖北来自Android客户端9楼2023-01-13 00:51
                  回复
                    楼主下面没了沙发自占


                    IP属地:湖北来自Android客户端10楼2023-01-13 00:52
                    回复
                      后排


                      IP属地:四川来自Android客户端11楼2023-01-13 01:26
                      回复
                        帮顶


                        IP属地:广东来自Android客户端12楼2023-01-13 01:52
                        回复


                          IP属地:福建来自iPhone客户端13楼2023-01-13 02:00
                          回复
                            一个二个大半夜都不睡觉


                            IP属地:湖北来自Android客户端15楼2023-01-13 02:03
                            回复
                              精前留名


                              IP属地:河南来自Android客户端16楼2023-01-13 08:13
                              回复