01.BaseCross64の全体の構成

 この章の目的はBaseCross64の構造と使い方を考察、レポートするものです。
 マニュアルとはちょっと違う形で考えてます。といいますのは、BaseCross64はこれまでもそうであったように、常にライブラリが修正され、機能追加されるゲームミドルウェアです。
 そのためマニュアルというFixされたものとは違い現時点のという意味合いが強いと考えています。
 ですから、このドキュメントも常に修正される可能性があるものと考えていただければと思います。
 また、すべての機能を網羅できるものではありません。中にはほとんど実行される可能性は低いが実装されいる機能もあります。こういったものについてはこのドキュメントに記述されない場合も多々あります。
 これらのあまり使われない機能は、将来的にはライブラリから削除されるか、もしくは形を変えて再実装される可能性があります。
 また、この章の内容は基本的にサンプルはありませんので、コードを確認する場合はライブラリディレクトリ内を各自参照してください。サンプルがあったほうが理解しやすいと思われる項に関しては、サンプルを用意し、その旨記述いたします。

BaseCross64の全体の構成

 さて、この項のテーマはBaseCross64の構造です。ここでBaseCross64というのはBaseCross64フルバージョンのことです。

 BaseCross64の基本的なクラス階層は以下のようになってます。

 

図0001a

 


 この階層図は、一番ざっくりとした階層図です。
 まず、BaseCross64の一番上位に位置しているクラスがAppクラスとなります。このクラスはシングルトンとして、WinMain.cpp内で作成されます。
 作成するにはApp::CreateApp()関数を使用します。
 この関数を実行した後は、ゲーム中どこからでもApp::GetApp()関数でシングルトンのインスタンスにアクセスできます。
 Appクラスに含まれるDeviceResourceクラス描画用のライブラリです。これはDx11、Dx12に対応するクラスです。ここでは詳しくは述べません。

 同様にAppクラスに含まれるSceneInterfaceクラスは、シーンの親クラスとなります。以下のような階層を持ってます。

 

図0001b

 

 シンプルバージョンでは、このSceneInterfaceクラスの派生クラスとしてシーンもしくはステージなどを作成します。その場合、必ずしもSceneStageなどの名前も必要ではありません。ゲーム盤を表現できるものであれば自分で決められます。
 フルバージョンはいわばライブラリ作成の1つの形であり、その例としてSceneBaseおよびStageという階層を使っているというわけです。
 フルバージョンに含まれるクラスLibsフィルタのSharedLib内にまとめられています。また描画系のフルバージョンライブラリは、Dx11であればDx11FulLibフィルタにまとめてあります。
 シングルトンであるAppクラス1つだけ含まれるのがSceneInterfaceクラス(のポインタ)です。フルバージョンではここにSceneのポインタが代入されます。
 ここでポインタというのはすべてスマートポインタです。BaseCross64C++11のコードです。ですからC言語由来のポインタを使うことはほとんどありません。C言語由来のポインタの場合は生ポインタと表現します。

 このように唯一のAppクラスに含まれる一つのSceneですから、当然Sceneのインスタンスも一つになります。Appクラスのようにシングルトンではありませんが、ほかにインスタンスを作成するメリットはありません。
 SceneBaseクラスSceneの親クラスです。この中にアクティブなステージ1つだけ含むことができます。
 ステージStageクラスの派生クラスとして作成します。そうするとシーンに含めることができるようになります。

 この項では、全体の構成を説明しました。次項ではStageクラスについて説明します。