ソース分割の考え方

この章で使用するプログラムおよび画像ファイル(解凍すること)

これまでで、基本的なプログラムは作成できた。しかし、WinMain.cppの中にすべての関数が存在するため、非常に巨大なソースになってしまった。このプログラムを元に何かゲームを作ることを考えたとき、今よりもさらに巨大化し、メンテナンスが相当大変になることは容易に想像できる。ここでは、基本プログラムを処理単位ごとにソース分割を行い、開発&メンテナンスしやすいプログラムを作成する方法を学ぶ。

考え方

現在のWinMain.cppにはすべての関数が入っている。役割別に考えると、どのようになるだろうか。

■どんなゲームでも大体共通の関数

1.Windows基本関数(WinMain、WinProc、InitApp、UpdateFrame)
ウィンドウの生成と表示、ゲームループ内で実行する関数の振り分けを行う。UpdateFrame関数以外は更新(修正)することはほとんどない。
2.DirectX Graphics関係
ウィンドウモードの設定と、Direct3Dオブジェクトの生成・初期化・開放を行う。一度作成してしまえばほとんど変更がない。
3.DirectAudio関係
音を鳴らす処理。一度作成してしまえばほとんど変更がない。
4.DirectInput関係
入力デバイスの処理。使用可能なキーを変更しない限り変更しなくてよい。
5.DirectShow関係
ムービーを再生する処理。一度作成してしまえばほとんど変更がない。

■ゲームによってまったく異なる関数

6.スタート・フレーム
スタート画面の表示を行う。作成するゲームによっていろいろ変わる。
7.ゲーム・フレーム
ゲーム画面の表示を行う。作成するゲームによっていろいろ変わる。
8.ゲームクリア/ゲームオーバー・フレーム
ゲームオーバーやクリア画面を表示させる処理。作成するゲームに応じていろいろ変わる。
その他の状態
その他、ゲームによってさまざまなシーンを用意する場合がある。

つまり、頻繁に更新しなければならない関数は固定されていて、それ以外の関数を更新することはあまりないことが分かる。それならば、頻繁に更新するものと更新されないものをソース分割し、見やすいプログラムは作れないだろうか?
ということで、次ページより、WinMain.cpp内の関数を機能別に別のソースに分割する方法を解説する。



NEXT(DirectX Graphics処理分割)