配套资料:
【炮三篇】精确炮阵砸率通论(上)(下)
前言:
和《砸率通论》一样,本文隶属超多炮进阶教程的子版块,将以理论及实测数据为基础,对常见精确炮阵构型进行炮伤计算与建模,着重讲解三大问题:1. 如何计算炮伤?2. 如何分析炮伤? 3. 如何消减炮伤?
阅读本文须对键控炮阵有最基础的了解。本文不会讨论键控语言相关知识,但默认精度1cs级,适用的现行框架有AvZ及Vmvz。
目录
一、基础设定
1.1 自然出怪 vs 极限出怪
1.2 啃食判定机制
1.3 僵尸速度
1.4 僵尸特性介绍
1.5 植物特性介绍
二、概念阐述
2.1 硬波长/软波长
2.2 炮伤
2.3 垫材逻辑
三、数据展示
3.1 炮伤表
3.2 波长表
四、例阵分析
4.1 无垫炮伤
4.2 有铲炮伤
4.3 无铲炮伤
4.4 I3PD炮伤
4.5 I3Pd炮伤
4.6 有冰分离炮伤
4.7 复合炮伤
五、拾遗补充
5.1 九列植物炮伤
5.2 轮换炮伤
六、后记
一、基础设定
科普用意,高阶玩家可无视。
1.1 自然出怪 vs 极限出怪
PVZ著名日经话题之一。两者区别如下:

原生游戏中不存在极限出怪。所谓“极限出怪”是上古时期的一位修改器作者【玉箫沙】于2010年创造的。当时鉴于出怪机制尚不明确,小玉提供了【平均分配所有僵尸数量】的修改功能,以便玩家能在低F模拟高F的出怪情况。至于僵尸权重、100F左右难度饱和之类的,都是数年之后的发现了。

改变了历史进程的小玉修改器
从2012年1月至2013年10月,被誉为“炮公”的贴吧ID为【FreezedIce】的玩家陆续发布了绝望之路、变奏22、垫材24、DE/NE/RE/ME20等阵型,建立了现代精确炮阵体系的地基。 除绝望之路外,这些阵型无一例外地使用了极限出怪而非自然出怪进行论证。在当时,普遍观点是极限出怪必出全红,与自然出怪相比只难不易。
如今我们知道,自然出怪由于高随机性,独具一些极限出怪没有的疑难杂症,主要分为【刷新延迟】与【意外刷新】两类。
刷新延迟——旗帜波(w10/w20)普僵三人组出生点右移,且红眼密度增加,两炮无法确保激活,包括无红多铁桶铁门的快速关。非旗帜波亦存延迟可能,诸如精舞、PPice2等都有小概率延迟。
意外刷新——红(白)慢速关中,存在若干波次红眼/白眼数量极少甚至不出的情况。此时,许多常用分离操作(例如双边热过渡、单边分离快速)会导致意外刷新。
作为炮伤概论,本文无意费长篇大论探讨出怪机制的取舍。为兼容历史遗产与现行成果,以下默认以极限出怪作为分析基础,即每波出5梯5丑5橄。然而,本文所提出的概念与方法均与自然出怪兼容,待来日建模成熟后亦可套用。

1.2 啃食判定机制
对于所有僵尸,存在时间为4的整数倍(若减速则为8)时才会判断啃食。例如,一只普僵出生后4cs时判定啃食,若此时判定为啃食,则即使植物在6cs时消失,普僵要在8cs时才会从啃食状态切换回行走。 ——【PVZ】一些无所谓的琐事
※ 由于AvZ特性,在4/8的倍数帧放置的垫材不会立即阻挡僵尸,需提前1帧放置。
不连续的啃食判定机制决定了所有冰波波长都可拖延至下一个8的倍数-1而不新增任何炮损。例如,1634波和1639波的【炮损】是完全一致的,因为1440才是8的倍数。但小丑爆炸是连续事件,两者在【炸率】上有微差。同理,所有垫材时机都应为8的倍数,因为更早下垫也无法提前起效,反使巨人提前举锤(使用AvZ需提前1cs下垫)。
1.3 僵尸速度
僵尸坐标由动画决定,动画由【相对速度】与【相位】决定。相位指动画播放的进度。例如下图为一只梯子的v-t图像:

可以明显看到是同一段行走动画在循环播放。
每个僵尸的【相对速度】决定了动画播放的快慢,但同一类僵尸的行走动画都是同一套(其实普僵有三套)。相对速度取值范围如下:

来源:Rnd Readme
每次啃食结束后,僵尸相位归零并刷新相对速度,开始下一个行走循环。梯子前进时步伐一大一小,行走循环内速率浮动较大,因此重置相位的时机也很重要,“垫得早不如垫得巧”。
1.4 僵尸特性介绍
分析炮伤时,下列僵尸需重点关注:
A级威胁——小丑、扶梯
B级威胁——投篮、橄榄
特殊——巨人
1.4.1 小丑
主功能自爆,副功能啃食。于出生时随机生成爆炸倒计时,归零后开盒并触发音效,过110cs爆炸,期间可被灰烬植物黑掉。
爆炸倒计时分两类:
早爆——440~754 (占5%): int(int((rand(300) + 450) / 3) / {0.66~0.68}) * 2
晚爆——1322~2268 (占95%): int((rand(300) + 450) / {0.66~0.68}) * 2
(数据来自Pt站 https://pvz.lmintlcx.com/wiki/)
其中倒计时边界值极难取到。0.66~0.68是小丑的速度参数,因此爆炸倒计时和相对速度也有关。
小丑冰冻时倒计时停滞。对于原速波,波长≤750无视早爆丑,≤1632无视晚爆丑。对于减速波(且小丑不受二次冰冻),波长≤1150无视早爆丑,1665起进入小丑不爆区间,≤2032无视晚爆丑。
小丑爆炸对植物判定不对称,下炸上比上炸下容易许多,需牢记。另外,前院场地行距100,比后院/天台(行距85)更大,侧翼小丑更难炸到植物。
1.4.2 扶梯
啃食系代表。唯有一点要说明:由于小丑可以自爆远程攻击,冰波小丑威胁远大于扶梯。加速波情况相反,扶梯威胁更大。
1.4.3 投篮
碾压系代表。原速波282,减速波1102起可碾压9列普通植物,但个体速度浮动较大(0.23-0.37)。减速波不可忽视的威胁。
1.4.4 橄榄
啃食系第二梯队,主要威胁体现为扶梯被分离后捡漏啃炮。
1.4.5 巨人
虽然巨人不会直接带来炮伤(只会带来砸率),但人家能砸垫啊……减速三血红还会限制垫材施用区间,后文详解。
1.5 植物特性介绍
这里只讲三种最常见的特殊垫材。
1.5.1 花盆
神器。刚种植的100cs内无视一切啃食,但不免疫车系碾压与巨人锤击。通过智能脚本,可将花盆用在梯丑最多路,优化垫材效果。有时花盆+另一垫作为双倍血量预存亦有奇效。
1.5.2 小喷菇/阳光菇
个体坐标存在偏移。横向偏移范围为 -5~+4,即至多偏左5像素或偏右4像素。非精确场景下可无视此特性。
平常为简化计算,通常以普通垫材的数据为准,但实际上又不可避免会用到小喷/阳光菇这类有坐标偏移的垫材。精确场景下,有必要调整相关数据。诚然,为了省力可以统一只用普通垫材,然后无视阳光之类的,但其实小喷/阳光菇带来的数据偏差并不大,不会导致什么致命问题,只是看你愿不愿意去多留个心。 ——《砸率通论》
1.5.3 三叶草
无视啃食/车系碾压,可吹散气球、迷雾,这些我们都知道。须注意的是:1. 形似【花盆+三叶】的组合仍会被碾;2. 三叶草若刚种下就被啃食,其存在时间从250cs缩短至200cs,因此用于减速波拖延梯丑的话反不如普通垫材(配合智能花盆)。
另注:存在投篮时,除三叶地刺等特殊垫材外,普通垫材不可直接置于投篮车底。有时往车底塞垫材,僵尸(如巨人)也有反应,这是因为巨人的栈位低于投篮,提前执行判定。然而僵尸栈位不受玩家控制,纯属概率事件,不可作为固定操作。
二、概念阐述
2.1 硬波长与软波长
2.1.1 原“极限波长”的漏洞
进入话题前,有必要先聊聊【极限波长】。
零度三连里对“极限波长猜想”定义如下:
事实上,几乎所有的僵尸对阵型威胁的程度随时间的变化都并不是连续的…… 在不增加额外运算量的前提下,任何一波的长度都可以转化为极限波长,同时不受到来自僵尸的新的威胁…… 若一个阵型有解,则其必然有只使用极限波长的解。 ——《夜间极限超多炮通论及轨道分析》 https://tieba.baidu.com/p/5601494658
首先需要明确,极限波长猜想即便不说是错的,也是存在极大问题的。极限波长的本质是无视小丑巨人后的无伤波长。可是:
小丑无法被无视。冰波下,小丑对超前置炮的威胁远大于扶梯,危险程度仅次于冰车;
绝大多数阵型不追求也不需要无伤。
第一点意味着极限波长可继续【缩短】;第二点意味着极限波长可以被【延长】。一来一去,“极限波长”变成了参考波长,不具有泛用性。忽视威胁最大的小丑,却要求对扶梯无伤,这套逻辑本就是不成立的。
2.1.2 硬/软波长代替极限波长
取而代之,本文将提出【硬波长】与【软波长】的概念。硬波长指对某种僵尸严格无伤的波长,为定性标准;软波长指将特定僵尸的损害控制在一定程度的波长,为定量标准。举例而言,完美预判冰下扶梯对超前置炮的【硬波长】为1351,不超过无伤,超过则有伤;【软波长】视炮损程度分类讨论,如下图所示:

来源:【Endless】实用数据 (网页链接)
※ 表中之所以0炮损波长显示为1159,是因为1159前啃炮概率太低,N=10000下未能测定。
2.1.3 万物皆“软”?
由于僵尸出生点、速度、解冻时间等分布的不确定性,任何波长都可基于【软波长】讨论。比如冰车碾7列炮硬波长1309,我偏要拖到1310激活,赌它不刷最快冰车。尽管冰车碾炮的确只是一个概率事件,实践中取硬波长显然比软波长更优,一能简化计算,二是拖延的收益过小且风险过大。作为对比,在极限无炮中采用不完美车抗的构型的屡见不鲜,只要求碾率控制在一定范围内。这恰恰证明了所有波长的本质都是软波长,仅在合适语境下视作硬波长处理。
2.1.4 “硬”与“软”的主观区分
现行炮阵实践中,通常对硬/软波长作如下区分:

当然, 这些只是一部分例子,亦不代表严格标准。但我们不难看出,视为硬波长者有三大共性:规避难度低、危害程度大、妥协收益小。与之相对,作软波长处理者的特点是规避难度高、危害程度小、妥协收益大。因此,以“零砸率”为唯一目标的砸率通论可以洋洋洒洒写近3w字,但炮伤概论要是只讨论严谨波长几百字就完事了。
2.2 炮伤
2.2.1 合并炸率与炮损的需求
试想一个场景:梯丑同出时,越晚下垫,小丑炸率越低,但梯子炮损越高;越早下垫,小丑炸率越高,但梯子炮损越低。究竟应何时施垫?
上述问题的核心在于炸率与炮损间的权衡。从直觉上说,小丑炸率为一击必杀,梯子炮损则是逐渐削减,似乎应优先压低炸率,再考虑炮损。可实际上,即使考虑投篮碾垫,总体趋势仍为下垫越晚,炸率越低。若一味优先低炸率,炮损将成倍增长,最终量变引发质变,因小失大。
炸率or炮损?这是PVZ界的电车难题。
2.2.2 炮伤=炸率+炮损
此处必须感谢小e提供的观点,若非如此本文还停留在炸率概述的阶段。
要平衡炸率和炮损,最直接的方法是用统一标准衡量两者。基于此,小e提出了【300折算法】,即将一次炸炮视为造成300炮损。将折算后的炮损称为【炮伤】,可推导出以下等式:

由此衍生出【单次选卡炮伤】、【单波炮伤】、【单位炮伤】等概念:
单位炮伤——某一门炮在一波内受到的期望炮伤
单波炮伤——某一波所有炮的单位炮伤之和
单次选卡炮伤——某一次选卡所有波次的单波炮伤之和
2.2.3 “炮伤”的利与弊
引入【炮伤】最大的好处是在炸率与炮损间建立起了换算桥梁,极大程度上解决了两者的权衡难题。
同时,我们也应认识到其局限性。炮伤只是期望值,并未考虑方差的影响。实际无尽中,同样面对30炮伤期望,我们当然希望它全部来自扶梯炮损,而非10%的炸率。这是因为后者的方差远高于前者。若小丑炸炮,许多阵型将无法正常运转,带来附加负面影响(例如重录视频)。其次,炮的血量并非总是300,理论上残留血量越低,炸率的折算率也越低,尽管这一点并不会导致太多误差。
2.2.4 炮伤评估体系
本文使用的炮伤评估体系如下图所示,以单次选卡炮伤占单门炮最大血量比率(炮伤比)作分界,共分六等级:

许多阵型仅在减速波有炮伤,可以根据减速波总数计算可接受的最大单波炮伤。表里右侧列出的【1、7、11、17】是四种常用减速波总数。【1】为基准参考;【7】对应常见夜间阵型;【11】对应白昼参数5(ch5/I5);【17】对应白昼连续冰波(ch4/I4i等)。
不难看出,由于白昼与夜间的冰波数差距显著,两者对单波炮伤的容忍度也不同。同样的操作,在夜间属于【良好】,用在白昼就可能是【中等】。
2.2.5 “严谨”与“安全”
细心的读者可能已经发现,在炮伤评估表里【严谨】的标识为“SS”,而【安全】的标识为“S”,似乎暗示了两者都是可以接受的。
事实的确如此。由于小丑所致炮伤方差极大,要做到绝对严谨,亦即炮伤为0(或称“无伤”)是极其困难的。有垫守超前置炮的情景下,若按一只最早爆小丑+一只最快且爆炸时间最理想的最差情况计算,那么严谨波长仅有1362。可实际上,即使PE陆路四炮测1w波(计5w丑),最早要到1476才出现了第一次炸炮情况,与严谨波长相差足有1.14s之多。
回想【硬波长】与【软波长】的概念。显然,对于小丑应以软波长论,而非硬波长。强求“严谨”,不如追求“安全”。基于此,本文以1%炮伤比为界,认为单次选卡炮伤不大于3者在实践上均可视为安全。这意味着即使这些炮伤全部来源于炸率,单次选卡的通过率也高达99%。
基于白昼与夜间常用冰波数的差别,作定义如下:
【白昼安全】—— 单波炮伤不大于0.17的操作,即使一次选卡内重复17次也属【安全】;
【夜间安全】—— 单波炮伤不大于0.42的操作,即使一次选卡内重复7次也属【安全】。
当然,【严谨】仍然是不可撼动的最高级别,以及一些奇葩阵型的确能做到极红下严格无伤(比如这个)……
2.2.6 瞬伤和损伤
僵尸对植物的伤害可分为两种,一是一次性致命伤害(小丑爆炸、巨人砸),二是逐步多次血量削减(各种啃食、篮球投篮)。
为交流方便,称前者为【瞬伤】,后者为【损伤】。亦即:

在本文语境里,由于不考虑巨人砸、篮球投篮等因素,“瞬伤”等同于炸率*300,“损伤”等同于狭义炮损(梯丑橄造成的啃食伤害)。
有必要指出的是,【伤害=瞬伤+损伤】是恒定真理,而【炮伤=炸率*300+炮损】只是本文主观定义的兑换公式,不应混淆两者的实际意义。
2.3 垫材逻辑
垫材逻辑可分为五种:【预存】、【无铲】、【有铲】、【轮换】、【无垫】。
预存较为少见,指没有残留巨人的情况下提前放置垫材(单垫或花盆+垫)。综合垫材效果最好。
无铲指不需要因干扰巨人投掷而提前铲垫,即垫材可以垫满266cs。I3PD/减速PDD处理后的波次,以及加速波后超过1525的减速波都属于无铲。
注意:不提前铲垫 ≠ 不铲垫!为防本波巨人举锤,仍需在1292前铲垫。预存垫材同理。
有铲指垫材存在干扰巨人投掷的可能,需在【激活时机-414】铲除。效果最差,应极尽方法规避。
轮换指手里有两组垫材时,于第一组垫材被砸扁的瞬间种下第二组,并在巨人再次举锤前铲除。常用于消减1672波的炮损。预期垫材时间414cs,因巨人举锤动作不一致存在缩短的可能性。
无垫:略。
三、数据展示
3.1 炮伤表

PE炮伤表

DE炮伤表

RE炮伤表

九列炮伤表
完整数据(精确至每一cs)下载地址:https://share.weiyun.com/47xHdkrt
说明:
表内数据为不同测试参数下的单波炮伤的平均值。灰色代表不适用;绿色代表同组内最低炮伤,按实际数据比对(尽管展示时仅保留两位小数),对应理论最优垫材时机。若有多项炮伤值完全相同,取垫材时机最晚者或分离时机较早者。
波长范围为1150~2000,每25cs记录一次,以便快速查询。由于啃食8cs结算一次,实际波长通常以取【8的倍数-1+200】为佳。16s附近使用频率较高,额外加入1599、1607、1623、1639、1655、1672六种常用波长供参考。
测试环境为程序模拟(使用BrainVSZombies框架的伤筋动骨修改版),基于原版游戏底层逻辑实现。默认样本量N=10000波,每波固定5梯5丑5橄榄5投篮。不考虑投篮投掷。
查询时务必留意炮基数(炮行数内记录的炮的数量),因为单波炮伤是单波内所有炮的炮伤之和,而非单位炮伤。【全】代表陆路全炮,【半】代表半场陆路全炮(后院限定)。
垫材逻辑相关说明见§2.3,施垫时默认优先于最多梯丑路使用花盆。
九列炮伤表中“瞬伤”指炮伤中来自于小丑爆炸的部分,相关说明见§2.2.6。
再次强调,若使用AvZ需提前1cs垫材时机。
3.2 波长表
3.2.1 无垫——本行、邻行


3.2.2 有铲

3.2.3 无铲

3.2.4 I3PD分离——无垫、无铲


3.2.5 I3Pd分离——无垫、无铲


3.2.6 有冰分离

3.2.7 其它——复合、水路9列植物


四、例阵分析
有了上面的数据后,我们可以分析不同垫材逻辑的炮伤,并应用于实际阵型。
4.1 无垫炮伤
4.1.1 本行

各场景安全波长区别不大,与常用分离时机1100完美契合,真是一个美丽的巧合(
与预期相符,号称“对扶梯无伤”的1359波长已远超安全范围,实际使用时也偶有炸炮现象。
4.1.2 邻行

按危险程度分,后院下炸上 > 后院上炸下 ≈ 前院下炸上 >> 前院上炸下。在前院,受100行距天然馈赠,小丑上炸下仅存极小理论可能,实践上可忽略不计。
【例阵计算】PE.神之十六炮(I5)
视频基准:冰巫师墨舞(2018)

介绍:
被I6i玩坏前的纯洁I5版。尽管并非最终优解,与先前的ch5解相比炸率稍低,全程使用无垫13.5s级波长,故此入选。
节奏分析:
循环波长为 601|1364*|1353,第一冰波完美预判冰,第二冰波11冰。一次选卡内,1364波总计6次,1353波总计5次。
*1364是扶梯对超前置炮无伤的旧数据。
炮伤计算:
为简化计算,统一以完美预判冰1364波计,共11波。查表得到该波长下,上炸下单位炮伤为0,正面单位炮伤为0.5733,下炸上单位炮伤为0.09。
单波炮伤 = 0 + 0.5733*2 + 0.09 = 1.2366
单次选卡炮伤 = 1.2366*11 = 13.60,炮伤比4.5%,评级【良好】
4.2 有铲炮伤
“有铲”的定义见§2.3。

毫无悬念,有铲是所有垫材逻辑中效果最差的,单看数据就已是一地鸡毛。由于加速波残留巨人在减速波最晚910对9列举锤,910+200+414 = 1524起已不再有铲垫必要(连续减速波需另行计算),故通常的做法是将波长拖至1524以上,切换为无铲。
【例阵计算】PE.真·二炮(ch5)
视频基准:宫崎雪慧(2017)

介绍:
没错,它需要铲垫……这意味着雪版ch5虽然经典,却注定不怎么稳定。
节奏分析:
循环波长为 601|1500|1500,第一冰波完美预判冰,第二冰波11冰,一次选卡内各计6次。
炮伤计算:
正面炮伤查有铲炮伤详细表即可,2路、6路炮伤之和为7.76。至于邻行炸率,1500波对应铲垫时机为 1500-200-414 = 886,无现成数据,单独测定得到结果为1.23。
单波炮伤 = 7.76 + 1.23 = 8.99
单次选卡炮伤 = 8.99*12 = 107.88,炮伤比36.0%,评级【较差】
另注:
以上结果只基于固定垫材逻辑。若智能判断巨人走位,无干扰时尽可能多垫,那么炮伤或可显著降低。话虽如此,优化此阵还有更简单的办法,见后文。
【例阵计算】DE.中开十四炮(I7)
视频基准:天野家的灰阎和黑护(2018)

介绍:
节奏自设计伊始存在些许缺陷,未能意识到有铲与无铲相比炸率天差地别。其实炮伤问题可微调波长进行优化,但考虑到砸率与核武安全等问题还是远不如逐波I4i来得简明优雅。
节奏分析:
循环波长为 1550|1550|1500|601,第一冰波完美预判冰,其余11冰。一次选卡内各冰波总数分别为5、4、3次。
炮伤计算:
以正确垫材逻辑计,第一冰波应为无铲,其余为有铲。查表得知,1550冰波于896下垫效果最佳,单波炮伤为1.0136。但这是5路均有炮时的数据;此阵3路放空,无炮亦无垫,原数据应*0.8后再加3路丑对2、4路炮的损伤。由前文无垫部分可知,前院上炸下视作0,只需额外考虑下炸上。故最终单波炮伤为 1.0136*0.8 + 0.87 = 1.68088。
以类似方法,求得第二冰波炮伤为16.782,第三冰波炮伤为13.289。
单次选卡炮伤 = 1.68088*5 + 16.782*4 + 13.289*3 = 115.40,炮伤比38.5%,评级【较差】
4.3 无铲炮伤
“无铲”的定义见§2.3。

最常用的垫材逻辑。原先仅计算梯子相位,得出16s级波长下770垫效果最佳,但若加入炸率因素,则824附近才是最优施垫时机。
不妨一提,最优垫材时机的变化趋势以1607~1623为分界,在此之前波长越长对应垫材时机越晚,最晚至944,之后突变为824。
无论是PE还是DE,无铲逻辑下的白昼安全波长都超过了15s,这一点至关重要。
【例阵计算】DE.神之八炮(ch5)
视频基准:czmppppp(2016)

介绍:
整天拿着这个阵黑,有什么好黑的呢?减速波波长区区14.37s,上炸下炮伤是0,中三路也是0,下炸上和安全波长14.33s差不了多少。如此完美的一个阵,何来掉节操一说?所以啊,你们还是要学习一个。
节奏分析:
循环波长为 601|1437|1437,均为完美预判冰。一次选卡对应冰波数12。
炮伤计算:
查无铲数据可知,1437波长于824施垫,炮伤为0。上炸下同样为0。下炸上为0.12。
单波炮伤 = 0 + 0 + 0.12 = 0.12
单次选卡炮伤 = 0.12*12 = 1.44,炮伤比0.5%,评级【安全】
【例阵计算】PE.浮萍八炮(ch5)
视频基准:Tiroro123(2020)

介绍:
和DE神八如出一辙,行距缩短但只需考虑半场,亦无邻行烦恼。
节奏分析:
同前。
炮伤计算:
没什么可算的,大写的一个0,评级【严谨】(担心小丑炸炮不如担心AvZ崩溃
4.4 I3PD炮伤
非天台场地,这通常意味着P于410生效,D于630生效,其中D可以分离快速梯丑,效果不容小觑。天台场地无矿工,且小鬼拦截允差极大,PD时机极为自由,D最晚可于800左右生效。
4.4.1 I3PD无垫

PE场地行距小,需要照顾的僵尸行数最少,故安全波长最长。DE若只考虑1、2、4、5路,则与PE相似,但因4路D对3路判定极小,算上3路炮后会拖不少后腿。RE方面情况较复杂,笼统来说的话3列、5列炮分离效果最佳。
4.4.2 I3PD无铲

I3PD无愧为屠龙之技,续了相当多的安全波长。前院的3路炮照旧拖后腿;另外,若3路放空无炮也无垫(中开构型),则安全波长会因3丑炸2炮显著缩水。
【例阵计算】PE.真·二炮(ch5u)
视频基准:Crescendo(2021)

介绍:
秉承“尽可能避免有铲”的思想,可以导出真2的ch5u另解。将原第一冰波缩短为无垫短波,之后接I3PD无铲长波,可以显著降低炮伤。
节奏分析:
循环波长为 601|1294|1580,取该波长能最小化炮损。第一冰波为完美预判冰,第二冰波10冰附I3PD,一次选卡各6次(与视频略有出入)。
炮伤计算:
无垫短波中,小丑正面炮伤为 0.75/2 = 0.375;上炸下炮伤为0。I3PD长波中,正面炮伤为0.0586;上炸下只要正确用垫炮伤为0。
单次选卡炮伤 = (0.375 + 0.0586)*6 = 2.6016,炮伤比0.9%,评级【安全】
4.5 I3Pd炮伤
如果说I3PD是屠龙之技,那么在特定场合下,I3Pd可能是屠龙之技的终极形态。
……好吧请忽略上面这句中二感爆满的介绍。
乍一看,I3PD里是D负责分离,改为d即是后场炸,前场僵尸都碰不到了,效果怎能和I3PD比?然而,后场炸意味着移速最快且不受冰冻的矿工可以留给d解决,由此得以推延P的生效时机。
根据相关情报,10冰下巨人最早可伤时机为582,因此于581炸实9列,可确保不伤巨人的同时黑掉所有已进入伤害域的快速梯丑。下文中,“I3Pd”默认指P于581生效9列,之后接尾炸同收矿鬼的复合操作。
I3Pd无法忽略的一大好处是它能延缓巨人砸垫时机。一般而言,什么时候种垫材,巨人就什么时候举锤,这意味着除非上波本路无红,否则垫材的最大存活区间必然不大于266cs。固然我们可以祈祷某路不出红,但更稳定且合理的办法是让红眼去做点别的事——比如投掷小鬼。
假定P于581生效,则红眼要到 581+284 = 865 才结束动作,在此之前纯属白嫖期,无论放不放垫都不会被砸。固然梯丑会啃,但鉴于我们总是用具有特异功能的花盆垫最多梯丑路,其它路的垫材压力并不会很大。
有关I3Pd的其它属性,例如复用难度、前院跳跳压制、巨人压制、意外刷新等问题,本文作为炮伤概论无意探讨,还请自行领会。另外,天台场地无矿工,除特殊原因无使用I3Pd的必要(天台场地的尾炸操作大抵都如此吧)。
4.5.1 I3Pd无垫

在PE,I3Pd无论是炮伤还是安全波长都被I3PD完爆。DE情况相反,因为4路炮对3路僵尸的判定实在太差,I3PD基本照顾不到3路,不如I3Pd(白昼安全波长增加12cs、夜间安全波长增加4cs)。
4.5.2 I3Pd无铲

一句话总结就是PE拉垮,DE乱杀。在DE,I3Pd比I3PD的白昼安全波长整整多出48cs,夜间安全波长也多出41cs,霸气侧漏,不服不行。除有冰分离外,I3Pd应当是前院场地的最强分离操作了。
【例阵计算】DE.炮环十四炮(旧I4i)

介绍:
折翼阵中的经典。从最初求索,到“DE14炮含核坑守全场基本成立”,再到结论推翻,改回16炮,最后再降为14炮,是一部浓缩了两代人反复横跳的科技血泪史。
节奏分析:
1622连续冰波,均为10冰,总冰波数17。原视频出于谜之原因使用了早生效I3Pd(见评论区),经简单优化可改为I3PD。
炮伤计算:
不动脑子都知道,早生效的I3Pd还硬撑到16s+波长,小丑必定会炸成烟花。查无铲表可知单波炮伤 = 8.25;w2、w11有PSD清场,可按预存双垫计算(先预存一垫,于合适时机铲除并替换一遍),单波炮伤 = 0.46。
单次选卡炮伤 = 0.46*2 + 8.25*15 = 124.67,炮伤比41.6%,评级【极差】
喜提本文首个红灯。事实上,这样高的炮伤不开修改器已经难以录出完整2f了,原视频里根本就没出小丑~
改为I3PD后的炮伤计算:
胡在评论区里一针见血地指出有必要改为I3PD,压制梯丑。由于巨人压制问题,这里不能直接改为I3Pd(按944施垫计算,连续冰波使用I3Pd要求波长≤1570,否则有砸率)。查表得到I3PD单波炮伤为1.51;w2、w11仍保持原数据不变。
单次选卡炮伤 = 0.46*2 + 1.51*15 = 23.57,炮伤比7.9%,评级【中等】
进一步优化版本:
【例阵计算】DE.围城十四炮(逐波I4i)
视频基准:Crescendo(2021)

介绍:
参见视频评论区的文豪们。
节奏分析:
复杂的逐波I4i,波长从1486到1550都有,垫材逻辑也是满天飞。经反复播放(以及查看自己写的脚本)后,整理得到如下:
无铲1486波 —— 2次
无铲1505波 —— 2次
上两行I3PD 1486波 —— 2次
I3PD 1486波 —— 2次
I3Pd 1486波 —— 1次
I3Pd 1508波 —— 3次(含w9、w19收尾,与视频略有出入)
I3Pd 1550波 —— 4次
为了保护读者的眼睛就不列出以上波长具体对应哪些波次了。
计算起来看似很头疼?其实大部分炮伤都是0,直接剔除即可。
无铲1486波 —— 0.034*2 = 0.068
无铲1505波 —— 0.1*2 = 0.2
上两行I3PD 1486波 —— (0 + 0.0324)*2 = 0.0648
I3Pd 1550波 —— 0.06*4 = 0.24
其余均为0。
单次选卡炮伤 = 0.5728,炮伤比0.2%,评级【安全】
4.6 有冰分离炮伤
特指早冰后于1100左右生效分离炮处理梯丑橄的操作。
4.6.1 有冰分离无垫

Q:有冰分离应如何确定分离时机?
A:首先,应确保能完全分离扶梯,因其移动速度极快,漏任意一只都会产生严重炮伤。在行距85场地以及前院分离两行时,这并非难事;但前院分离三行略显蛋疼,完美预判冰下最早完全分离时机为1171,比扶梯最早啃超前置炮1152还晚。这种情况只能尽可能推后分离时机(对应表中1150,实践中拖延至1159也可接受),尽人事听天命。
其他场合下,下一步应参照无垫炮伤表,选取合适时机。目标波长越长,则分离时机越晚效果越好,但晚分离的代价是短波长下炮伤较高。引用无垫表如下:

发现1275波长总是对应0炮伤。因此,有冰分离时机最小合理取值至少为1075,再提前也无法降低炮伤(除了有9列植物或3路分离,1、5路垫之类的情况,后文详解)。
同时,白昼安全波长均在1300左右浮动,故1100分离也是合理的选择。
以上为数据表中1075、1100、1150三个时机的由来。
安全波长方面——各场地白昼安全波长均在16s左右,夜间安全波长视场地而定,前院停留在16s级,后院与天台可拖至约19s。
【例阵计算】RE.椭盘十四炮(ch4)
视频基准:lmintlcx(2020)

介绍:
I3PD首发阵容。有趣的是,尽管此阵被当时的领导人钦定为首个ICE3必要载体,以现在眼光来看I3PD解与减速PDD解相比优势并不大。
节奏分析:
ch4,即1738连续冰波,均为10冰,共17波次。为防2路小丑炸3路炮,默认每波均于2-9垫花盆。
炮伤计算:
下三路使用7列炮于1100分离效果最佳,查表可得1738波长炮伤为0.18。因为这里还附带一个I3PD,于1100前理应0炮伤,可再酌情扣除0.09,最终单破炮伤估算值为0.09。2路小丑垫花盆即可消除威胁——这也是I3PD与减速PDD区别不大的原因,毕竟这个花盆总是要垫。
单次选卡炮伤 = 0.18*2 + 0.09*15 = 1.71,炮伤比0.6%,评级【安全】
4.7 复合炮伤
所谓“复合”,指的是多种简单情况同时出现的情形,具体情况具体分析。
4.7.1 前院相关
五行场地的特点决定了【分离某三行、垫剩余两行】的操作十分常见,也给炮伤计算带来了一定挑战。现行实践中,常见的复合情形有【分离上三路、垫下两路】与【分离中三路、垫边路】两种。(分离下三路呢?少年你核坑不要了么

得益于炮基数减少,与五路全垫相比安全波长增加了约40cs。
【例阵计算】NE.二十炮(旧C7u)
视频基准:失控的指令(2018)

介绍:
这个还用介绍么……
节奏分析:
冰波长度均为1620(完美预判冰),共计8波次。分离时机取1100较优。原视频的砸率与收尾等问题另行讨论。
炮伤计算:
查表可知,上三路炮伤为0.42;下两路炮伤为2.94(944垫)。
单波炮伤 = 0.42 + 2.94 = 3.36
单次选卡炮伤 = 3.36*8 = 26.88,炮伤比9.0%,评级【中等】
4.7.2 天台相关
【3+2】的处理模式在天台也很常见,但受花盆CD限制,仅存在【无铲+预存】或【双预存】两种。为简化问题,此处只讨论预存双垫(花盆+普通植物)。
由于数据较多较杂,略去波长表,请按需查询炮伤表。
【例阵计算】ME.二十炮(C7u-C8u)
视频基准:Crescendo(2021)

介绍:
最初视频标题写的是“定态无伤”,但后来想想还是略具误导性给改了。硬要说的话,它属于“无炮损”(可能还有“低炸率”),不应滥称“无伤”。我也不说某些阵对炸率和意外刷新撒手不管还要自称“无伤”了~
节奏分析:
上下f节奏相同,各含三个冰波(w19炮伤为0可以忽略),分别为边路双预存、上两路双预存、1路预存+5路无铲,波长均为1540。
第一冰波炮伤:0.03 + 0 + 0 = 0.03
第二冰波炮伤:0.03 + 0 = 0.03
第三冰波炮伤:0.06 + 0 + 0 = 0.06
单次选卡炮损 = (0.03 + 0.03 + 0.06)*2 = 0.24,炮伤比0.1%,评级【安全】
五、拾遗补充
5.1 九列植物炮伤
5.1.1 九列植物无垫

放羊加速波早爆丑收益小且风险过大,应以硬波长处理。至于减速波,记住12.5s+冰波(如C8u)守不住水路9列就基本足够了~
【例阵计算】FE.二十四炮(C8u)
视频基准:冰巫师墨舞(2019)

介绍:
FE24的典型反面教材。虽然不知道胡是抱着什么心态打的这个视频,但C8u本身不具备守水路9列的能力,放到如今即使作为手控解也难以接受。
节奏分析:
上下f节奏相同,各包含四个冰波,波长分别为1236、1364、1328、1236。第四冰波为收尾,下半场一炮提前生效,上半场于1036激活。
炮伤计算:
以下计算包含水路9列植物受到的瞬伤,原因略。
1236波——炮伤0,水路9列瞬伤2.07,0 + 1.86 = 1.86
1364波——炮伤2.2932,水路9列瞬伤13.02,2.2932 + 13.02 = 15.3132
1328波——炮伤0.72,水路9列瞬伤8.94,0.72 + 8.94 = 9.66
收尾1236波——取普通1236波一半炮伤,1.86/2 = 0.93
单次选卡炮伤 = (1.86 + 15.3132 + 9.66 + 0.93)*2 = 27.76,炮伤比9.3%,评级【中等】
5.1.2 九列植物分离
分离方式大致有三种:
热过渡
炸虚分离
炸实分离
热过渡指处理冰车、矿工等不受冻僵尸的单独运算量;炸虚、炸实分离指在【能够伤害到巨人时】,选择可能伤得到还是伤不到巨人的落点。
暂且不考虑热过渡,守9列炮的常用范式有:①一次炸虚;②两次炸虚;③一次炸实。炸实仅适用于后院场地(炸水路守岸路炮)。要想无伤,必须使用炸实,且波长不得拖过11.5s,否则旁路小丑会炸。若使用更长的波长(13s~15s),那么无论选用哪种分离方式,炮伤都不会低,从小到大排序的话:一次炸实 < 两次炸虚 < 一次炸虚。
这方面数据比较繁杂,波长表略去不表,详情可查阅前面给出的炮伤表。简单来说14s+波长守9列炮就当是个玩了~ 稳定性是不存在的。即便是后院4路炸实炮接5路分离炮拦截这样极其罕见的“最优情况”,其炮伤也远超一般标准。
5.2 轮换
可能是最不稳定的垫材方式之一。脸白垫满414cs藐视群雄,脸黑266cs原地踏步。引入巨人的动态变量的话模型将过于复杂,难以建立,但由于玩家可以读取巨人行动数据并智能穿插垫材时机,总体而言垫材效果应不至于太差。
炮伤表里的轮换是以垫满414cs计算的,因此炮伤极低,没有单列波长表的必要,知道1672波长炮伤可以被压得极低就行了(PE 0.30,DE 0.14,炮基数均为2)。
六、后记
一入炮伤深似海,从此假阵是路人。
炮伤计算是一面照妖镜。在精确计算下,原本的超多炮体系无法回答的小丑问题,终于首次有了掷地有声的答案。浩如烟海的薛定谔态阵型们,也第一次得到了数据意义上的证明或证伪。以目前技术水准而言,在炮伤计算方面,只能说是刚刚起步,许多问题还需未来的人努力回答。但在今天,我终于可以长舒一口气,自信地说道“超多炮不应也不会无视小丑”。
本文自最初动笔,到现今写成,其跨度竟有近四个月之久。

图里是最早测定的一组数据。当时,连【炮伤】的概念都尚未形成,拟定的标题还是《炸率概述》。
三天后我写下了第一份大纲,有趣的是许多内容在当时就已敲定了,保留至今。

最初还用的是继承自小e开发的原始BrainVSZombies框架。之后不知修复了多少个bug,改了多少逻辑,重跑了多少遍数据,才勉勉强强地让它能以较高效率运行。翻github记录时,还找到了这种趣事:

当时修复这个bug时我的内心一定是崩溃的吧,233。
如果将时钟拨回四个月之前,当时的我想必觉得和前作《砸率通论》一样,《炸率概论》在短短几周内就能写毕。可惜事与愿违,这两者的前置知识体系成熟度差距过大,探讨炸率,就像是在没有人行走过的荒野上孑然探路。引用ND的一句话,就是:

说到PVZ吧,不得不提另一个略带伤感的事实。无论是好是坏,至少在炮阵领域,第七代技术党已经落幕了。最闪耀的几位天赋型玩家们,早在半年甚至一年前退隐二线——事到如今其实笔者也一样了。任何一代技术党,都以两年为最大年限,大约也是冥冥之中注定的吧。但至少我可以自豪地说,第七代无论从讨论热度,还是留下来的知识遗产上,都绝不输之前的任何一代。也许,这就是最好的“我曾来过这里”的标识。
对于PVZ技术发展而言,2022年是充满变数的一年。前几天还在和雪雪讨论,今年到底会是2016,还是重蹈2014的覆辙。不过无论如何,都和笔者已经没有太大关系了,未来就交给若隐若现若即若离的第八代技术党们了。

Q:还有后续吗?
A:标题里说的【炮三篇】,指的是《砸率通论》、《炮伤概论》、《动态计算》三座炮阵领域的大厦。如你所见目前并没有任何写第三部的能力或打算。
Q:模拟程序下载地址?
A:https://share.weiyun.com/f5V8oTrt
Q:今后计划?
A:可能会写点回顾历史的文艺小散文,打阵属于小概率随机事件。
Q:想问问题?
A:推荐加群(见个人简介),不推荐b站私信。不推荐私聊问非技术相关问题(游戏下载、软件安装等),请让热心群友回答。