バイオハザード4 30fpsと60fpsで焼夷手榴弾のダメージが違う件
Steam版、難易度PROFESSIONALで検証。 立っているガナードに焼夷手榴弾を投げた時、 30fpsだと825ダメージを与えるが、60fpsだと829ダメージを与えるようだ。
検証方法など
4-2廃坑入口の松明を持ったおじいさん(火を吹かず殴って来て寄生体が出ない方)でダメージ計算を行っていた過程で気付いた。 このおじいさんのHPは2000である。
焼夷手榴弾と以下の攻撃を組み合わせて倒せるか試せば分かる。武器は全て無改造とする。
- ハンドガンを6回、パニッシャーを3回、マシンピストルを1回
- 6x127 + 3x114 + 1x71 = 1175ダメージ
- ブラックテイルを2回、ハンドガンを1回、マシンピストルを9回
- 2x204 + 1x127 + 9x71 = 1174ダメージ
- ブラックテイルを4回、マシンピストルを5回
- 4x204 + 5x71 = 1171ダメージ
- ブラックテイルを2回、ハンドガンを6回
- 2x204 + 6x127 = 1170ダメージ
30fpsだと、 1.の組み合わせで攻撃した場合のみ倒すことができ、 2.~4.の組み合わせで攻撃した場合は倒せない。
一方で、60fpsだと、 1.~3.の組み合わせで攻撃した場合は倒すことができ、 4.の組み合わせで攻撃した場合のみ倒せない。
なお、転倒したガナードに対するダメージはfpsによらず1020で共通。
考察
焼夷手榴弾のダメージは炎を最初に受けた時のダメージと、その後の継続ダメージ(DoT)に分けられ、
値は500 + 50x10と言われている。
難易度プロによるランク補正で0.85倍をかけて切り捨てると、
[500x0.85] + 50x[10x0.85] = 425 + 50x8 = 825となり、30fpsでのダメージに一致する。
これが60fpsでは500 + 101x5になっているのではないかと思う。
[500x0.85] + 101x[5x0.85] = 425 + 101x4 = 829となって一致する。
何故60fpsになると、スリップダメージの回数が倍の100回ではなく、 101回になると考えたのかを次に述べる。
バイオハザード4は元々30fpsのゲームであり、Steam版から60fpsでのプレイが可能になった。 多分だが、30fpsのゲームを60fpsにしようとした場合、 単に描画回数を2倍にすれば良いという話にはならないと思う。 常に30fps(あるいは上限が30fps)のゲームを作る場合、 入力の受付や座標の計算も1秒に30回しか行わない方が処理が軽くて済む。 恐らくバイオハザード4もそうだったのではないかと思う。 このまま描画間隔だけを倍にしても、座標の計算などを行っていなければ、 同じ画面を2回連続で描画するだけで60fpsにはならない。 したがってゲームの処理自体も1秒に60回行うように変える必要がある。
焼夷手榴弾に関して、スリップダメージ(DoT)の処理も秒間60回行うように変えるとする。 ここでもし火が点くタイミングと火が消えるタイミングを変えないように、 間はスリップダメージを与えるフレームで埋めようとした場合、 本来スリップダメージを与えていたフレームの後だけではなく、 最初に火が付いた後のフレームも埋める必要があるので、 スリップダメージの回数は2倍ではなく、2倍+1になる。
以上は、逆アセンブルもやってないし、プログラミングも初心者の私の考えなので、 どこまで信用に足るかは分からない。 予防線を張りたい訳ではないが、鵜呑みにするより疑って検証する方が新しい発見に繋がる。
60fpsの方が焼夷手榴弾で与えるダメージが低くなることもありえる
もしこの考察が正しく、60fpsにおける焼夷手榴弾のダメージが500 + 101x5である場合、 ノーマル以下の難易度では、 ゲームランクによって60fpsの方が焼夷手榴弾で与えるダメージが低くなることもあるという予想をしている。
例えば、与えるダメージが0.9倍になる時、
30fpsでは、[500x0.9] + 50x[10x0.9] = 450 + 50x9 = 900だが、
60fpsでは、[500x0.9] + 101x[5x0.9] = 450 + 101x4 = 854となる。
私自身やってみようと思うのだが、多分かなり後回しにするので、 もし気になる人が居たら検証してみて欲しい。
ビトレス・メンデス(村長)第一形態のダメージについて
ビトレス・メンデス第一形態に焼夷手榴弾で与えるダメージが30fpsより60fpsの方が高いことは、 比較的よく知られている。 60fpsでは焼夷2発で倒すことができるが、 30fpsでは焼夷3発に更に少しのダメージを与えないと倒せない。 具体的なダメージの値は、30fpsで485、60fpsで893である。
ビトレス・メンデスのHPは1500であり、ダメージは以下の方法で確認できる。
30fpsにおいては、焼夷手榴弾を3回投げた後、以下の組み合わせを試す。
60fpsにおいては、焼夷手榴弾を1回投げた後、以下の組み合わせを試す。
- レッド9を28回、ハンドガンを2回、パニッシャーを2回
- 28x20 + 2x12 + 2x11 = 606ダメージ
- レッド9を28回、ハンドガンを3回、パニッシャーを1回
- 28x20 + 3x12 + 1x11 = 607ダメージ
脊椎を撃つとダメージに倍率がかかるので注意。上半身を撃つと良い。
60fpsのダメージは1.5倍~2倍くらいになっているので、 スリップダメージを半分にするのを忘れて適用したという想像が容易につく。 それでは、最初の固定ダメージ(xとおく)は変わらず、 スリップダメージ(yとおく)も半分にするのを忘れてfpsによって変わらないという仮定で、連立方程式を解いてみよう。
30fpsのダメージから、x + 50y = 485
60fpsのダメージから、x + 101y = 893
x = 85
y = 8
60fpsの焼夷手榴弾のスリップダメージを101回とするとぴったり整数になる。 ビトレス・メンデスに与えるダメージの違いも、 スリップダメージが101回であるということが確からしい根拠である。
2020年8月17日追記
2020年8月16日に気付いたのですが、2020年2月15日に既に指摘していた方がいらっしゃいました。 https://www.nicovideo.jp/watch/sm36372372