[攻略] [RISE] mhr中與幀率相關(guān)的研究
前置知識(shí):
當(dāng)前幀開(kāi)始輸入的話(huà),最快也要在下一幀游戲才可以作出“回應(yīng)”。(因?yàn)楫?dāng)前幀在“開(kāi)始”繪制的時(shí)候已經(jīng)決定了內(nèi)容并且不可更改了)
游戲”更新數(shù)據(jù)”的頻率就是實(shí)際運(yùn)行幀率
經(jīng)過(guò)游戲解包跟一些測(cè)試?;究梢源_定mhr處理動(dòng)畫(huà)的方式跟mhw是相似的。
比如:
1. MHR,乃至MHW,都有兩種“記錄時(shí)間的單位”,一個(gè)是微秒(千分之一秒),另一個(gè)是幀(單位是60幀)。
2. 游戲數(shù)據(jù)是以60fps儲(chǔ)存的。“游戲運(yùn)行幀率” 與 “游戲數(shù)據(jù)以每秒60幀儲(chǔ)存”是兩個(gè)概念。游戲會(huì)在這個(gè)“以60幀儲(chǔ)存的數(shù)據(jù)”里面生成目標(biāo)幀率所需要的東西。(比如30幀運(yùn)行幀率就會(huì)在這每秒60份的數(shù)據(jù)里面每2份取一次數(shù)據(jù)。)

動(dòng)態(tài)幀率造成的一些問(wèn)題
因?yàn)檫@mhw跟mhr的處理方式非常相似,所以在某些行為上,mhw的痛點(diǎn)也是mhr的痛點(diǎn)(其實(shí)對(duì)于大部分可變幀率的游戲來(lái)說(shuō)都是如此)。
1. 比如數(shù)據(jù)里面記錄你這一刀要卡5幀@60fps,但你現(xiàn)在在ns平臺(tái),只有30幀,這個(gè)數(shù)值就會(huì)變成2.5幀,但因?yàn)閹瑪?shù)只能是整數(shù),所以實(shí)際上需要3幀,比60fps下多花了一點(diǎn)點(diǎn)時(shí)間。
2. 在mhw里面,貫通會(huì)因?yàn)椴煌瑤识黾踊驕p少hit數(shù),這導(dǎo)致了高幀率帶來(lái)高dps的結(jié)果。而這一點(diǎn)在mhr也是一樣的。不過(guò)對(duì)于mhr的貫通來(lái)說(shuō),所有的貫通類(lèi)攻擊都被限制為最多7hit,一定程度上限制了幀率帶來(lái)的最大差距。
參考?[https://www.bilibili.com/video/av251059359]??的p1跟p2。30幀貫通84hit,60幀貫通92hit。
因?yàn)閙hw,mhr兩者行為相似,所以很多在mhw的時(shí)候已經(jīng)討論過(guò)的東西就不多說(shuō)了。參考:
mhw幀率相關(guān)?[https://bbs.nga.cn/read.php?tid=21041275],mhw幀率相關(guān)補(bǔ)充?[https://bbs.nga.cn/read.php?tid=23969136]
(太刀燈籠的機(jī)制不一樣了,所以帖子里面太刀燈籠相關(guān)的只適合mhw,見(jiàn)切判定也是,mhr整合進(jìn)動(dòng)畫(huà)所以不用參考。攻擊延遲在下面會(huì)說(shuō))
3. 極限的卡頓可以把整段攻擊卡掉,比如太刀氣刃2,做出動(dòng)作的第35幀@60fps開(kāi)始擁有攻擊判定,持續(xù)6幀@60fps。
也就是只有這0.1秒的時(shí)間內(nèi)有攻擊判定,如果你剛好把這段時(shí)間卡掉了,比如你卡了0.2秒,覆蓋了這段攻擊判定的動(dòng)畫(huà),你可能就會(huì)看到你的刀對(duì)怪物造成虛空傷害了。

關(guān)于輸入延遲
一般的x跟a鍵(太刀突刺跟上挑鍵)都有60fps下的固定5幀@60fps延遲(按下按鍵第0幀@60fps,中間經(jīng)過(guò)5幀@60fps延遲,第6幀@60fps作出第一幀攻擊動(dòng)畫(huà))
R鍵比較特殊,在沒(méi)有可能派生組合鍵的場(chǎng)合下沒(méi)有按鍵延遲,但在有可能派生組合鍵的場(chǎng)合下同樣有5幀@60fps延遲(比如太刀招式后搖中的時(shí)候可以銜接特納跟見(jiàn)切,所以有5幀@60fps延遲)
而回避則無(wú)論什么情況下都是無(wú)延遲的,按下就立即滾。
值得一提的是這個(gè)按鍵延遲同樣會(huì)受到動(dòng)態(tài)幀率機(jī)制的印象,比如在ns的30fps下的環(huán)境,5幀@60fps輸入延遲會(huì)變成3幀@30fps延遲,比60fps下多花了0.0167秒時(shí)間
參考資料:
基于switch模擬器60fps下的測(cè)試。參考?[https://www.bilibili.com/video/av251059359]?
少年A, 逆風(fēng)のLeo, 風(fēng)來(lái)の克羅喵姆 - 太刀納刀按出翻滾的原因:[https://bbs.nga.cn/read.php?tid=26395918]

卡肉的機(jī)制
感謝 小白龍之貓 對(duì)卡肉相關(guān)的研究
結(jié)合解包數(shù)據(jù),我們發(fā)現(xiàn)卡肉共有8檔,每檔在60fps下有2幀差距。也就是:
Lv1 = 2幀@60fps,Lv8 = 16幀@60fps
然后在某些條件下,卡肉時(shí)間會(huì)被乘以1.5倍,以L(fǎng)v5卡肉為例子,10*1.5=15幀@60fps
而卡肉有4種類(lèi)型,這個(gè)是直接被定義在招式屬性里面的不能更改的。大部分招式都是“無(wú)”

這里的1就是1倍卡肉時(shí)間,卡肉時(shí)以慢動(dòng)作播放動(dòng)畫(huà)(倍率不清楚)
而1.5就是1.5倍卡肉時(shí)間,卡肉時(shí)整個(gè)動(dòng)作動(dòng)畫(huà)凍結(jié)。
而這個(gè)“斬味補(bǔ)正x額外斬味補(bǔ)正x肉質(zhì)”其實(shí)就是我在mhw里面說(shuō)過(guò)的“斬*肉值”,不過(guò)在這里,我將其稱(chēng)為“卡肉值”或許更合適。
參考:斬肉值科普 + 軟化肉質(zhì)公式補(bǔ)充?[https://bbs.nga.cn/read.php?tid=21829670]
在mhr里面,會(huì)影響這個(gè)卡肉值的是:

而這個(gè)卡肉值跟mhw比起來(lái)最大的分別就是,在66以上的檔位,mhr里面絕大部分卡肉會(huì)乘以1.5倍,可mhw絕大部分招則維持1倍(mhw所有武器加起來(lái)不超過(guò)5招66+的卡肉時(shí)間會(huì)比45+的多)
所以打非常好的肉質(zhì)的地方,mhr的卡肉會(huì)比mhw來(lái)得更“卡”
這里是我整理的一份簡(jiǎn)表:

此外有一點(diǎn)要注意的就是,卡肉乘以1.5倍時(shí)是單數(shù)幀,所以30fps下會(huì)花費(fèi)更多卡肉的時(shí)間,比起60fps。(第一段舉過(guò)例了)

其他及具體例子
j剛有人問(wèn)過(guò)我60fps會(huì)不會(huì)有影響,我試了試沒(méi)問(wèn)題。
此外有一點(diǎn)可以注意的是,3.4.1里面修復(fù)了斬斧零解吞hit的問(wèn)題(零解一共10小炸,但ns上大部分情況下只有9小炸),這個(gè)問(wèn)題卡表怎么修復(fù)的呢?他是這樣修復(fù)的:
在之前的版本里面,零解里面設(shè)定了每隔13幀@60fps炸一次,而如果零解的地方是肉質(zhì)很好的地方,每一炸都會(huì)有3幀@60fps的卡肉(Lv1卡肉+hit停類(lèi)型卡肉)。這在60fps下是沒(méi)有問(wèn)題可以炸完的。
但問(wèn)題在于ns的情況下,單數(shù)幀會(huì)向上取整,每隔7幀@30fps才炸一次,每炸一次卡2幀@30fps,這比起60fps下每hit多了整整2幀@60fps。所以最后就導(dǎo)致零解大爆炸的時(shí)候少了1hit。
而卡表的修復(fù)方法就很粗暴,直接把“每隔13幀炸一次”變成了“每隔13幀以及12幀炸一次”。用數(shù)據(jù)表現(xiàn)就是:
原版:13-13-13-13-13-13-13-13-13 ->
修復(fù):12-13-12-13-12-13-12-13-12
中間改了幾個(gè)變成12幀,30fps下就從7幀變成6幀了。總共節(jié)省了5幀@60fps,所以30fps下才沒(méi)有吞hit。
看來(lái)卡表還是很清楚這個(gè)問(wèn)題的存在的
因?yàn)閎站專(zhuān)欄更新次數(shù)限制的原因,更新以nga帖子為準(zhǔn):
https://bbs.nga.cn/read.php?tid=28938209