Seml 坐标分布测定的花式玩法
 
Notifications
Clear all

Seml 坐标分布测定的花式玩法


水花七炮
Posts: 160
Topic starter
(@shui-hua-qi-pao)
复合运算
Joined: 4 years ago

Seml 坐标分布测定真力大无穷也,以本帖存放笔者使用的方法以及测定的数据。

Topic Tags
11 Replies
水花七炮
Posts: 160
Topic starter
(@shui-hua-qi-pao)
复合运算
Joined: 4 years ago

一、撑杆

撑杆数据已经在《白昼单冰守全场二则——DE. 春离与 PE. 海浪》和《FE. 纪念柯林版 FE20 二十炮》里记载过( https://forum.pvz1.com/postid/9195/https://forum.pvz1.com/postid/9196/ ),这里为了可读性复制粘贴过来。

Reply
水花七炮
Posts: 160
Topic starter
(@shui-hua-qi-pao)
复合运算
Joined: 4 years ago

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

测得的到达率-炮伤数据如下。

image

对应成常用波长则是 1672 波撑杆炮伤 0.00002,1685 波撑杆炮伤 0.001,1711 波撑杆炮伤 0.11,1738 波撑杆炮伤 1.52。这也印证了这种长度的冰波下炮伤来源主要是梯丑而非撑杆。

Reply
1 Reply
水花七炮
(@shui-hua-qi-pao)
Joined: 4 years ago

复合运算
Posts: 160

以上数据为 1 冰。下面补充 11 冰、12 冰、96 冰的数据。测试脚本同上,最后一行分别改为了 wave 10 1537、wave 11 1537、wave 95 1537。

image
image
image
Reply
水花七炮
Posts: 160
Topic starter
(@shui-hua-qi-pao)
复合运算
Joined: 4 years ago

b) 过炮撑杆炮伤

空炸收过炮撑杆的操作在柯林版 FE20 被广泛使用,这里测定其炮伤。方法同我在《DE. 春离与 PE. 海浪》里给出的,略,只给出 Seml 脚本与最终数据。

scene:PE
types:pole
repeat:200000
targetPos:430
protect:18 28 58 68

w 1202
image

最早的 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
image

炮等效 58 冰时,有最快巨人时热过渡最早时机为 433,这种情况下单波全场前置炮炮伤为 1.84。

Reply
水花七炮
Posts: 160
Topic starter
(@shui-hua-qi-pao)
复合运算
Joined: 4 years ago

二、海豚

完美冰下,海豚在有水路八列植物时在 1184 之后的坐标分布分为两层:一层为 499 或 500,代表已经跳过炮;另一层为 593 以上,代表还在跳炮中或者未跳炮。这里给出一个 1 冰 1207 cs 时的数据作为示例。

scene:PE
types:dolp
repeat:200000
protect:38 48

w 0 1207
image

《二些无所谓的琐事》告诉我们,激活炮炸实的话是收不了已经跳过炮的海豚的。这一点有关的阵型为集萃 #30 非拦截守全 9 炮:原阵用了 11 个 1407 冰波,也就是有 55 只有潜在威胁的海豚,所有激活炮都能够炸实的概率只有 (1-0.007697)^55 = 0.654,也就是说有 34.6% 的可能 2F 至少有一个 1407 波需要半边炸虚激活,事实上原阵的脚本就是波波双边炸虚激活的。此外,用《一、撑杆》同样的方法测得每波水路两门炮的总炮伤为 0.084,11 波的总水路炮伤即为 0.084*11 = 0.92,符合原阵简介下“1407冰波海豚有极小炮损”的描述。

Reply
水花七炮
Posts: 160
Topic starter
(@shui-hua-qi-pao)
复合运算
Joined: 4 years ago

三、跳跳

与 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%,因此能够严谨全收跳跳。

Reply
水花七炮
Posts: 160
Topic starter
(@shui-hua-qi-pao)
复合运算
Joined: 4 years ago

四、分离

有一种需求是“分离一部分 x < x_0 的僵尸后查看剩余僵尸的最快坐标”。由于 Seml 坐标分布可以与炮炸交互,这也可以测定这种需求。例如,要想知道 I3Pd 后无垫扶梯不啃 8 炮的极限波长,可以写 Seml 脚本如下。

scene:PE
types:ladd
repeat:200000
targetPos:630

w 10 1800
PP 579 25 9

测得时刻 min 为 1232,对应 1240 啃炮,极限波长为 1439。值得注意的是,在样本量不足时 Seml 在这种场景的随机误差较大,例如在 repeat:20000 下测出过时刻 min 为 1234、1236 等的数据;如果多次测定得出的时刻 min 数据不吻合,宜增大样本量直到多次测得的数据吻合。此外,也可以测定小丑的数据,Seml 脚本如下。

scene:PE
types:jack
repeat:200000
targetPos:690

w 10 1800
PP 579 25 9

测得时刻 min 为 987,两次测定的结果吻合,可以认为数据较为可靠。这对应 I3Pd 无垫小丑不炸 8 炮的极限波长为 1297。

一个真实的应用是测定水路鸭子啃 9 的时机——这的语境通常与分离密切相关。例如,在连续 601 波,我们想要知道连续 PP 能否无伤收鸭子。对于连续 PP,为了潜水无伤每波最晚 299 激活,而由最新结论知鸭子的整数坐标到达 679 的下一帧起会进行一个持续 40 cs 的下水过程,完毕后才具有啃食 9 列植物的能力,因此我们写脚本如下。

scene:PE
types:cone
repeat:200000
targetPos:679

w 900
PP 299 25 9

测得时刻 min 为 763,因此鸭子最早啃食为 763+1+40 = 804 即下波 203,连续 PP 不能全收。笔者暂且不清楚鸭子炮伤衡量的具体细节(比如一波普僵数量按 5 还是普+障+桶的 15 计,以及普僵出现在水路的概率是不是 1/3),这里引用 leon 在群里交流的设定:每波 285 PP,一波水路平均 5*1/3 个普僵,结果如下。

scene:PE
types:cone
repeat:200000
targetPos:679

w 900
PP 285 25 9
image
Reply
2 Replies
水花七炮
(@shui-hua-qi-pao)
Joined: 4 years ago

复合运算
Posts: 160

打假本层楼。由于通常真正的极端值是无法测定的,Seml 坐标测定的时刻 min 不能作为严谨的硬极限波长使用,而若讨论软波长则这里的时刻 min 也并没有意义,有意义的反而是各个时刻的到达率,所以这种数据仅能作为参考。作为参考,一次 repeat:200000 的小丑完美冰无垫到达炸 8 炮的位置的时刻 min 为 945,比二些无所谓的琐事中给出的 929 足足晚了十几 cs。

5 月 15 日注:打假此打假。lz 之前搞错了小丑炸 8 炮的坐标,重新测定后发现 Seml 能够正确测得时刻 min 为 928 的数据,与二些无所谓的琐事的结论相符。事实上,以本楼中所说的“多次测定对照是否相符”的实验策略,可以获得当今条件下较可信的数据。笔者测试了扶梯 1 冰无垫啃 8 炮的数据和小丑 1 冰无垫到达炸 8 炮的坐标的数据,均与分布计算器相符。

6 月 6 日注:笔者也搞错了梯子啃 8 炮的坐标。大黄表里某某啃某的时机是到达合适坐标的时机加 1 cs,上面和这里都被这个坑了。

Reply
水花七炮
(@shui-hua-qi-pao)
Joined: 4 years ago

复合运算
Posts: 160

补充一下对比多次测定的结果是否吻合是什么意思。例如,测定完美冰无垫梯子啃 8 炮的时刻 min 数据,一个脚本可以如下。

scene:DE
types:ladd
repeat:2000
targetPos:629

w 0 1200

测定三次得出的时刻 min 数据为 1154、1153、1155,三次的结果并不完全相等,证明三个数据均不可靠。加大样本量至 repeat:200000 后,三次得出的时刻 min 数据为 1152、1152、1152,三次的结果完全相等,认为数据较为可靠,可以采用。也就是说,多次测定得出不同结果的数据应该舍弃,而多次测试得出相同结果的数据可以采纳。

Reply
水花七炮
Posts: 160
Topic starter
(@shui-hua-qi-pao)
复合运算
Joined: 4 years ago

五、总结

Seml 坐标分布测定力大无穷,其结合了 Seml 模拟真实游戏的优势和惊人的效率,可以在有实战意义的分段行进、分离、有垫坐标测定等较复杂场景中使用(相对于分布计算器等较局限在单段坐标测定的坐标测定工具),同时能够快速给出大样本的数据(相对于 Overwatch 等较慢的工具),有很大的实战意义。例如,本文《一、撑杆》中的数据靠朴素数学假设和计算会给出偏差巨大的结果,而 Overwatch 甚至难以测出任何撑杆炮伤,但 Seml 坐标分布测定能够简便快捷地得到高质量的数据,足以证明其很大的实用价值。

完。

Reply
xiao_He
Posts: 253
(@xiao_he)
ICE3封魂
Joined: 4 years ago

膜。

有没有测空炸成功率、尾炸伤、矿工伤之类的方法呢。((((

Reply
Scroll to Top
en_USEnglish
Powered by TranslatePress »