[攻略] [RISE] mhr中与帧率相关的研究
前置知识:
当前帧开始输入的话,最快也要在下一帧游戏才可以作出“回应”。(因为当前帧在“开始”绘制的时候已经决定了内容并且不可更改了)
游戏”更新数据”的频率就是实际运行帧率
经过游戏解包跟一些测试。基本可以确定mhr处理动画的方式跟mhw是相似的。
比如:
1. MHR,乃至MHW,都有两种“记录时间的单位”,一个是微秒(千分之一秒),另一个是帧(单位是60帧)。
2. 游戏数据是以60fps储存的。“游戏运行帧率” 与 “游戏数据以每秒60帧储存”是两个概念。游戏会在这个“以60帧储存的数据”里面生成目标帧率所需要的东西。(比如30帧运行帧率就会在这每秒60份的数据里面每2份取一次数据。)

动态帧率造成的一些问题
因为这mhw跟mhr的处理方式非常相似,所以在某些行为上,mhw的痛点也是mhr的痛点(其实对于大部分可变帧率的游戏来说都是如此)。
1. 比如数据里面记录你这一刀要卡5帧@60fps,但你现在在ns平台,只有30帧,这个数值就会变成2.5帧,但因为帧数只能是整数,所以实际上需要3帧,比60fps下多花了一点点时间。
2. 在mhw里面,贯通会因为不同帧率而增加或减少hit数,这导致了高帧率带来高dps的结果。而这一点在mhr也是一样的。不过对于mhr的贯通来说,所有的贯通类攻击都被限制为最多7hit,一定程度上限制了帧率带来的最大差距。
参考 [https://www.bilibili.com/video/av251059359]▸ 的p1跟p2。30帧贯通84hit,60帧贯通92hit。
因为mhw,mhr两者行为相似,所以很多在mhw的时候已经讨论过的东西就不多说了。参考:
mhw帧率相关 [https://bbs.nga.cn/read.php?tid=21041275],mhw帧率相关补充 [https://bbs.nga.cn/read.php?tid=23969136]
(太刀灯笼的机制不一样了,所以帖子里面太刀灯笼相关的只适合mhw,见切判定也是,mhr整合进动画所以不用参考。攻击延迟在下面会说)
3. 极限的卡顿可以把整段攻击卡掉,比如太刀气刃2,做出动作的第35帧@60fps开始拥有攻击判定,持续6帧@60fps。
也就是只有这0.1秒的时间内有攻击判定,如果你刚好把这段时间卡掉了,比如你卡了0.2秒,覆盖了这段攻击判定的动画,你可能就会看到你的刀对怪物造成虚空伤害了。

关于输入延迟
一般的x跟a键(太刀突刺跟上挑键)都有60fps下的固定5帧@60fps延迟(按下按键第0帧@60fps,中间经过5帧@60fps延迟,第6帧@60fps作出第一帧攻击动画)
R键比较特殊,在没有可能派生组合键的场合下没有按键延迟,但在有可能派生组合键的场合下同样有5帧@60fps延迟(比如太刀招式后摇中的时候可以衔接特纳跟见切,所以有5帧@60fps延迟)
而回避则无论什么情况下都是无延迟的,按下就立即滚。
值得一提的是这个按键延迟同样会受到动态帧率机制的印象,比如在ns的30fps下的环境,5帧@60fps输入延迟会变成3帧@30fps延迟,比60fps下多花了0.0167秒时间
参考资料:
基于switch模拟器60fps下的测试。参考 [https://www.bilibili.com/video/av251059359]▸
少年A, 逆风のLeo, 风来の克罗喵姆 - 太刀纳刀按出翻滚的原因:[https://bbs.nga.cn/read.php?tid=26395918]

卡肉的机制
感谢 小白龙之猫 对卡肉相关的研究
结合解包数据,我们发现卡肉共有8档,每档在60fps下有2帧差距。也就是:
Lv1 = 2帧@60fps,Lv8 = 16帧@60fps
然后在某些条件下,卡肉时间会被乘以1.5倍,以Lv5卡肉为例子,10*1.5=15帧@60fps
而卡肉有4种类型,这个是直接被定义在招式属性里面的不能更改的。大部分招式都是“无”

这里的1就是1倍卡肉时间,卡肉时以慢动作播放动画(倍率不清楚)
而1.5就是1.5倍卡肉时间,卡肉时整个动作动画冻结。
而这个“斩味补正x额外斩味补正x肉质”其实就是我在mhw里面说过的“斩*肉值”,不过在这里,我将其称为“卡肉值”或许更合适。
参考:斩肉值科普 + 软化肉质公式补充 [https://bbs.nga.cn/read.php?tid=21829670]
在mhr里面,会影响这个卡肉值的是:

而这个卡肉值跟mhw比起来最大的分别就是,在66以上的档位,mhr里面绝大部分卡肉会乘以1.5倍,可mhw绝大部分招则维持1倍(mhw所有武器加起来不超过5招66+的卡肉时间会比45+的多)
所以打非常好的肉质的地方,mhr的卡肉会比mhw来得更“卡”
这里是我整理的一份简表:

此外有一点要注意的就是,卡肉乘以1.5倍时是单数帧,所以30fps下会花费更多卡肉的时间,比起60fps。(第一段举过例了)

其他及具体例子
j刚有人问过我60fps会不会有影响,我试了试没问题。
此外有一点可以注意的是,3.4.1里面修复了斩斧零解吞hit的问题(零解一共10小炸,但ns上大部分情况下只有9小炸),这个问题卡表怎么修复的呢?他是这样修复的:
在之前的版本里面,零解里面设定了每隔13帧@60fps炸一次,而如果零解的地方是肉质很好的地方,每一炸都会有3帧@60fps的卡肉(Lv1卡肉+hit停类型卡肉)。这在60fps下是没有问题可以炸完的。
但问题在于ns的情况下,单数帧会向上取整,每隔7帧@30fps才炸一次,每炸一次卡2帧@30fps,这比起60fps下每hit多了整整2帧@60fps。所以最后就导致零解大爆炸的时候少了1hit。
而卡表的修复方法就很粗暴,直接把“每隔13帧炸一次”变成了“每隔13帧以及12帧炸一次”。用数据表现就是:
原版:13-13-13-13-13-13-13-13-13 ->
修复:12-13-12-13-12-13-12-13-12
中间改了几个变成12帧,30fps下就从7帧变成6帧了。总共节省了5帧@60fps,所以30fps下才没有吞hit。
看来卡表还是很清楚这个问题的存在的
因为b站专栏更新次数限制的原因,更新以nga帖子为准:
https://bbs.nga.cn/read.php?tid=28938209