MH3の時間のアレ

どうもモンスターハンター3のゲーム内時間が1割くらい実時間より減るらしい。


ベーマガ世代の人が常識的に考えるとおそらくゲーム内の進行は垂直帰線周波数をベースにしているはず。

常に1割減るということを前提に考えると、1垂直帰線期間あたりあたり15msあたりで計算してるのがすぐ予想できると思う。

んー?16msではなく15msってところがちょっとわからんなぁ。16msでも多少の誤差は出るが15msよりよっぽどましである。30フレームで計算しても33msが30msとなってしまった理由…はわからん。



処理落ちがどうたらとかいう説もあるようだがそれは関係ないと思う。ネット対応で遅延は考慮してあること、そもそも3Dものは可変フレームはあるものとして設計しているはずだから。ゲーム中の時間の計算用に垂直帰線の数のインクリメントをするとしてもそれは通常は垂直帰線割り込み内でやるはずである。

そうでない場合を考えるとゲーム内処理は常に固定フレームで余裕で計算できるようにしておいて、レンダリングを飛ばすだけの簡易的な可変フレームを導入しているということになる。たしかにこれは処理が楽。だが、やはりネット対応がつらくなってしまう。

もともとMHのプログラムがそういったスタイルで使い回しをしているのだとしたら(たぶんありえないかと。じゃないとカプコンの技術力が同人レベルのものすごく低いものということになる。)、考えられるのは、「開発用テスト機の性能がWii実機より低いこと」あたりだろうか。それによって気がつかなかった可能性はある。ただし前提がアレなのでたぶんこれはないか。



もうひとつ考えられるのは高精度カウンタを利用していたが、実はWiiのCPUのクロックは負荷によって可変であり、それを考慮していないということ。大概のCPUは1クロックごとにインクリメントする機能があって、これを周波数で割ることによって高精度の時間が取得できる。

たとえば10HzのCPUがあったとして、カウンタが25だったらこれは2.5秒経過したというのがわかる。でも5Hzで動いていたらこれは5秒ということになってしまう。

準備時間中にクロックを取得したら10Hzだったのに、実際のゲーム内は負荷が高くて11Hzになっていたという場合約1割減る計算だ。



まーどうしてもすべては憶測になってしまうがなぁ。憶測のうちが一番楽しいというのはあるかも。そもそも素人の考えではこの程度が限界。本職の方じゃないとわからんね。



ここで斬新すぎて誰もついていけないネタを。

MH3X68000で開発されていた」

これが1割近く早くなる理由なんだぜ?わかる人はPC9801でもPC8801でもいいんだぜ。ここに来る人はみんなわかるネタだと思うけどもしわからなかったらコメントへどうぞ。



ゲハ方面ではこれは遊べなくなるほどの致命的な欠陥であり、任天堂ハードだから発生した不具合というのが多く見られるね。どうすればそういう解釈になるかわからんが、とにかくすごい自信だ。

個人的には絶対的にクリアできないなど致命的な現象が発生するとかがないかぎり、ゲーム内時間とリアル時間とべつに違っていてもいいと思う。そうでないと過去の大量のソフトは致命的なバグもちらしいことになってしまう。