ホームへ戻る

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 -