Appearance
第02回 ゲームループの理解と実装
前回: 第01回 オリエンテーションとベースコード確認 / 次回: 第03回 画像表示の導入とエラー確認
前回の振り返り
- 分割済みベースコードの構成を確認しました
main、Game、Stageの責務を区別しました- 基本動作(移動、ジャンプ、床衝突、ゴール判定)を確認しました
今回の目的
ゲームループの順序を実装と比較で理解する
- 入力、更新、判定、状態更新、描画の順序を確認する
- 処理順を変えたときの挙動差を比較する
- 状態遷移の基本形を実装する
今回の授業内容
- ゲームループの役割
- 1フレーム処理順の整理
- 順序を可視化するデバッグ表示
- 順序変更による挙動比較
- 最小ステートの導入
ゲームループの基本
毎フレーム同じ流れを回す
- 入力を読む
- 位置や速度を更新する
- 当たり判定を行う
- 状態を更新する
- 描画する
この順序が崩れると、見た目と判定の不一致が起きやすくなります。
実習1: 可視化
- 現在フレーム、速度、接地状態、ゲーム状態を表示する
- どの場面で値が変化するかを確認する
- 変更前後の画面を比較できる状態にする
実習2: 順序比較
- 更新と判定の順序を一部入れ替えて挙動を確認する
- どの不具合が起きたかを短く記録する
- 元の順序に戻して再確認する
実習3: 最小ステート
状態遷移の入口を作る
Title、Playing、GameClear、GameOverを定義する- 状態ごとに受け付ける入力を分ける
- リトライ時に初期化する値を整理する
つまずきやすい点
- 状態更新より先に描画してしまう
- 同じフレームで複数回遷移してしまう
- リトライ後に速度や位置が初期化されない
- デバッグ表示が古い値を参照している
最低到達
- 処理順を口頭で説明できる
- 1つ以上の順序比較を実行して差を確認できる
- 最小ステートを導入して、タイトル開始とリトライを動かせる
次回は
次回は画像の読み込みを追加し、失敗時に停止する初期化処理を実装します