精确时间轴相关初步研究
BreezeRz
编辑于 2025年10月06日 17:42

实战中,经常遇到Buff/Debuff不能完全覆盖的情况,往往的解决办法或者是进行粗略估算(比如取一半覆盖率),要么是对照录像手动计数,前者准确率不够,在对精度要求高的场合不能满足需求;而后者准确率略高,但在子弹数量和伤害数字繁多的情况下同样难以手动计数;此外,由于AI更新频率的限制,只靠肉眼确定Buff是否触发等也受到限制。因此,有必要从运行原理上探究各种Buff/Debuff和主炮开火的时间轴逻辑。

1. 常见Buff

1.1 基洛夫/基洛夫META

基洛夫和基洛夫META都是表面15s轴,实则20s爆发轴的Debuff选手。两者的技能逻辑均为施加值为0.15的injureRatio于敌方,只不过基洛夫META多一个减速。下面分别说明两者如何触发该Debuff,以及对应的精确理论覆盖时间段。

对于基洛夫,每15s会发射一轮特殊弹幕,其中第一轮的弹幕会触发特殊点燃,持续8s。在点燃持续期间,能够持续触发该易伤效果。具体来讲,该特殊弹幕共5hit,每hit都能100%概率触发/重置点燃时长,因此,该易伤的最早触发时刻取决于命中的第1hit,最晚触发时刻取决于命中的最后1hit。

现在来考虑弹幕的触发、运动到击中的全流程。该弹幕于15s时触发(对应计时器4:45跳4:44的一瞬间),此弹幕为airDrop类型,只需考虑y轴上的运动,相关参数为:gravity=-0.15, offsetY=60.

游戏中的加速度和速度都以帧为单位计算,逻辑上总为30帧/s。因此,可以计算出对应的下落时间为:

这里y0=1.2表示实际指定引爆点的Y轴坐标。

再考虑弹幕样式。弹幕的5hit,delay依次为0.2s、0.4s、0.6s、0.8s和1s。

还需要考虑barrage中的first_delay=0.3。

因此,最早触发时间和最晚触发时间满足

考虑到游戏的AI FPS为10帧/s,即每0.1s更新一次各种状态,实际的易伤覆盖区间为[16.5s,25.3s],换算到计时器上即为4:43.500~4:34.700。该区间即为基洛夫易伤的理论精确覆盖时间范围。

基洛夫META可以类似计算,因为其弹幕逻辑与基洛夫类似,同样为airDrop类型,参数为gravity=-0.05, offsetY=20. 对应下落时间

这里帧数向上取整是因为碧蓝航线大概率没有设计子帧这类概念(从加速度和速度的处理方式也能看出,没有"半帧“这种概念),cacl_interval大概率就是最小单位。因此,不满1帧的统一到下1帧处理,从而需要做ceil处理。

弹幕样式方面,基洛夫META的弹幕为6hit,first_delay=0.3,delay=0.1,这意味着

实际易伤覆盖区间为[16.3s, 24.8s],换算到计时器上为4:43.700~4:35.200。

可以看出二者的覆盖区间基本类似,基洛夫长出0.5s,对应的影响较大。例如,在阿黎双核阵容中,可能会影响到多颗子弹的覆盖,因而在打桩场合,优先使用基洛夫,除非有其他特殊需求。

经录像实测研究,基本结论确定与理论一致。

1.2 亚利桑那META

亚利桑那META与基洛夫类似,具有延迟触发的特性。具体而言,当触发2技能的强化弹幕时,下落的第2颗超重弹会附加圆形易伤区域,附加值为0.2的injureRatio。

首先可以考虑抛射使用的时间。这两颗超重弹是同时触发的,对应参数为:gravity=-0.35, velocity=12.

由于Bomb类子弹在X-Z平面做匀速直线运动,因而Y轴上的运动影响较小,可以忽略。其运动时间则简单计算为

讨论:

考虑到AI帧,实际上三种情况在大多数情况下可认为效果一致,均为1.3/1.4s后触发。区别就在于差出来的2帧是否能赶上下一个AI帧导致有覆盖区间有0.1s的区别。因而如果要排的话,覆盖时间从早到晚排名为:旗舰=下位>上位(这点或许能利用在后排炮核开炮上)。

再考虑弹幕样式。超重弹有参数first_delay=1,因而亚利桑那META的2技能在触发

约1+1.3=2.3s后,易伤效果开始生效,然后再持续3s结束。

如果更深入,则需要结合具体场景,讨论何时触发能在对应时间范围内覆盖更多的子弹。

2. 跨射炮弹

跨射炮弹与亚利桑那META的弹幕讨论形式类似,均为Bomb类武器,但在其基础上需要加入散布和子弹时间的影响。

2.1 跨射时间计算

2.2 子弹颗数

引入子弹颗数变量,分别记第一颗、第二颗和第三颗命中的时间为T1,T2,T3。

此时需要额外注意的是,考虑barrage的delay影响,每颗子弹生成的间隔为0.1s(=3帧),同样需要考虑进去。

由于计算公式相对麻烦,直接模拟更快,结论如下:

- E(T1)≈39.97帧=40帧=1.33s

- E(T2)≈43.28帧=44帧=1.47s

- E(T3)≈46.62帧=47帧=1.57s

可以看出,按照命中次序,期望上每颗相差约3/4帧命中,第一颗和最后一颗可相差约7帧(0.233s)命中。

比较反直觉的是,子弹之间的delay并没有贡献太多时间差,没有delay每颗子弹的时间差也约为3帧左右。这可能是由于计入delay的某些情况下发生了到达次序改变。

2.3 站位影响

上面一直假设位于旗舰位(-105,58),下面可以用同样逻辑计算上位和下位的情况:

对于上位:

发射点为(-105,78),对应结果:

- E(T1)≈41.51帧=42帧=1.4s

- E(T2)≈44.82帧=45帧=1.5s

- E(T3)≈49帧=1.63s

对于下位:

发射点为(-105,38),对应结果:

- E(T1)≈40.15帧=41帧=1.37s

- E(T2)≈44帧=1.47s

- E(T3)≈46.79帧=47帧=1.57s

从上面能看出结果:旗舰≈下位>上位。旗舰和下位差距不大,但上位开炮的每颗子弹普遍会慢1~2帧。

2.4 子弹时间

子弹时间相关:BULLET_TIME/BulletTime

bullet_time={0.1, 4, 0.8, 5}

其中

- waiting_time=bullet_time[4]=5

- doing_time=bullet_time[2]=4

相关(主炮武器)参数:lock_time=0.3,max_lock=该武器的hit数。

子弹时间内,时间流速变为0.1倍。总计游戏内时间0.3s(9帧),现实时间3s。其中,5帧(约0.17s,waiting_time)用于镜头拉到舰船上然后开炮,开始冷却下一轮;4帧(约0.13s,doing_time)用于将镜头转回,让子弹落下。

对于每轮炮的第一底座,前5帧为子弹时间流速(子弹还未射出),而子弹射出后,运动为现实时间流速,且只对刚发射出的子弹有效,已发射出的子弹仍保持子弹时间流速,从而并不会对其他子弹产生任何影响。

因此,第一底座的第一颗落地实际所用的游戏内时间期望可认为是:5+40/10=9帧。该值与子弹时间所用时间完全一致。大概率这是在设计之初刻意为之,构造一个视觉上的效果。

因而可以作如下时间轴(游戏时间/现实时间,单位为s. 命中同样以第一颗计):

点击开炮(0.0/0.0)-第一底座开炮(0.17/1.7)-第一底座命中(0.31/3.1)-第二底座开炮(1.17/3.96)-第三底座开炮(2.17/4.96)-第二底座命中(2.50/5.29)-第三底座命中(3.50/6.29)。

每个底座的间隔是以底座开炮(准确来说,是子弹生成)为界点,开始计算下一次的interval.

可以看出,从点击开炮按钮到命中(第一颗)结束,期望上需要3.5s游戏内时间。如果考虑极值,则最少需要约3.37s,最长需要约3.67s。

2.5 录像对比

src: 网页链接​

以下均按第一颗命中视作落地。因而从生成到落地的期望时间为1.33s。

现实时间通过计时器读取,游戏内置计时器则通过现实时间差估算。

以上可能存在武器更新频率(0.1s)带来的影响,或许第二炮#1就是这样,让第一炮#​3慢了0.1s。这个机制有些复杂我也弄不太清楚。

分析如下:

- 入场:2.3s

- 第一轮 点击按钮 与 第一轮#1开炮之间:用时约0.17s(5帧)

- 第一轮#1开炮到落地:约0.13s

- 第一轮#1开炮、第一轮#​2开炮、第一轮#3开炮:间距均为约1s

- 对于每一轮点击按钮到#3落地,所用时均为约3.5s

- 第二轮装填完毕的时间点与理论值(装填时间20.686s+入场时间1.5s=22.186s)基本相符,可能有AI更新频率的影响,也可能有误差。

3. 展望

通过将时间轴精确化,有助于构建全自动的拉轴/拉表/模拟工具,避免繁琐的手动计数,也能提高精确度。目前还遗留的问题则是各种弹幕的相关时间点没有确定,用以演示实战中Buff/Debuff的真实覆盖情况,但原理类似,基于bullet/barrage作类似分析即可;还有一点在于亚利桑那META的技能触发点由玩家手控无法精细化,或许只能通过经验分析。