Seml 坐标分布测定真力大无穷也,以本帖存放笔者使用的方法以及测定的数据。
一、撑杆
撑杆数据已经在《白昼单冰守全场二则——DE. 春离与 PE. 海浪》和《FE. 纪念柯林版 FE20 二十炮》里记载过( https://forum.pvz1.com/postid/9195/ ; https://forum.pvz1.com/postid/9196/ ),这里为了可读性复制粘贴过来。
a) 17 s 级冰波撑杆炮伤
Leon 曾算得撑杆跳 9 普啃 8 炮无伤的极限波长为 1671(cv48158754)。这里给出由 Seml 坐标分布测试算得的长于这一波长的撑杆炮伤期望值,场景为每条路都长期存在 9 普 8 炮,每波 5 杆。
从 1472 起,每 8 cs 都有新的期望炮伤增加,而每一个 8k cs 新增的期望炮伤等于 (8k - 1) cs 时刻撑杆到达 590 坐标的累积概率乘 4(一次啃食的伤害)乘 5(每波撑杆的数量)。由期望的线性性,每一个 8k cs 的累积期望炮伤就是从 1472 到 8k cs 每个 8m cs 的新增期望炮伤之和。测试使用的 Seml 脚本如下。
scene:PE types:pole repeat:200000 targetPos:590 protect:19' 29' 59' 69' w 0 1537
测得的到达率-炮伤数据如下。
对应成常用波长则是 1672 波撑杆炮伤 0.00002,1685 波撑杆炮伤 0.001,1711 波撑杆炮伤 0.11,1738 波撑杆炮伤 1.52。这也印证了这种长度的冰波下炮伤来源主要是梯丑而非撑杆。
b) 过炮撑杆炮伤
空炸收过炮撑杆的操作在柯林版 FE20 被广泛使用,这里测定其炮伤。方法同我在《DE. 春离与 PE. 海浪》里给出的,略,只给出 Seml 脚本与最终数据。
scene:PE types:pole repeat:200000 targetPos:430 protect:18 28 58 68 w 1202
最早的 225 P 332 D 的全场炮伤是 13.5,原阵用了四次,算得 2F 前置炮炮伤为 13.5*4=54。
此外,还有一种常见的操作为热过渡收过炮撑杆,在铃仙版 FE18 等阵中被用到。这里也给出其炮伤。
scene:PE types:pole repeat:200000 targetPos:430 protect:18 28 58 68 w 659 1202
炮等效 58 冰时,有最快巨人时热过渡最早时机为 433,这种情况下单波全场前置炮炮伤为 1.84。
二、海豚
完美冰下,海豚在有水路八列植物时在 1184 之后的坐标分布分为两层:一层为 499 或 500,代表已经跳过炮;另一层为 593 以上,代表还在跳炮中或者未跳炮。这里给出一个 1 冰 1207 cs 时的数据作为示例。
scene:PE types:dolp repeat:200000 protect:38 48 w 0 1207
《二些无所谓的琐事》告诉我们,激活炮炸实的话是收不了已经跳过炮的海豚的。这一点有关的阵型为集萃 #30 非拦截守全 9 炮:原阵用了 11 个 1407 冰波,也就是有 55 只有潜在威胁的海豚,所有激活炮都能够炸实的概率只有 (1-0.007697)^55 = 0.654,也就是说有 34.6% 的可能 2F 至少有一个 1407 波需要半边炸虚激活,事实上原阵的脚本就是波波双边炸虚激活的。此外,用《一、撑杆》同样的方法测得每波水路两门炮的总炮伤为 0.084,11 波的总水路炮伤即为 0.084*11 = 0.92,符合原阵简介下“1407冰波海豚有极小炮损”的描述。
三、跳跳
与 Seml 跳跳测定不同,Seml 坐标分布的跳跳是会与垫材、炮炸等交互的,因此适用很多更复杂的情况。一个例子是卡相位两炮收前院上行跳跳,以渐强的无冰瓜十六炮( https://tieba.baidu.com/p/7387341155 )为例:原阵为差 110 的两炮相位收跳跳,Seml 脚本如下。
scene:DE types:pogo repeat:20000 w 601 PP 249 24 9 P 359 2 9
测得跳跳存活率为 0.00%,也就是说这一操作确实能够全收跳跳。如果把延迟缩短到 107,则不再能够全收跳跳,Seml 脚本如下。
scene:DE types:pogo repeat:20000 w 601 PP 252 24 9 P 359 2 9
测得跳跳存活率为 0.22%,无法全收跳跳。值得注意的是,跳跳的存活率是量子化的,因为游戏中只有 3200 种跳跳僵尸;因此,最小的正跳跳存活率为 1/3200 = 0.03125%,而测出来 0.00% 的存活率可以认为即是严谨的不会漏跳跳。
除去炮炸以外,还有一种可以测定的操作为垫材垫跳跳。例如纯二十炮( https://www.bilibili.com/video/BV1n54y1V7Tq ),长波的操作见下。
scene:PE types:pogo repeat:20000 w 752 C 170~250 1 9 PP 552 25 8.375
测得跳跳存活率为 0.00%,因此能够严谨全收跳跳。
四、分离
有一种需求是“分离一部分 x < x_0 的僵尸后查看剩余僵尸的最快坐标”。由于 Seml 坐标分布可以与炮炸交互,这也可以测定这种需求。例如,要想知道 I3Pd 后无垫扶梯不啃 8 炮的极限波长,可以写 Seml 脚本如下。
scene:PE types:ladd repeat:200000 targetPos:629 w 10 1800 PP 579 25 9
测得时刻 min 为 1244,对应 1248 啃炮,极限波长为 1447。不过,Seml 在这种场景的随机误差较大,例如也测出过时刻 min 为 1248 的数据,对应的极限波长长了 8 cs;如果多次测定得出的时刻 min 数据不吻合,宜认为此方法并不绝对严谨。此外,也可以测定小丑的数据,Seml 脚本如下。
scene:PE types:jack repeat:200000 targetPos:689 w 10 1800 PP 579 25 9
测得时刻 min 为 992,两次测定的结果吻合,可以认为数据较为可靠。这对应 I3Pd 无垫小丑不炸 8 炮的极限波长为 1301。
五、总结
Seml 坐标分布测定力大无穷,其结合了 Seml 模拟真实游戏的优势和惊人的效率,可以在有实战意义的分段行进、分离、有垫坐标测定等较复杂场景中使用(相对于分布计算器等较局限在单段坐标测定的坐标测定工具),同时能够快速给出大样本的数据(相对于 Overwatch 等较慢的工具),有很大的实战意义。例如,本文《一、撑杆》中的数据靠朴素数学假设和计算会给出偏差巨大的结果,而 Overwatch 甚至难以测出任何撑杆炮伤,但 Seml 坐标分布测定能够简便快捷地得到高质量的数据,足以证明其很大的实用价值。
完。






