ゲーム開発入門① ゲームループの仕組みを知ろう
入力、状態の更新、描画を繰り返すゲームループの役割を、短い疑似コードでやさしく解説します。
ゲームの画面では、キャラクターや敵が絶えず動いているように見えます。
実際には、「入力を読む」「状態を変える」「画面に描く」という短い処理を何度も繰り返しています。この繰り返しがゲームループです。
関連する言葉はゲーム開発の基本用語にもまとめています。
1回分の処理をフレームと呼ぶ
ゲームループを1回実行して作られる画面をフレームと呼びます。
ゲームが動いている間:
入力を読む
ゲームの状態を更新する
画面を描く
この順番を素早く繰り返すことで、動いているように見えます。
入力を読む
キーボード、マウス、ゲームパッドなどの操作を調べます。
もし右キーが押されていたら:
右へ進む予定にする
入力を読んだ段階では、すぐに描画するのではなく、まずキャラクターの位置やゲームの状態を変更します。
状態を更新する
状態は、その瞬間のゲームを表すデータです。プレイヤーの座標、残り時間、体力、得点などが含まれます。
playerX = playerX + speed
remainingTime = remainingTime - elapsedTime
elapsedTimeは前のフレームから経過した時間です。環境によってはdeltaTimeとも呼ばれます。経過時間を使うと、処理速度が異なる端末でも近い速さで動かしやすくなります。
最後に画面へ描く
更新後の状態を使って、背景、キャラクター、文字などを描きます。
背景を描く
playerXの位置にプレイヤーを描く
残り時間を描く
描画処理の中で得点を増やすと、画面の表示回数によって得点が変わってしまいます。ゲームのルールは更新処理、見せ方は描画処理と分けると整理しやすくなります。
FPSは1秒間のフレーム数
FPSはframes per secondの略で、1秒間に画面を何回更新したかを示します。
FPSが高ければ必ず良いとは限りません。動きの滑らかさ、端末への負荷、電力消費のバランスを考えます。また、FPSと一人称視点のゲームジャンルは同じ略語なので、文脈で区別します。
練習:正しい順番へ並べる
次の処理を、ゲームループで行う順番に並べてください。
- プレイヤーを描く
- 左キーが押されたか調べる
- プレイヤーの座標を変える
模範解答
- 左キーが押されたか調べる
- プレイヤーの座標を変える
- プレイヤーを描く
解説
入力、更新、描画の順です。新しい座標を計算してから描くため、操作に応じた位置へプレイヤーが表示されます。
次はゲーム開発入門② 座標と当たり判定を理解しようで、位置と接触の調べ方を学びます。