これまでで、基本的なプログラムは作成できた。しかし、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内の関数を機能別に別のソースに分割する方法を解説する。