フレームルール単語

フレームルール
2.7千文字の記事
  • 6
  • 0pt
掲示板へ

フレームルールとは、ゲーム特定の処理がフレーム単位で制御されている事をす言葉である。 (1フレーム間に一定回数ないし、一定フレーム数の間に1回ならば、フレームルールの適用と呼べる。)

概要

 まず、フレームの意味であるが、動画の中の静止画1枚のことをフレームという単位で呼ぶ。

 通常のゲームでは、一間に60枚(NTSC方式。PAL方式は50枚)のフレームを同じ時間の間隔でTVモニターなどに書き出すことで、ゲームの画面をスムーズ動画にしている。 ゲームプログラムは、このフレームを書きだす合間にゲームシステムの処理を行なって、次に書きだすフレームの内容を決定している。 このシステムの処理がスムーズに行われないと、ゲームの画面がスムーズに見えなくなってしまう。

 しかしながら家庭用ゲーム機向けに限らずとも ゲーム機の性の制限によって1フレームの間に収められる処理が限られている場合が多い。 そのため、ほとんどの処理は1フレームに1回程度しか実行されない。 このフレームに関するルールをフレームルールという。 また、1フレーム1回のルールでも扱い切れないような[大量の処理]や[重い処理]があったりすると、フレーム更新同期が遅れてしまい、スムーズゲーム画面に見えなくなってしまう。 これを、コマ落ちや処理落ちと言う。

[大量の処理]や[重い処理]の例

 以上の処理は、一つ一つはフレームの合間に収まる事はあっても、2つ3つ合わせると確実にコマ落ちや処理落ちを引き起こす原因になる。 そのため、ゲーム製作者は、この[大量の処理]や[重い処理]フレームごとに分けたり、フレームにまたがって分散して実行させることで、起こりうる処理落ちを回避している。

 上記の方法には欠点があり、数フレームに分散する特性上、分散させた[大量の処理]や[重い処理]全に一巡するのは、数フレームに一度ということになる。 これらの[大量の処理]や[重い処理]依存する操作が必要な場合は、次に[大量の処理]や[重い処理]が実行されるされるタイミングまで、(プログラムプレイヤーは)操作を待たなければならない。 その結果、妙なラグや入拒否、果てはめり込み抜けが起きる。

このような製作段階から避けられないプログラムフレーム単位の処理の仕様をフレームルールと言う。

また、プレイヤーの入のたびに処理していては処理が重すぎて困るために、1フレームに1度しか実行されない場合も、フレームルールの適用と言える。

フレームルールの処理自体は、フレームの間隔にあわせて時間を区切ったバッチ処理である。 そのため、正反対の実装方式はリアルタイム処理である。

TASとフレームルール

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とフレームルール

RTATASの挙動を再現するのが難しい理由に、フレームルールが関係している。 (そもそもTASの動きを真似するだけでも人間をやめる覚悟が必要だが。)

乱数とフレームルール

SFCPS1以降のゲームでは、フレームルールに乱数をひとつ回す処理が加えられているものが多い。 これにより、フレーム単位で同じ操作をしないと同じ結果が得られないゲームが多く、フレームによる乱数の変動が直前と同じプレイ再現できない原因となっている。

このフレームルールによる乱数変動のために、TASさん真似をするのが超絶高難易度になっている。

SFC版DQ1のボタン入力フレームルール

SFC版(スーパーファミコン版)DQ1のように、「何らかのボタンを押している最中は、特定の処理に限って10フレーム毎にしか処理が発生しない」など、特殊なフレームルールの変動を持つゲームが存在する。 これらのゲームは、眼で確認してから入しても再現性を確保できるため、RTAでのフレームルールの活用が期待されている。

関連項目

【スポンサーリンク】

  • 6
  • 0pt
記事編集 編集履歴を閲覧

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

フレームルール

9 ななしのよっしん
2012/02/12(日) 23:59:44 ID: ASBi43+pF8
>>sm9351830exit_nicovideo

面切り替えの判定が11Fごと
処理落ち最適化、あるいはフレームルールの働かない面切り替え以外での更新は11Fごとになってる
👍
高評価
0
👎
低評価
0
10 ななしのよっしん
2012/12/14(金) 13:25:24 ID: dun7qZ7ZPh
エキサイトバイクTASは燃料の消費と速度の上昇が分散してるのを利用してたな
4フレーム1セットだっけ
👍
高評価
0
👎
低評価
0
11 ななしのよっしん
2014/04/01(火) 16:01:33 ID: 8foapcijM0
分かり辛くしてしまう話だけど、
フレームの意味は動画の中の静止画1枚のことじゃなくて、モニタが1枚の静止画を表示するのにかかる「時間を表す単位」。
基準はゲーム機のような配信側じゃなくモニタ側ってのがミソ

NTSCインタレース(1枚の絵を複数回に分けて表示する方式)で、1フレームは約1/30だね。
で、1フレームは2回に分けて表示されてる。その1回分を1フィールドって言う。
だから、60FPSって言われるNTSCゲームは、1フレームじゃなく1フィールド単位で動いてることになる。

元々アーケードゲーム解説で使うようになった表現で、そっちはノンインタレース(1枚の絵を一度で表示する方式)で本当に1フレーム1/60だった。
それをそのまま庭用テレビにも持ち込んで誤用されてしまってる。

まあ、特に困る人はいないと思うし、NTSC方式のテレビに特殊な同期信号を渡して本当に60FPSで動かしてる場合も多い。ファミコンもこれ。
ただその場合絵は半分の解像度しか
(省略しています。全て読むにはこのリンクをクリック!)
👍
高評価
0
👎
低評価
0
12 ななしのよっしん
2014/06/11(水) 17:08:54 ID: b0zWDyAWTW
箇条書きで失礼。
フレームルール重い処理を数フレームに1回処理することで動作を軽くする手法
マリオ64すり抜けは「移動処理の都合で座標が飛び飛びになっている」ことで起こる現フレームルールとは別モン
👍
高評価
0
👎
低評価
0
13 ななしのよっしん
2014/06/22(日) 00:12:48 ID: eAVQFX8zRE
>>12
フレームルールがあるからこそ飛び飛びになるんじゃないの?
仮にの厚さが20、速さが11000とすると
1に30フレームなら1フレームあたり約33進む→すり抜けられる
1に60フレームなら1フレームあたり約16進む→すり抜けられない
👍
高評価
0
👎
低評価
0
14 ななしのよっしん
2014/06/22(日) 18:13:44 ID: b0zWDyAWTW
>>13
3行からの考えは大体正解
でも「1Fに1回処理する」のはごくふつうの処理。(記事が間違ってる)
「数Fに1回しか処理しない」と結果が変わるので、これを(TAS関係者が)明示するためにフレームルールと呼んでる。
の例えだと、普通は1Fに一回電車が来るのに21Fに1度しか電車が来ない感じ。
だからフレームルールがあるせいで飛び飛びになる訳じゃない
👍
高評価
0
👎
低評価
0
15 ななしのよっしん
2016/01/29(金) 19:11:17 ID: 3xlQ30+NUL
NTSCに30fpsモードなんてない
同じ絵をずらして二回描いてるだけ

http://elm-chan.org/docs/rs170a/spec_j.htmlexit
👍
高評価
0
👎
低評価
0
16 ななしのよっしん
2016/10/03(月) 06:08:51 ID: b6R/uZ/2HG
>ほとんどの処理は1フレームに1回程度しか実行されない。 このフレームに関するルールフレームルールという。

製作段階から避けられないプログラムフレーム単位の処理の仕様フレームルールと言う。

どっちだよ(半ギレ)
そもそもフレームルールってFCマリオTASで21Fごとにしか暗転解除処理が行われないことを21フレームルールと呼んだのが大本なのにそこに触れずにゲームプログラムであるかのように書くのはどうなんだ
👍
高評価
0
👎
低評価
0
17 ななしのよっしん
2017/06/11(日) 23:57:38 ID: JbF+kUoSwZ
>、プレイヤーの入のたびに処理していては処理が重すぎて困るために、

いや間に何ボタン押すプレイヤーを想定してるんだよw
普通プレイでは入処理は1フレームごとにしか「必要ない」だけ
👍
高評価
0
👎
低評価
0
18 ななしのよっしん
2021/11/13(土) 17:02:07 ID: 3vc0jiYfoM
スーパーマリオ64はそもそも30fpsなので、マリオと地形のコリジョン判定は毎f行われている
それどころかこのコリジョンは直前の判定位置からの移動量を4分割してそれぞれに判定をしている

出典はどこだったっけな…
👍
高評価
0
👎
低評価
0