ゲームループ

2021年1月14日

この記事では、「ゲームループ」について説明します。

ゲームループとは

「ゲームの流れを制御するループ( 繰り返し処理 )」です。「メインループ」と呼ばれることもあります。このループは、ゲームを終了しない限り続行します。

ループ内の処理

ループ内の処理は主に

  • 入力処理
  • 更新処理
  • 描画処理
  • 待機処理

の4つに分割できます。

入力処理

キーボードやコントローラ( ゲームパッド )などの入力機器の状態を取得し、入力の情報を更新します。

この処理はループの最初に行います。

更新処理

ゲーム内にあるオブジェクトの位置や状態などを更新します。

描画処理

「更新処理」で得た情報を基にゲーム内のオブジェクトを描画します。

待機処理

「各フレーム( ゲームループ1回に当たる時間の間隔 )をディスプレイが更新される周期( 垂直同期 )に合わせるため」、または「ゲームの処理でCPUを独占させないため」に処理を待機します。

疑似コード

ゲームループの疑似コードを書くと下記のような形になります。

void main() 
{
    Initialize();

    // ゲームループ
    while ( !is_finished_game ) 
    {
        UpdateInputState();
        UpdateGame();
        DrawGame();
        WaitUntilNextFrame();
    }

    Finalize();
}

参考書籍

  • ゲームプログラミングC++
  • ゲームエンジンアーキテクチャ 第2版
  • ゲームを動かす技術と発想 R