ゲームでよく使われる「フレーム」って何のことを指してるの?

ゲームでよく使われる「フレーム」って何のことを指してるの?

自分でもゲームを作っていて「FPSが維持できてないなー」なんてパフォーマンスを気にしているのですが、このFPSのFってなんでフレームって呼ばれてるんですかね?

Frames Per Secondのようにフレーム毎秒だってのはいいんですけど、フレームってなんぞ?

そう言えば考えたこともなく、みんなが使っているから使おう! くらいの勢いだったので、改めて意味をおさらいしてみたい。

ひとまず辞書を出発点に、なんでフレームと呼ばれるようになったのかを想像していくのが今回の試み。

 

辞書にはたくさんの意味が

frameの意味をgoo辞書で引いてみると、出るわ出るわ、名詞としての意味だけで18個もあるじゃないの。

最初に出てくるのは、窓枠とか、骨組みとか、メガネのフレームとか。フレームって言葉自体もう日本語として定着しているような気がします。

映像関連の意味だと、映画などのフィルムの1コマ、動画像の1コマあたりがゲームにも使われる用法かな。

流石にゲーム画面の1コマって意味では辞書に載っていないみたい。

PCなりゲーム機なりの画面に表示することを考えれば、動画像の1コマと捉えるのが一番近いかな。

ポイントは枠

映画のフィルムでも1コマをフレームと言ってるけれど、ポイントは枠の存在。

フレームのイメージ
フレームのイメージ

 

写真立てのことをフォトフレームというだけあって、画像とそれ以外のものを隔てる境目の役割をしているのがフレームです。

映画のフィルムなら、黒い区切り線が枠となって、画像同士を隔てています。

じゃあゲームの場合は?

画面に表示される1枚の画像を他から隔てているのは、ディスプレイの縁でしょうか。いわゆるベゼル。

他の画像との隔たりと言えば、時間的な分断もそうかも。

60FPSなら1秒間に60枚も同じディスプレイに表示されますもんね。時間でも区切られているから、時間の枠をフレームと呼ぶのも納得。

ゲームは画像生成装置

ゲームでは時間枠=フレーム毎に画像を表示しますが、ざっくり言っちゃえば、ゲームって動的な画像生成装置ですよね。

ゲーム画面に表示する画像全てが事前に用意されたものではなくて、エレメントの位置、向き、大きさが状況に応じて変わりつつ、最終的に1枚の画像になるんですもの。

状況の変化は、事前に決められた動きの他に、プレイヤーの操作による変化もあります。

画面に表示された内容を元に、プレイヤーがコントローラーなり画面タップなりでプログラムと対話し、その結果を受けてまた画像を更新するというサイクルです。

その画像をフレームと呼んでいて、例えば60FPSなら1秒間に60回画像が動的に生成されます。

プレイヤーとの対話も重要なポイントですね。よりカッコつけて言えば、ゲームはインタラクティブな動的画像生成装置でしょうか。全部漢字にすれば、対話型動的画像生成装置。もはや何がなんだか。

英語を混ぜた方がニュアンスが伝わりやすいってのも不思議よね。

処理速度の基準にもなる

フレームは処理速度の基準にもなっていて、例えば60FPSのゲームなら1フレームあたり0.01666…秒。この時間制限の中で処理を終わらせて画面に表示する画像を更新しないといけません。

ここに間に合えばフレームレートが維持されますし、処理時間がはみ出せばコマ落ちとか処理落ちなんて呼ばれます。

上でもちょっと触れましたが、時間で区切った枠を維持できているかどうかは処理速度の基準になりそうです。

パフォーマンスチューニングでは必ずと言っていいほどFPSに注目しますもんね。処理落ちがあるとプレイヤーへのストレス要因にもなりますし。

ゲーム開始直後とか、シーン読み込み直後の処理落ちは多少目を瞑れても、操作中に処理落ちしたら……皆まで言わんでもいいか。

処理速度の基準を測るための枠としてもフレームは使われています。

まとめ

ふと思い立った「フレームって何者?」という疑問から、ゲームで使われる意味合いを改めて考えてみました。

映画や写真では空間的な意味合いで他の画像と隔てる用法が主ですが、ゲームにおいては時間的な意味合いで隔てる意味合いが強そうです。

時間的な意味合いがあるから、処理時間の基準としても使えるのがフレームです。

アセット作ってます!

CTA-IMAGE

Unityでの開発に役立つアセットを作っています。

3DダンジョンRPGを開発するスピードを200%加速するAssetや、ファンタジーRPGのダンジョンを彩るパーツを取り揃えています。

特に3DダンジョンRPGのゲームを1から作るのは結構時間がかかります。ダンジョン部分の作成はこうしたアセットを使って、開発をブーストさせてみませんか?