Skip to content

第02回 ゲームループの理解と実装

前回: 第01回 オリエンテーションとベースコード確認 / 次回: 第03回 画像表示の導入とエラー確認

前回の振り返り

  • 分割済みベースコードの構成を確認しました
  • mainGameStage の責務を区別しました
  • 基本動作(移動、ジャンプ、床衝突、ゴール判定)を確認しました

今回の目的

ゲームループの順序を実装と比較で理解する

  • 入力、更新、判定、状態更新、描画の順序を確認する
  • 処理順を変えたときの挙動差を比較する
  • 状態遷移の基本形を実装する

今回の授業内容

  • ゲームループの役割
  • 1フレーム処理順の整理
  • 順序を可視化するデバッグ表示
  • 順序変更による挙動比較
  • 最小ステートの導入

ゲームループの基本

毎フレーム同じ流れを回す

  1. 入力を読む
  2. 位置や速度を更新する
  3. 当たり判定を行う
  4. 状態を更新する
  5. 描画する

この順序が崩れると、見た目と判定の不一致が起きやすくなります。

実習1: 可視化

  • 現在フレーム、速度、接地状態、ゲーム状態を表示する
  • どの場面で値が変化するかを確認する
  • 変更前後の画面を比較できる状態にする

実習2: 順序比較

  • 更新と判定の順序を一部入れ替えて挙動を確認する
  • どの不具合が起きたかを短く記録する
  • 元の順序に戻して再確認する

実習3: 最小ステート

状態遷移の入口を作る

  • TitlePlayingGameClearGameOver を定義する
  • 状態ごとに受け付ける入力を分ける
  • リトライ時に初期化する値を整理する

つまずきやすい点

  • 状態更新より先に描画してしまう
  • 同じフレームで複数回遷移してしまう
  • リトライ後に速度や位置が初期化されない
  • デバッグ表示が古い値を参照している

最低到達

  • 処理順を口頭で説明できる
  • 1つ以上の順序比較を実行して差を確認できる
  • 最小ステートを導入して、タイトル開始とリトライを動かせる

次回は

次回は画像の読み込みを追加し、失敗時に停止する初期化処理を実装します