啊呀,似乎有谁在这里留了个坑……
本条目需要大量内容补充或整改。你愿意来帮个忙吗?
本条目部分或全部内容搬运自外部资源。
遵守CC BY-SA 4.0协议,部分内容可能有所改动。
表格及图片尚未搬运完成,欢迎帮忙
现有的炮阵视频中,长期以修改器调出的“极限出怪”为主流标准。极限出怪中所有僵尸数量被平均分配(也就是说如果出了10种僵尸,那么每波每种僵尸都恰有5个)。随着游戏技术进步,人们逐渐意识到游戏自带的出怪机制(称为“自然出怪”)其实远远难于极限出怪。具体而言,有以下三个主要难点:
PvZ键控炮阵四大难题之三——砸率、炮损、炸率——如今都有了定量分析与应对方案,但自然出怪的数据研究仍然几乎是空白。一直以来,炮阵玩家对自然出怪的印象大概是这样的:
【PVZ大厦.gif】(待补)
为了扭转这一情况,有几个问题需要重新作出回答:
想要回答这些问题,必须以概率的形式定量分析不同操作的刷新概率。
作者制作了一个方便的刷新概率测试工具,用它测试了大量的常见操作。得到的数据否定了一些旧操作,也证明了不少新操作、新策略的可行性。这些数据告诉我们,自然出怪下的稳定性也是可以把握的。虽然自然出怪仍然有着难度,但以后我们不必再对其避而不谈了。
写给高级玩家的速查索引:本文经过数据核实,更新或推翻了大量刷新问题的认识,重点见下。
详细说明解释及量化论证见后文。
刷新下一波僵尸与否,由场上的僵尸总血量决定,而僵尸血量又由每次选卡的右侧显示僵尸(“出怪种类”)和每个僵尸游戏内置的“权重”决定。本章会说明这三个因素决定刷新的具体机制,已了解的玩家可跳到第二章。
在两个flag之后选择植物卡片时,选卡界面右侧展示的僵尸叫做“出怪种类”。这之后的两个flag中只会出现这些僵尸。
不考虑旗帜和雪人的话(它们虽然会生成,但不在出怪种类里),无尽模式中可能出现的僵尸一共 20 种。决定出怪种类时还会有两种占位僵尸(可能被选入出怪类型,但实际不会出),总共 22 种候选僵尸。它们在泳池场地中都可能出现,但其他场地会排除一部分。具体而言,泳池之外的场地不会出海豚潜水,黑夜不会出冰车,天台不会出舞王矿工。
生成出怪种类的方式如下:
因此,一次选卡会出 9~11 种僵尸。除去普僵路障读报外,其余僵尸的出现概率都是一样的。预览界面一个僵尸出现多次是由它在关内的实际数量决定的,与出怪种类的选择无关。
不同场地下第3步的可选僵尸种数:
白天 | 黑夜 | 泳池 | 天台 |
---|---|---|---|
18 | 17 | 20 | 16 |
以DE为例,红眼关占比为9/18=50%,红白关占比为9/18×8/17=23.53%,只有红眼而没有白眼的关卡(下称“单红关”)的占比为50%-23.53%=26.47%。
生存无尽一次选卡共 20 波,每波出 50 个僵尸。除去旗帜波会首先固定生成 1 只旗帜和 8 只普僵外,其余僵尸是随机生成的,每种僵尸被生成的概率与其权重成正比。比如只有权重为 400 的普僵与权重为 1000 的路障,那么每次随机会有 400/1400=2/7 概率出普僵,1000/1400=5/7 概率出路障。僵尸出现在的行数也是随机决定的,但是前 5 波水路不会出普僵、路障、铁桶和气球。
以下是一些僵尸的权重信息,按照刷新贡献排序(很快就会说这是什么)。表中未出现的僵尸刷新贡献均不超过 7.5。
权重 | 血量 | 刷新贡献(×10000) | |
---|---|---|---|
红眼 | 1000 | 6000 | 60 |
白眼 | 1500 | 3000 | 45 |
铁桶 | 3000 | 1370 | 41.1 |
橄榄 | 2000 | 1670 | 33.4 |
冰车 | 2000 | 1350 | 27 |
铁门 | 3500 | 490 | 17.15 |
投篮 | 1500 | 850 | 12.75 |
撑杆 | 2000 | 500 | 10 |
完整的表格见cv12188730。
刷新贡献=权重×血量,表示僵尸在刷新问题中的“存在感”。(比如说,对全场白眼造成一次灰烬伤害会提供45×1800/3000=27的刷新贡献,这和消灭全场冰车的刷新贡献一样)可以看出,僵尸刷新贡献的分配非常不均衡,只有少部分僵尸较值得关注。因此,贡献≥27的五种僵尸——红眼、白眼、铁桶、橄榄、冰车就成为了本文中的重点僵尸。它们的存在与否会对刷新产生巨大影响。
每波开始时会根据该波生成僵尸的总血量确定一个刷新阈值,为总血量的 50%-65%。当本波刷新至少 401cs(1cs=0.01s),且本波僵尸剩余血量低于刷新阈值(也就是打掉 35%-50%)就会在 200cs 后刷新。如果一直没有达到阈值,会在本波刷新 2500-3100cs 后生成下一波。
蹦极和伴舞都不计入本波剩余血量,但小鬼计入。如果401cs 开始判定时小鬼已经出生(对应巨人于 295cs 之前被激活投掷),会增加本波僵尸剩余血量(小鬼的波次与巨人的相同,激活上波红是没有影响的),但是刷新阈值不会再改变。此外,401cs后只要某一帧满足刷新条件便会进入200cs后刷新下一波的流程,即使这200cs内剩余血量又超过了刷新阈值也没有影响。因此,在401cs之后生成的小鬼不会影响刷新。
数据使用基于AvZ1的刷新测试器测得。每个项目运行500次选卡,共10000波,原始数据可在此处下载。压缩包中的result.txt列出了所有测试项目的单波意外概率及其95%置信区间,XLSX文件为各测试项目结果,具体格式见此。
本文不可能覆盖全部键控炮阵操作,文中未提及数据欢迎大家自行测试。
由于自然出怪每波僵尸构成的巨大不稳定性,能认定100%成功的操作非常少见。我们需要的是定量分析各种操作的刷新意外(下称“意外”)概率,以确定哪些操作可以放心使用,哪些操作应减少使用。
本文以每波意外概率0.05%作为最高标准,意外概率低于此值者全部视作「接近严谨」的级别。如果一个阵解在一半的选卡中使用20次意外概率0.05%的操作(实际不会有这么高的使用频率),那么这个阵型平均每400f才需要因刷新SL一次,稳定性是相当高的。
第3、4、5章的数据表会给出各种常见操作的意外概率,以每波意外概率百分比的形式呈现。概率<0.05%(此量级下难以精确测量)标灰底、0.05%-1%无标记、1%-3%标黄底、3%-6%标红底、6%以上标为红底白字。
为了定量比较阵解刷新问题的严重程度,我们定义“总和意外率”作为刷新稳定性评价标准。“总和意外率”指随机一次选卡中,刷新意外会导致破阵的波次的意外概率之和。举个例子,假设一个DE阵型:
DE有红无白关占比为9/18×(1-8/17)=26.47%,红白关占比为9/18×8/17=23.53%(这两个值的推导见1.1节),因此这个阵型的总和意外率为26.47%×17.5%+23.53%×8%=6.515%。
注意:第3、4章的操作,适用范围是w1~w8,w11~w18共16波,而第5章的操作只适用于w10一波,故而第5章的各操作概率不可和第3、4章直接比较,而是应当算出总和破阵率后比较。至于w9、w19和w20,这些波次在消灭全部僵尸后才会刷新,它们的刷新意外不在本文的考虑范围内。
此外,上面考虑的是单波意外即破阵的情况。如果一个阵型需要多波发生刷新意外才会导致破阵,上述定义不能有效地反映其稳定性。这个问题会在6.2节中被进一步分析。
从本章起,我们列出各个数据图表,每个小节是一组数据及其解读。各个操作如无备注,均指在泳池场地的操作。 激活操作,指在新一波僵尸出场后使用灰烬植物大量杀伤僵尸的行为。操作预期目标是将僵尸血量削减到刷新阈值以下,使游戏刷出下一波僵尸;意外情况是炸到的僵尸太少,没有达到刷新阈值,称为“延迟”。
由数据可知,会大量漏掉铁桶等慢速僵尸的225PP 并不稳定(4.710%)。撑杆开始可伤(341cs 及更晚)之后,意外概率大幅下降(0.577%→0.163%→0.062%)。漏矿工对激活影响不大。
半边精舞与普通PD相比可以非常显著地促进刷新。
295cs 及以前激活的情况下,丢出的小鬼会计入血量判定,拖累刷新。可以看到,225~295cs 激活时 PPDD 与 PP(或 PPdd)有显著差异。PP 的意外概率在 296cs 从 1.088%突变为 0.723%。
Dance 秘籍可以大幅提高普僵、路障和铁桶被炸到的比例,对刷新的促进非常显著,一些情况下甚至能降低意外概率近一倍。此后数据除非另有标注均为使用秘籍时的结果。
连拦漏一行水路时容易延迟(2.253%)。1路加辣椒,D炸2路可有效解决该问题(0.371%)。
由于红眼在两半场分布不均,六行场地的PSD/B很不稳定(5.379%、4.112%)。五行则好不少,常见的PDd/B和B/PSD稳定性都可以接受(1.490%、0.599%)。
在PP的基础上额外使用辣椒或樱桃可有效消除延迟。晚于225的PP在使用智能辣椒时可视作定态激活,225PP则需智能樱桃才能稳定消除延迟。
形如PSD/Pd的操作延迟概率几乎为零。
最后,如果本章所提及的加速波激活操作已经发生意外,考虑这种情况的对策时需要注意:激活操作后接冰可能会由冰的伤害激活刷新。PP延迟后有约20%概率冰激活,PSD/B延迟后有约10%概率。
该阵型为逐波P6节奏,轨道如下:
PDc/PSD 359/232
PDc/PD 359
PDc/PSD 359/291
PSD/PDc 291/359
cPPI 318
NA'I 319
PAD/PSD 232
PPDDcc 359
PPDDcc 359
PPSSDD 291
w1、w3、w4、w7不会延迟;w6上F等效于318PP+智能辣椒,下F等效于318PP+固定辣椒,查3.1表3得意外率<0.05%,认为不会延迟;查表3.1.1得w2、w8、w9延迟率为0.062%,w5延迟率为0.379%。
此节奏不能循环,上F延迟两波就无法收尾。计算得w2、w5、w8、w9延迟不少于两波的概率为0.00082%。(这个算法实际上不准确,见6.2节)
下F w10可能延迟(数据见表5.1.1),之后的波次不会延迟(这些波次延迟需要出大量红眼,这样的关卡按经验基本在w11已经变速)。变速后,w16和w18无需PSD,省出的运算量可用于应对w10延迟情形。
由上可以得出结论:该阵型总和意外率接近零。
分离操作,指对新一波僵尸使用灰烬植物,杀伤部分僵尸的行为。操作预期目标是在不刷出下一波僵尸前提下,消灭具有某种威胁的僵尸;意外情况是炸到的僵尸太多,触发新一波僵尸刷新。
分离操作一般会在使用了寒冰菇的一波中使用。也有在分离大量僵尸之后才使用寒冰菇(或者完全不使用)的操作,单独称为“无冰分离”。
双边热过渡在红白出怪下较为稳定,但是否收取跳跳会导致非常大的意外概率差异(0.093%→0.314%)。减速PDD的意外概率(1.565%)远高于其他热过渡操作,建议减少使用。
意外地,炸虚热过渡在单红关稳定性并不很差(1.188%)。
“炸虚分离海豚”指的是于1191cs(或更早)炸(3, 7.2375),收已经跳78列炮的海豚的操作。这种操作下海豚无伤的极限波长是1623。
B及B*操作大多数在可接受的边界——3%附近。由于不伤岸路快速,炸虚分离的意外概率约1%,远低于B和B*。炸一行岸路巨人的分离极其不稳定(13.55%),最好不要使用。
DE热过渡+分离:
总体情况与PE接近。
“不完全热过渡”指以单边热过渡为基础的一系列操作。
少分离一行冰车就可以使意外概率下降一个量级(PE双边炸虚热过渡+B 2.120%,单边炸虚热过渡+地刺+B 0.224%),这对压制需求不对称的阵型来说是个好消息。
冰车拥有高达27的刷新贡献,还不受冰冻,在分离操作中存在感最强。在没有冰车的NE场地,可以使用的分离强度大大提高。
NE红白关中,IPP-B基本可以视作定态,双边有冰分离的稳定性与PE的双边热过渡+弱分离相当(IPP(实)+BB 0.537%,PE I3PPDD(622) 0.653%)。热过渡+单边分离的操作在单红关也可以使用(0.330%)。
无冰分离:
半场无冰分离在红白关较稳定(0.064%),单红关也可以接受(1.018%)。双边无冰分离的稳定性与PE的IPP-B接近,仅红白关可勉强使用。
一直以来,“夹0”(即未变速时某波不出红眼)被视作单红关的头号问题。(全对称树八炮变速解发布贴甚至提出要刷出怪列表以避免夹0)然而,红眼数为0的波次对意外刷新的贡献甚少。以单红关IPP-301为例,测试统计得出意外刷新波次的平均红眼数为1.46,而平均冰车数高达10.9。在容易出现夹0的关卡中,也很难出现如此多冰车,反倒不易意外刷新。
本文认为,意外刷新的主要原因是某波冰车数量超过期望值过多,而与红眼的数量关系不大。特别地,“红眼是1只还是0只”其实并没有本质区别。因此,本文认为“夹0”的概念无意义,不特别讨论“夹0”。
但是,变速衔接波次(包括出红眼的最后一波与不出红眼的第一波)非常值得关注。本节详细讨论这两波的情况。
受总红眼数的限制,即使出怪权重中红眼占比再高,变速前最后一波也可能只出1~2只红眼。数据见下表:
权重 | 9401 | 10401 | 11401 | 12401 | 13401 | 14401 |
---|---|---|---|---|---|---|
1红 | 5.110% | 4.328% | 8.042% | 14.11% | 20.22% | 24.86% |
2红 | 5.803% | 4.072% | 6.613% | 11.80% | 17.17% | 21.39% |
【表4.4.1 不同总权重下“变速前最后一波”出1~2只红眼的概率】
分离操作意外波次的平均总权重约为13000。以13401权重为例,正常波次出1只红眼的概率为8.346%,但在变速前最后一波则大幅提高到了20.22%。
同样以双边炸实热过渡为例,单红关变速前最后一波出1红时意外刷新概率超过了正常波次的5倍(15.06/2.952=5.102),因此在变速解中最好考虑在“变速前最后一波”使用弱分离(如单边热过渡)或解非定态。
难以精确测量变速前最后一波的期望意外概率,但可以粗略地认为同一操作在“变速前最后一波”使用时的意外概率约为正常波次的2倍。
后院半场热过渡或前院三行热过渡在快速关可能意外刷新,但前院两行热过渡(即热过渡炮炸边路)是非常稳定的。
红关节奏:ch4: BI-PPD|BI-PPD 1738|1738
快速关节奏:C6i: IA-PP|IP-PP|IP-PP 1384|1384|1384
容易看出,分离意外是此阵的主要矛盾。此处忽略激活的不稳定性。
无限制 | 1红 | ||
---|---|---|---|
红白 | BI刷新 | 0.045 | 0.164 |
自然输出刷新 | 0.077 | 0.341 | |
单红 | BI刷新 | 0.790 | 5.270 |
自然输出刷新 | 0.933 | 6.047 |
【表4.5.1 全对称树八炮各条件下意外概率】
与此前结论不同,单边无冰分离的刷新稳定性(0.045%)略强于双边热过渡
(0.093%),在红白关使用是没有问题的。但是,全对称树八炮在单红关也需要使用这一操作,这是此阵型刷新不稳定性的主要来源。接下来主要计算该阵型在有红、车,无白关下的意外率。
即使考虑自然输出刷新,从变速前ch4到变速后C6i的过渡也是成立的。该阵型有如下三处不稳定性:
为简化计算,我们认为这三种情况分别有7、1、8波,且一次意外发生就破阵。计算得该阵型在有红车无白关的意外概率为7×1.723%+3.446%+8×0.319%=18.06%。这种出怪类型在PE的占比为9/20×8/19×(1-7/18)=11.58%,两者相乘得该阵型总和意外率为2.091%。
旗帜波(w10、w20)相比普通波有两处重要差异:
第一点意味着旗帜波需要增加运算量以杀伤红眼,第二点意味着旗帜波需要晚激活以杀伤铁桶。在快速关(本文中指不包含巨人的关卡)中,由于没有巨人,铁桶在刷新问题中成为主导因素,因此快速关旗帜波激活也需要分别讨论。 旗帜波激活困难,而分离是相对容易的。经测试,各场地各时机下一炮炸9列都不会刷新(<0.05%)。
总体来说,PE三炮炸实在旗帜波不能稳定激活,需要晚激活(≥401)且智能炸红眼多的半场才较为稳定。四炮炸实时PPDD可以严谨激活,而半场P半场PSD不行。
DE由于行数减少,灰烬覆盖更全,三炮炸实也是可以接受的。拦截阵5运算量的最优打法是PSDDD,可以非常稳定地激活。
不使用Dance Cheat时旗帜波无法保证在441以内激活,这给需要w11预判冰冰杀w10蹦极的阵型带来很大困难(若冰杀小偷的冰激活w10,w11就由冰波变成加速波了)。使用Dance Cheat可以极大幅度提高稳定性,但也最好垫舞王(如果有7/8列植物的话)把激活时间拖到441。
显而易见的是,出怪的不同会影响激活和分离的意外概率。可以粗略地把僵尸分为四类:
其中第1类和第4类是需要重点关注的对象。出第1类僵尸时,应更多关注分离而更少关注激活;不出时反之。第4类反过来,出时多关心激活,不出时多关心分离。
为红眼关和无红眼关分别设计打法是炮阵中极其常见的做法。但是,基于冰车的分治却几乎从未被提及。由于冰车极大的刷新贡献,这一策略是十分有效的:常见分离在无冰车关的意外概率几乎为零,常见激活在有冰车关的意外概率只有平均情况的1/5左右。
一些情况下,一个阵型是否因刷新意外而破阵并不是由单独一波僵尸决定的。比如一个阵型有两波易延迟,都延迟就会破阵,那么总和意外率应当如何计算呢?
一个自然的思路是:两波都延迟的概率等于各自延迟概率的乘积。然而,这种算法是有很大偏差的。
显然,刷新意外并不是均匀分布的,而是一定程度上“扎堆”分布在较难应对的出怪种类中的。这说明,如果某波发生刷新意外,那么它有更大概率属于较为“困难”的选卡,它所在选卡的其他波次也更容易发生刷新意外。
对于两种操作A和B,定义它们之间的“相关系数”为以某波A意外为条件,下一波B又意外的概率与B本身意外概率的比值。(如果还是不理解这两个数为什么不相等,可以搜索“条件概率”与“贝叶斯定理”。)使用这一相关系数,就可以回答本节开头提出的问题:总和意外率等于两波各自延迟概率之积再乘上两者的相关系数。
比如说连续两次PPDD-225意外的概率,只需要查表3.1.1 PPDD-225得到其单波意外概率为2.664%,再由下表找到PPDD-225/PPDD-225的相关系数为4.210,就可得出连续两次PPDD-225意外的概率是2.664%×2.664%×4.210=0.2988%。
下面是部分相关系数的数据:
【3张表待补】
这几张表不能覆盖全部的操作,而且没法精确计算连续三波延迟的概率。但是,可以粗略估计激活操作间的相关系数约为8,分离操作间的相关系数约为3。
值得注意的是,经统计分析,激活操作与分离操作之间的相关系数接近零,这意味着同一次选卡中(变速前)几乎不会既发生激活意外又发生分离意外。
现在回看3.3节中的计算,不难发现其中的问题。“延迟两波”需要乘相关系数,因此3.3节中的计算低估了实际破阵率。主要的破阵方式为318PP延迟+精舞延迟,查表得两者之间相关系数为6.292,修正后的意外率为0.00082%×6.292=0.0052%。
阵解(无刷新意外时):IPP-PPDD|PSD/B|IPP-PPDD|PSD/B 1149|601|1149|601
该阵型无红关、单红关都有稳定解法,此处略。
考虑对出怪有无冰车进行分治。无冰车关可以打更低参数的ch5u或连续冰波,有稳定解法,此处略。
分析的重点是红白车关的打法(这也是视频里展示的情况),是一个破阵条件较为复杂的非定态解:
若发生意外时,所需的卡片在CD中,则破阵。
查表6.1.1得红白车关PSD/B延迟的概率为1.734%,冰波延迟的概率为0.157%,相差一个数量级以上,此处暂且忽略冰波延迟。
笔者测试得红白车关PSD/B延迟与自身的相关系数仅有1.21,忽略该系数对结果的影响不大。
由6.2中激活与分离之间相关性低的结论,激活意外与分离意外应分别计算并求和。下面分析激活意外:
上F共有4波PSD/B(w9不会出现刷新意外,不算在内),以下情况会破阵:
计算得发生概率为0.147%。
假设下F有3波PSD/B,同理得发生概率为0.089%,两者相加得0.236%。
分离意外的计算过程与之接近且更为繁杂,此处略去。由于处理分离意外只需消耗一个运算量,分离意外导致破阵的概率与激活意外相比可以忽略。
由上可以得出结论:该阵型总和意外率约为0.236%×9/20×8/19×7/18=0.017%。
受能力所限,部分因素只能予以忽略或粗略估计。欢迎提出更精确或更简便的算法。
一入自然深似海,从此真阵是路人。
本文第一次给出了量化评价阵解在自然出怪下的刷新稳定性所需的理论和数据。在本文的基础上,评估、优化已有阵解和创造新阵解将不再是缺乏定量依据的无源之水。诚然,自然出怪解还是一片远未被充分开发的土地,等待后人回答的问题还有很多。但是,本文用九千余字和561份刷新数据说明了:自然出怪并非遥不可及。
感谢群友们对本文草稿提出的建议。尤其感谢启发我研究自然出怪并对本文草稿提出大量修改意见的nd,可以说如果没有他,那么这篇文章很可能根本不会出现。
刷新导论使用的数据分析代码可在此处下载。测试脚本未经系统整理,暂不提供下载。有问题可以在b站和贴吧的评论区询问。
课后习题:寻找PE. 最后之作在自然出怪下的较优解。