




ホームへ戻る
s2.2 ゲームプログラムの構成

ここでは、実際にコーディングに入る前にゲームプログラムの設計について少しお話します。
ゲームプログラミングの館でも紹介しているように、ゲームプログラムは、「更新」「描画」をひたすら繰り返す構造になっています。

これをプログラムで表現するなら

大まかに言えばこんな感じ。
このUpdateとDrawの中では存在するオブジェクトの数だけ処理が行われています。

ここで、ゲームが大規模になるほど、
・敵の更新
・自機の更新
・背景の更新
・障害物の更新
・エフェクトの更新
・・・・(略
と更新しなければならないことが沢山増えていきます。
この更新処理ごとに別々にUpdateメソッドを記述するのは大変です。
しかし、更新処理をかけるクラス(ゲームを統括しているゲームマネージャークラス)は、
それが何の更新であるかを知る必要が無い場合が多いです。
そこで、更新をかけるクラス(ゲームマネージャークラス)には
「更新しないといけないもの」という抽象的な形で各オブジェクトを持たせておき、
端からリストに追加して、ループで回して一気に更新させると簡単になります。
この抽象的な仕事をゲームプログラムに限らず「タスク」と表現します。

そうすれば、更新処理や描画処理をするゲームマネージャークラスは、個別に処理をかける必要が無く、スマートに処理が行えるのです。
これを実現するには、「Task」を基底クラスとし、必要なクラスを全てTaskから派生させます。

更新処理を行うゲームマネージャークラスは自機や敵といったオブジェクトをTaskリストに追加し、
Taskリストの中身を見て更新処理や描画処理をすることになります。
つまり、自機や敵と言ったオブジェクトはゲームマネージャークラスが持っているのですが、

直接持っているのはその上の抽象クラスです。

全体としては、IrairaBarActivityがGameSurfaceViewを生成し、GameSurfaceViewがGameMgrを生成するので以下のような構図になります。

ただ、IrairaBarActivityは作ったら後は何もしませんし、
GameSurfaceViewはGameMgrを呼び出しているだけですから、次の章から出てくるGameMgr(ゲームマネージャー)クラス以下に注目して下さい。
ではこの考え方に基づいて本アプリを作っていきます。
→分からないことがあれば掲示板で質問して下さい

Portions of this page are modifications
based on work created and shared by Google and used according to terms
described in the Creative Commons 3.0 Attribution License.
- Remical Soft -