pvz2吧 关注:112,461贴子:2,579,394

【ArenaZ赛】详解竞技场动态等级机制与分数规则

只看楼主收藏回复


相较于一代无尽、IZ,二代竞技场目前几乎无人钻研。而这也导致了竞技场出现了很多谣言:“场外击杀没有分数”、“机枪火力灌满减慢刷怪”、“植损会扣分”、“糯米击杀僵尸有双倍分数”、等等。绝大数谣言,均和竞技场的“动态等级机制”离不开关系。
本贴结合个人实测,以及大量引用b站@四嘴溩 的竞技场专栏,详解竞技场的等级机制。目前,仍有存疑或者未了解的地方,望各位多多包涵。


IP属地:江苏1楼2024-07-17 18:31回复
    一. 分数规则
    1.总则
    ①“四色栏”是Arena中专属的分数倍数栏,僵尸的分数乘对应所在对应区域的倍数为实际获得分数。1倍栏之左为1倍区,5倍栏之右仍为5倍区。僵王博士在分数结算时,所在对应区域始终为5倍区。所以,场外击杀没有分数,这是个错误的说法。不受四色栏影响,墓碑、冲浪板等障碍物的分值固定为 200 分。某些障碍物没有分,比如罗马医师的蛇杖。特别的,如果在Z赛中移动矿车,那么矿车所在列无矿车格的僵尸倍数会变为一倍。如果矿车位处第一列,场外也会受到影响。我们称之为矿车陷阱。



    IP属地:江苏2楼2024-07-17 18:32
    回复
      ②击杀僵尸会获得分数,少部分植物击杀僵尸会产生双倍分数。
      *糯米(糯米定住的僵尸,被其他植物击杀,可获得双倍分,包括跑步机)
      *三叶草/气流水仙花(吹飞僵尸后,会额外结算一次本体分,额外结算在正常结算之后,有时间差)
      *悬浮洋芋(悬浮洋芋在弄起僵尸过程中,如果僵尸被魅惑,且之后挑飞僵尸,会有双倍分数)


      IP属地:江苏3楼2024-07-17 18:33
      回复
        2.Battlez规则与BattlezZomboss规则
        我们一般打竞技场最常用的规则,就是【Battlez规则与BattlezZomboss规则】。
        ①根据代码,僵尸的分数由其血量决定:
        僵尸的基础分数为100,且每拥有 300 血量增加 100 基础分。
        附:设僵尸1级基础血量为m,则僵尸的血量n等级x关系:
        n=m*(1.3^(x-1)+0.05(x-1))
        特殊的是,火光僵尸没有定义等级,所以竞技场中只会出现一级的火光僵尸(耐久 650),在五倍栏提供 1500 分。


        IP属地:江苏4楼2024-07-17 18:33
        回复
          ②防具的基础分数计算与僵尸的基础分数的计算相似,防具的分值从 50 开始,防具每拥有 300 血量增加 100 基础分。
          注意:在Z赛中,不是所有防具都有防具分,要想防具掉落有分,往往需要防具有 可掉落 {Droppable} 标签,而且这个标签还需要和掉落动画绑定。
          像骆驼牌、法老的棺材等防具,因为没有可掉落标签,所以没有防具分。
          而像罗马巨人的防具,因为没有掉落动画,所以也没有防具分。
          有的防具一受到伤害就会把防具分全部给出,如报纸僵尸的 报纸 和帮助桌的 笔记本电脑 。
          对于掉落有分的防具,如果采用 魅惑、挑飞、缩小 或者 小于防具耐久的火焰灰烬伤害 击杀了僵尸本体,还是会损失防具分。


          IP属地:江苏5楼2024-07-17 18:34
          回复
            ③对于僵王,僵尸的基础分数是10000(由于僵王在5倍区,所以加50000),基础层数是1层。每结算一次,层数加1,分数加10000(相当于50000)。由此,根据右下方标注的僵王层数(是第x层,实际上你打了x-1层),你可以计算出你获得的僵王的分数:x(x-1)*25000。对于其他特殊僵尸,如跑步机、Z机甲等,有其特定分数。


            IP属地:江苏6楼2024-07-17 18:34
            回复
              3.NoMultiplier 规则
              该规则非常罕见稀有,是最少被调用的得分规则(屈指可数),其内容与 Battez 规则基本一致,具体表现如下:
              ① 僵尸的基础分数为100,且每拥有 300 血量增加 100 基础分。
              防具每拥有 300 耐久增加 25 基础分(属于没有定义而取归省值);
              ② 僵尸等级每升一级,分数增加 20%(包括小Boss,如跑步机。但不包括博士,博士在这没有定义)。
              值得注意的是,跑步机的等级不受等级因子的影响,只受关卡等级和段位等级的影响:从始至终是8级,贴子后面我会介绍。
              这个等级和规则下,跑步机分数按出场顺序为600000、900000、1200000,相当之高。
              ③魅惑、挑飞不得分。
              *以8级普通僵尸为例:
              问,该僵尸在5倍区倍击杀,分数为多少?
              *①根据上述公式8级血量1200+<1500:有4个300血量。
              *②基础分数为100,血量分数为4*100=400
              *③等级增量分数倍数为1+(8-1)*0.2=2.4
              ⇨(100+400)*2.4=1200
              *④五倍区僵尸:5
              ⇨1200*5=6000
              答:击杀8级普通僵尸的分数为6000(5倍区)。
              曾经的鬼椒周就采用了该得分规则,此规则会导致分数大致翻一至两番。
              调用该规则的文件如下(JOUST15.json, JOUST15BOOST.json, JOUST20.json, JOUST21.json, JOUST21BOOST.json, JOUST55.json),不全,还有鬼椒周,如joust23。


              IP属地:江苏7楼2024-07-17 18:34
              回复
                一. 动态等级机制
                1.僵尸等级概述
                僵尸等级,有两个组成部分。
                一个是基础等级,一个是升级等级。 僵尸等级=基础等级+升级等级
                基础等级默认为1级,如果在关卡内定义
                “GridItemLevel": 8,
                "ZombieLevel": 8,
                这个8级,指的是基础等级。
                升级等级,指的是用来添加给基础等级,提高僵尸等级的等级,以下简称升级数。
                升级数,指的是等级因子【LevelFactor】,当基础等级默认为1,LevelFactor为7时,僵尸的等级就为1+7=8级。


                IP属地:江苏8楼2024-07-17 18:34
                收起回复
                  2.等级因子【LevelFactor】
                  前面提到,等级因子本质上是升级数,用来增加僵尸的等级。
                  (1)等级因子【LevelFactor】直接决定僵尸等级,而等级因子进程量【ProgressToNextLevelFactor】,直接决定等级因子。等级因子只能是整数。
                  可以把 当前等级因子 【CurrentLevelFactor}】与 等级因子进程量 【ProgressToNextLevelFactor】,看做是等级因子【LevelFactor】的组成部分。
                  等级因子进程量 【ProgressToNextLevelFactor】,只能是【0,1)的小数。
                  好比要爬8个山,我现在在第3个山的4/5处,从数学上说我爬了2.8个山,实际上我只爬了2个,那个0.8相当于等级因子进程量,那个2指的是当前等级因子。这个0.8和2,组成了完整等级因子【LevelFactor】


                  IP属地:江苏9楼2024-07-17 18:35
                  回复
                    等级因子包含等级因子具有非常复杂的调控机制:
                    (2)等级因子的增加机制:
                    当等级因子进程量 【ProgressToNextLevelFactor】将达到1时,会自动进入下一个等级因子,进程量从0开始计算。
                    ①根据"LevelFactorAddWeightZombieKill": 0.4,我们可得:击杀僵尸提供等级因子进程量。(具体如何提升待测,是一个未解之谜。似乎是,僵尸滞留时间越长,AddWeight会从0.4开始,减小,减小的单位量是0.02的2倍数)击杀僵尸需要等大概尸体消失动画播放完毕之后等级因子才会增加。等级因子不影响已出现的僵尸的等级,而会影响即将出现的僵尸的等级,包括下一波的僵尸、小鬼炮射出的僵尸、小鬼梨变出的僵尸等等。
                    ②根据"LevelFactorAddPctReductionPerLevel": 0.1,我们可得:僵尸每升1级,以后增加的等级因子(进程量)减少10%。当僵尸升至11级时(升了10级),以后增加的等级因子为0,所以11级是竞技场僵尸的最高等级,打到11级,我们说进入了隐藏分。
                    ③根据 "LevelFactorAddWeightZombieKillPctIncreasePerLevel": 0.1,我们可得:僵尸每升1级,以后增加的等级因子增加10%。
                    ④根据 "LevelFactorAddWeightZombieLostHelm": 0, "LevelFactorAddWeightGravestoneDestroyed": 0,"LevelFactorAddWeightZombossStageEnd": 0,:失去防具、摧毁墓碑、僵王眩晕阶段结束不提供等级因子进程量。
                    ⑤段位等级提供的初始等级,本贴后面会讲。


                    IP属地:江苏10楼2024-07-17 18:36
                    收起回复
                      (3)等级因子的衰减机制。
                      ①根据"LevelFactorDecayProgressAmount": 0.5,当等级因子高于段位提供的等级因子时,会以两秒为周期衰减,每次衰减 0.5 的等级因子进程量。该衰减机制称为自然衰减。
                      "LevelFactorDecayContinuesToNextFactor": true,
                      就是简单粗暴 直接从等级因子进程量里扣0.5,然后不够的话找上一个等级因子借。
                      ②植损:
                      植物的植损的包括两个层面:第一个层面是代码层面,即代码规定了哪些植物无论如何都不算植损,即“不算植损名单”,见下文。如坚果墙、全息坚果、甜菜护卫。
                      第二个是实际层面,指的是“不应当出现的植物损失”。玩家拿铲子主动铲掉、植物的技能消失都不算。比如,鳄梨正常的冲锋也不算,喷射番茄的大招爆炸也不算。
                      而植损会导致等级因子降低,僵尸的等级也会降低,得分自然而然就少了。所以直接说“植损扣分”是错误的说法。
                      具体表现如下:植损时,会扣除当前等级因子量的30%(四舍五入)。如果扣除的值小于1,则按1计入。(直接扣除等级因子,而不是等级因子进程量,等级因子进程量直接清0)
                      以玉杯(初始僵尸等级为 8 )为例,如果开局损失一株植物,等级因子会减少 ( 8 - 1 ) × 0.3 = 2.1 ,四舍五入得 2 ,下一波出现的僵尸将是 6 级,此时再损失一株植物,等级因子会减少 ( 6 - 1 ) × 0.3 = 1.5 ,四舍五入得 2 ,下一波出现的僵尸将是 4 级,再损失,等级因子会减少 1 ,下一波出现的僵尸将是 3 级……直到 1 级,丢车也是同理。
                      不计植损名单如下:“wallnut", "potatomine", "spikeweed", "springbean", "spikerock", "squash", "tallnut", "holonut", "peanut", "chardguard", "endurian", "celerystalker", "garlic", "primalwallnut", "primalpotatomine", "explodeonut", "hollyknight", "sweetpotato", "chilibean", "shrinkingviolet", "hypnoshroom", "hotdate", "sunbean", "electricitea", "imppear", "torchwood", "pumpkin", "gumnut", "tumbleweed", "murkadamia", "explodeovine", "solarsage", "teleportatomine", "heathseeker", "noctarine", "iceweed", "blockoli", "buttercup", "bramblebush", "nightcap", "rhubarbarian", "tombtangler", "vamporcini”最近该更新了爆浆玉露、电钮菊、豆芽。
                      ③车损,即损失小推车。比植损程度略轻,把上面的30%换成20%即可。


                      IP属地:江苏11楼2024-07-17 18:37
                      收起回复
                        3.段位等级。
                        ①段位等级实际上提供起始【LevelFactor】,
                        段位等级存在于关卡文件中
                        "LeagueThreshold": N,
                        "AddZombieLevel": N-1,
                        N ∈ [1, 9] 且为整数,N指的是段位等级。曾经有一个废稿最高杯段(第九杯段)——水晶,所以代码里定义了N取9的影响,实际是取不到9的。
                        最初始的段位为泥土杯,泥土杯的段位等级是1,不提供初始LevelFactor。每升1个段位,段位等级加1,提供LevelFactor值+1。翡翠杯,段位等级为8,提供7个LevelFactor,所以僵尸的初始等级为(1+7)=8。(竞技场默认僵尸基础等级为1级)从此我们能总结出一个规律:
                        段位等级=僵尸起始等级。
                        ②杯段等级增数具有伪兜底效果,因为等级因子自然衰减以它为临界点进行发生,换句话说,等级因子自然衰减不会导致僵尸等级小于杯段等级增数,所以说“兜底”;而植损与丢车会导致僵尸等级小于杯段等级增数,所以说“伪”。
                        ③此外,跑步机等小Boss在竞技场的局内等级就是杯段等级(杯段等级增数+1),它们的等级不受等级因子影响。它的等级和基础分数永恒的。BattleZ规则下,三个阶段分数依次是:250000、375000、500000。


                        IP属地:江苏12楼2024-07-17 18:37
                        回复
                          4.其他细节
                          “LevelFactorMaximum": 20, 表明最大等级因子是20。实际上咱们前面说了,最高是10,僵尸等级最高11。
                          "LevelFactorStart": 0,起始等级因子是0。
                          "LevelFactorFriendlyZombieDiedPenaltyFraction":0
                          "LevelFactorFriendlyZombieDiedPenaltyMinimum": 0,己方僵尸死亡,不计入己损。
                          "LevelFactorAddWeightZombieKillLifetimeStepDecrease":0.01, "LevelFactorAddWeightZombieKillLifetimeStepSeconds": 5,这两个代码存疑,不一定采用。
                          "LevelFactorBaseReductionByMultiple": 0.1, "LevelFactorNextDelayToDecay": 2, "LevelFactorNextReductionByMultiple":0.1, ,
                          "LevelFactorDelayToDecayMinimum": 2,。
                          以上表明每两秒衰减一次,但是减少10%当前等级因子量存疑,可能没有采用。
                          "LevelFactorVisibleDecayPeriod": 1.5
                          可视衰减周期1.5,楼主推测这个代码是潘追计分板改过来的没删干净
                          以下代码来源于关卡存档:
                          "m_nextLevelFactorDecrease": 下一次等级因子衰减时间(该时间为关卡内部计时)无衰减时,3.4028235乘以10的38次方,为float。
                          "m_currentLevelFactor": 0,(当前等级因子)
                          "m_maxLevelFactorAchieved": 0,(曾经达到过的最大等级因子)
                          "m_levelFactorToStopDecay": 0,(等级因子停止衰减时间)
                          "m_levelEnded": false,(关卡是否结束)
                          "m_progressToNextLevelFactor": 0.8,(等级因子进程量,这里面是0.8)


                          IP属地:江苏13楼2024-07-17 18:38
                          收起回复
                            等级因子实际上是一个很伟大的发明,也是国际版竞技场的精髓所在,设计师的水平绝对很高。植损车损自然衰减的等级因子降低机制,降低僵尸,让新玩家更有游戏体验感,而段位初始等级增加,也让高配玩家更有挑战的难度,极大提高了可玩性。并且,残半刷新的最小间隔是5秒,如果玩家火力溢出,则会有增量真空,受"LevelFactorAddPctReductionPerLevel": 0.1,的影响,火力溢出亏损的等级因子增量更多,这也是对高等级玩家灌满伤害的分数限制。堪称妙绝.


                            IP属地:江苏14楼2024-07-17 18:38
                            回复
                              三. 僵尸替换机制
                              僵尸替换机制【ZombieLevelSwaps】指的是动态等级到达某等级后,原本要出现的某个僵尸被替换成了其他僵尸(不涉及到僵尸点数的变动),僵尸替换机制提高了关卡的趣味程度。


                              IP属地:江苏15楼2024-07-17 18:39
                              回复