フレームルールとは、ゲームの特定の処理がフレーム単位で制御されている事を指す言葉である。 (1フレーム間に一定回数ないし、一定フレーム数の間に1回ならば、フレームルールの適用と呼べる。)
まず、フレームの意味であるが、動画の中の静止画1枚のことをフレームという単位で呼ぶ。
通常のゲームでは、一秒間に60枚(NTSC方式。PAL方式は50枚)のフレームを同じ時間の間隔でTVやモニターなどに書き出すことで、ゲームの画面をスムーズな動画にしている。 ゲームのプログラムは、このフレームを書きだす合間にゲームのシステムの処理を行なって、次に書きだすフレームの内容を決定している。 このシステムの処理がスムーズに行われないと、ゲームの画面がスムーズに見えなくなってしまう。
しかしながら、 家庭用ゲーム機向けに限らずとも ゲーム機の性能の制限によって1フレームの間に収められる処理が限られている場合が多い。 そのため、ほとんどの処理は1フレームに1回程度しか実行されない。 このフレームに関するルールをフレームルールという。 また、1フレーム1回のルールでも扱い切れないような[大量の処理]や[重い処理]があったりすると、フレームの更新や同期が遅れてしまい、スムーズなゲーム画面に見えなくなってしまう。 これを、コマ落ちや処理落ちと言う。
[大量の処理]や[重い処理]の例
以上の処理は、一つ一つはフレームの合間に収まる事はあっても、2つ3つ合わせると確実にコマ落ちや処理落ちを引き起こす原因になる。 そのため、ゲームの製作者は、この[大量の処理]や[重い処理]をフレームごとに分けたり、フレームにまたがって分散して実行させることで、起こりうる処理落ちを回避している。
上記の方法には欠点があり、数フレームに分散する特性上、分散させた[大量の処理]や[重い処理]が完全に一巡するのは、数フレームに一度ということになる。 これらの[大量の処理]や[重い処理]に依存する操作が必要な場合は、次に[大量の処理]や[重い処理]が実行されるされるタイミングまで、(プログラムやプレイヤーは)操作を待たなければならない。 その結果、妙なラグや入力拒否、果てはめり込みや壁抜けが起きる。
このような製作段階から避けられないプログラムのフレーム単位の処理の仕様をフレームルールと言う。
また、プレイヤーの入力のたびに処理していては処理が重すぎて困るために、1フレームに1度しか実行されない場合も、フレームルールの適用と言える。
フレームルールの処理自体は、フレームの間隔にあわせて時間を区切ったバッチ処理である。 そのため、正反対の実装方式はリアルタイム処理である。
TASでは、フレームルールの活用と解析がほぼ必須である。 フレームルールは、ゲームのステージクリアの待機時間に影響したり、キー入力のタイミングに影響を与えうる要素であるためである。 しかし、フレームルールには裏技的な利点もあるため、一概に邪魔であるとは言えない。
フレームルールで当たり判定が数フレームに1度であるゲームがあるとする。 そういったゲームの場合、判定されないフレームでのみキー入力を行うと壁抜けやキャラ抜けができてしまう。 また、めり込みによる壁抜けや壁蹴りができるのも、大体これのおかげである。 実はコーナーブーストにも関係があると言われている。
また、1フレームごとに当たり判定が取られる場合でも、1フレーム未満の通過時間で当たり判定を通過すれば、フレームルールを逆手にとって壁の当たり判定を突破できる。 超高速移動を利用した1フレーム未満の壁抜けは3Dゲームにおいて行われることが多い(スーパーマリオ64のケツワープとか)。
フレームルールでイベントの開始位置の判定が数フレームに1度であるゲームがあるとする。そういったゲームの場合、判定が行われないタイミングの時だけその場所を通過して通れば、イベントを発生させることなく通過できる。 悪名高き[MOTHER2のバグ使用TAS]でも説明されている。
TASを作るのにおいて、一番厄介なのがフレームルールによるイベントの発生の間隔の問題である。 これは、とあるイベントが起こるタイミングが一定の間隔でしか存在しない場合に起こる問題として存在する。
FC版スーパーマリオやSFC版スーパーマリオのように、画面の切り替えイベントが21フレームに1度しか判定されない場合、イベント発生タイミングを1つ逃すと最大で20フレーム後のタイミングを待たなければならなくなり、20フレーム以下の無駄なフレームが生じてしまう。
これにより、1つのステージのゴールまでの1フレームの更新が20フレーム更新になったり、0フレーム更新に収束してしまう現象が起こり、TASさんを悩ませる更新上の大きな問題となっている。
これは、最適化が進んだスーパーマリオブラザーズ(FC版)のTASなどで体感することができる。
RTAでTASの挙動を再現するのが難しい理由に、フレームルールが関係している。 (そもそもTASの動きを真似するだけでも人間をやめる覚悟が必要だが。)
SFCやPS1以降のゲームでは、フレームルールに乱数をひとつ回す処理が加えられているものが多い。 これにより、フレーム単位で同じ操作をしないと同じ結果が得られないゲームが多く、フレームによる乱数の変動が直前と同じプレイを再現できない原因となっている。
このフレームルールによる乱数変動のために、TASさんの真似をするのが超絶な高難易度になっている。
SFC版(スーパーファミコン版)DQ1のように、「何らかのボタンを押している最中は、特定の処理に限って10フレーム毎にしか処理が発生しない」など、特殊なフレームルールの変動を持つゲームが存在する。 これらのゲームは、肉眼で確認してから入力しても再現性を確保できるため、RTAでのフレームルールの活用が期待されている。
掲示板
16 ななしのよっしん
2016/10/03(月) 06:08:51 ID: b6R/uZ/2HG
>ほとんどの処理は1フレームに1回程度しか実行されない。 このフレームに関するルールをフレームルールという。
>製作段階から避けられないプログラムのフレーム単位の処理の仕様をフレームルールと言う。
どっちだよ(半ギレ)
そもそもフレームルールってFCマリオTASで21Fごとにしか暗転解除処理が行われないことを21フレームルールと呼んだのが大本なのにそこに触れずにゲームプログラム用語であるかのように書くのはどうなんだ
17 ななしのよっしん
2017/06/11(日) 23:57:38 ID: JbF+kUoSwZ
>、プレイヤーの入力のたびに処理していては処理が重すぎて困るために、
いや秒間に何百回ボタン押すプレイヤーを想定してるんだよw
普通のプレイでは入力処理は1フレームごとにしか「必要ない」だけ
18 ななしのよっしん
2021/11/13(土) 17:02:07 ID: 3vc0jiYfoM
スーパーマリオ64はそもそも30fpsなので、マリオと地形のコリジョン判定は毎f行われている
それどころかこのコリジョンは直前の判定位置からの移動量を4分割してそれぞれに判定をしている
出典はどこだったっけな…
急上昇ワード改
最終更新:2024/05/08(水) 23:00
最終更新:2024/05/08(水) 23:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。