2010年10月2日土曜日

Android版「Army & Maiden」その3 ソースの切り分け

 「Army & Maiden」ですが、PCとAndroidのコンパチだけでなく、今後の開発の効率化のために、ソースコードの切り分けを行っていました。

 以下、複数のプロジェクトに分けた、プログラムの構成図です。括弧内は、ソースコードの分量です。ソースコードの比率が分かると思います(まだファイルの整理前なので、何割か変わる可能性がありますが)。

●CroCroWrp(242 KB)
  ┣●CroCroWrpPc(94.2 KB)
  ┃  ┣━━●SimWarPc(2.88 KB)
  ┣●SimWar(318 KB)
  ┃  ┣━━●SimWarAnd(1.15 KB)
  ┗●CroCroWrpAnd(207 KB)

 それぞれ、ビルドに親プロジェクトを含めることで、プロジェクトを作成します。

 以下、それぞれのプロジェクトの解説です。



●CroCroWrp

 PC、Androidコンパチにするために、環境依存部分を全てラップクラスに入れて、ゲーム開発の基本システムを構成したプロジェクトです。

 以下のような内容のクラスが入っています。

○ラップ関係

・WrpDw(描画処理をラップするクラス)
・WrpEnv(各種環境依存をラップするクラス)
・WrpFile(ファイルのデフォルト入出力先やリソース取得をラップするクラス)
・WrpNet(通信処理をラップするクラス)
・WrpSnd(音声処理をラップするクラス)

○ゲーム関係

・ゲーム・クラス
・変数管理クラス(変数の自動保存、読み込みのサポート)
・クリッカブル・オブジェクト群
  ・ボタン、文字ボタン、単純描画、ドラッグオブジェクト、タブ、スクリプト描画。
  ・ダイアログ・パーツ(タイトル、リストボタン、イメージリストボタン、スライドバー)。
  ・ライトボックス。
  (各オブジェクトは、画面スクロールによる絶対位置、相対位置の切り替え可能)
  (各オブジェクトは継承することで、ゲームのユニットなどを作成可能)
・各種管理クラス
  ・キャンバスの管理。
  ・レイアウトの管理。
  ・設定の管理。
  ・言語情報の管理。
  ・シーンの管理。
  ・サウンドの管理(BGM切り替えや、効果音の管理)。
・ユーティリティ・クラス。
  ・描画ユーティリティ。
  ・ファイル・マスク化ユーティリティ。
  ・ソート・ユーティリティ。
  ・各種ツール・ユーティリティ。



●CroCroWrpPc

 ラップ部分のPC部分クラスです。

 ウィンドウの初期化と構築も行う。ウィンドウ初期化時に、環境依存部分のラップ・クラスの登録を行います。



●CroCroWrpAnd

 ラップ部分のAndroid部分クラスです。

 Activity(PCのウィンドウに相当)の初期化と構築も行う。ウィンドウ初期化時に、環境依存部分のラップ・クラスの登録を行います。



●SimWar

 ゲームの本体です。「CroCroWrp」の「AppLoop」クラスを継承して初期化し、「Scn」クラスを継承したクラスを記述していくことで、ゲームを作成します。

 環境依存部分は全てラップされているので、デバイスに依存しないゲームのプログラムとなります。

 このゲーム部分を差し替えることで、他のPCとAndroidコンパチのゲームを作成できます。



●SimWarPc

 「CroCroWrp」「CroCroWrpPc」「SimWar」をビルド時にリンクすることで、ゲームを作成します。

 このプログラムは、統合目的のためのものなので、ほとんどソースはありません。



●SimWarAnd

 「CroCroWrp」「CroCroWrpAnd」「SimWar」をビルド時にリンクすることで、ゲームを作成します。

 このプログラムも、統合目的のためのものなので、ほとんどソースはありません。



 というわけで、現時点での「SimWarAnd」プロジェクトのソースコードを、以下に掲載します。

 極限まで簡素化していることが分かると思います。実質10行以下です。

 これで、Androidアプリが1本完成します。



package com.crocro.simWar.dvc.and;

import com.crocro.simWar.app.AppLoopSimWar;

public class AppActivity extends com.crocro.wrp.dvc.and.AppActivity {
  @Override
  public void initRes() {
    gR = (Object)new R();     // リソース・アクセス用変数
    gAL = new AppLoopSimWar();  // AppLoopの初期化
  }
}

0 件のコメント:

コメントを投稿