えんぺっこメモ

主にモンハンシリーズで計算した内容を書き残すブログです。

【MHW:IB】貫通弾と属性弾のヒット間隔

*サムネ用

f:id:emperor0218:20211202190827p:plain

貫通弾と属性弾のヒット間隔。160 fps まで

お久しぶりです。最近まわりでPC版MHW:IBを始める方が多く、前に計算した貫通弾と属性弾のヒット間隔についてまとめておこうと思ったのでブログを書くことにしました*1

計算した時期は2020年のゴールデンウィーク。そう。その頃の日本は最初の緊急事態宣言は発出されていましたね。どこに行ってもマスクがなく、トイレットペーパーがスーパーから消えたのが懐かしいですね。

このブログで使ってる情報は主に以下のスプレッドシートから得たものです:

docs.google.com

それでは本題に入りましょう。

貫通弾のヒット間隔

貫通弾は3種類ありますが、主にLv3 貫通弾(以下、貫通3)についてです。

貫通3のヒット間隔は「60 fps において 3F(フレーム) おき」となっています*2。常に 0.05秒 (=3/60秒) おきにヒットするわけでもなく、かといってどのフレームレートでも 3F おきにヒットするわけでもありません。またヒット間隔が 0.05秒 より小さくなることもありません。つまり「どのフレームレートでも、次にヒットするタイミングは最初のヒットから 0.05秒 経った後に初めてくるフレーム」ということになります。

IBではフレームレートは一定ではなく常に変化しているので、画面に映るエフェクトによってフレームレートが上がったり下がったりします*3

内部でフレームレート毎に 3F の値(時間)を計算して、それを毎回ヒット間隔に反映してくれれば良いのですが、ヒット自体は各フレームで行われるのでフレームレートによってはヒット間隔の差が大きくなります。

上のリンクでは30 fps、60 fps、61 fpsの3つの例を挙げて説明されています。ここでは絵を描いて具体的に見ていきます。初めに 60 fps の場合、1F = 1/60 秒 で、3F = 3/60 = 0.05 秒 なので、3F おきにヒットします。2F は、2F = 2/60 = 0.033...秒 となり 0.05秒 経っていないので、最初にヒットしてから 2F後 にヒットすることはありません。(これから出てくるこんな感じの絵では、ヨコ1マスは 1F に対応していて、左上に記載しています。):

f:id:emperor0218:20211202165949p:plain

60 fpsの場合

次に 61 fps の場合は、1F = 1/61 秒で、3F = 3/61 = 0.0492 秒となり 0.05秒 を下回っているのでこの場合は 3F おきにヒットしません。4F だと 4/61 = 0.06557 秒なので 0.05秒 より大きいため、61 fps では 4F おきにヒットします:

f:id:emperor0218:20211202170333p:plain

61 fpsの場合

最後に 30 fps の場合。1F = 1/30 = 0.033...秒 なので、これも 0.05秒 より短いです。この場合は 3F おきにヒットするのではなくて、2F おきです(2/30 = 0.0066...秒):

f:id:emperor0218:20211202171816p:plain

30 fpsの場合

これら3つの絵はそれぞれヨコ1マスの目盛りの大きさが違うので、視覚的に 30 fps の方がヒット間隔が短く見えてしまいます。なので横軸を 1/60秒 に統一して3つの絵をまとめました。これを見ると 30 fps は 61 fps の場合とほとんど変わらないことが分かるでしょう:

f:id:emperor0218:20211202181159p:plain

ヨコ1マスの目盛りを固定したときのそれぞれのヒット間隔

ここまででフレームレートによって貫通3のヒット間隔が異なるのが理解できたと思います。次は「ではフレームレートをいくつに設定すれば良いか」ということについて考えていきましょう。

今までの具体例から、一般に f (fps) での貫通3のヒット間隔は f/20 (フレーム)と書けることがわかります(ただし、小数点部分は切り上げ。)*4

これを元に、25 fps から 80 fps までのヒット間隔をグラフにすると次のようになります:

f:id:emperor0218:20211202184133p:plain

貫通3のヒット間隔。25 fps から 80 fpsまで。

フレームレートが20の倍数に近づくにつれてヒット間隔が短くなりますが、例えば 61 fps になってしまうと 60 fps に比べてヒット間隔が大きく変化してしまうこともわかるでしょう。

PC版のことを考えて、160 fps まで表示したものが次のグラフになります:

f:id:emperor0218:20211202184553p:plain

貫通3のヒット間隔。160 fpsまで(PC版向け)

属性弾のヒット間隔

属性弾は5種類ありますが、主に挙動が同じ4種類(火炎弾・水冷弾・電撃弾・氷結弾)についてです。

属性弾のヒット間隔は「60 fps において 12F おき」となっています。こちらも貫通3同様、0.2秒おき にヒットするものではありません。

貫通弾の場合と同様にして絵を描いてみると、一般に f (fps) での属性弾のヒット間隔は f/5 (フレーム)と書けることがわかります(ただし、小数点部分は切り上げ。)。こちらも 80 fps まででグラフを描いてみると次のようになります:

f:id:emperor0218:20211202185603p:plain

属性弾のヒット間隔。25 fps から 80 fps まで

貫通3の場合と違って、属性弾は5の倍数に近づくにつれてヒット間隔が短くなります。貫通3ほどフレームレートに関してシビアにならなくてもいいかもしれません*5

こちらも PC 版向けに 160 fps まで表示したグラフを作っておきましょう:

f:id:emperor0218:20211202190008p:plain

属性弾のヒット間隔。160 fps まで(PC版向け)

フレームレートはいくつにするべきか

フレームレートは貫通3ならば20の倍数、属性弾ならば5の倍数になるとヒット間隔が最小になることがわかりました。これらの最小公倍数は20の倍数なので、フレームレートを固定できるならば20の倍数に設定すると良いと思います。

これは個人的なコメントです。もしPC版でフレームレートが固定できるのであれば20の倍数で固定するのではなくて、20の倍数 - 2くらい、具体的には 98 fps、118 fps、138 fpsなどに固定した方が良いかもしれません。たとえば120 fpsに固定したときに、瞬間的に 121 fps や 122 fps になってしまった場合にヒット間隔が大きくなってしまいます*6

もし、98 fpsとか 118 fps に固定できないなら、それぞれ 100 fps、120 fps として固定すれば良いでしょう。

 

最後まで読んでいただき、ありがとうございました。

*1:すぐブログにまとめなかった理由はTwitterに載せた後に動画に転載されたためです。

*2:以下、大文字の F は フレーム の単位を表します。

*3:何もないトレーニングエリアで円筒を使用するとフレームレートが下がります。

*4:30 fpsの場合は 30/20 = 1.5 → 2F、60 fps の場合は 60/20 = 3F、61 fps の場合は 61/20 = 3.05 → 4F、といった感じです。

*5:高い方が良いのは当たり前ですが。

*6:筆者がPC版を持っていないのでそこまで細かく設定できるかがよくわかりません。