プロフィール

Na-7

Author:Na-7
SE(システムエンジニア)として約15年間システム系ソフト会社を勤めあげ、2008年3月退社。現在、ゲーム制作会社設立を目指して活動中。


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
部隊一覧02
開発中の部隊一覧画面
部隊の現状が一覧形式で確認できるようになった。



◎ユニットリストクラスの作成

現状は、ユニットマネージャクラスが部隊リストの管理、描画制御等をしています。これに部隊一覧画面のコードを追加すると、コード量が多すぎてメンテナンス効率が悪そうです。

こんな時は一般的にどう対処しているのでしょうか?
ネームスペースで管理することは可能ですが、ちょっと違う気がするなぁ…。

とりあえず、ユニットリストクラスを新設し、機能を分割して管理します。

○ユニットマネージャクラス
・ユニットの入力制御(Update)
・ユニットの描画制御(Draw)

○ユニットリストクラス
・部隊リスト(戦闘部隊クラスインスタンス)の管理
・部隊一覧画面の表示/制御

ユニットマネージャクラスは、ユニットリストクラスのヘルパーメソッドのような機能イメージです。

但し、ユニットマネージャクラスはゲームコンポーネントであり、先に呼び出されて、ユニットリストクラスのインスタンスを作成管理します。なので、フロー的にはユニットマネージャクラスが上位です。


ところで、このやり方はオブジェクト志向のカプセル化に反する気がするのですが…でも、ヘルパーメソッドを別モジュールに配置したサンプルを見たことがあるので、これはこれでアリかな?



◎移動タイプ

開発中に、気になることがありました。

部隊一覧01

移動タイプがHorseとなっています。旗手や槍兵が混在するのに…バグ??

…いや、仕様でした。馬は森/川/高地等に侵入不可とする予定なので、『移動タイプ‘騎馬’は‘歩兵’よりも劣る』という概念で馬混在時の移動タイプは‘騎馬’としたのでした。

しかし部隊一覧で表示すると、不自然で誤解されそうです。移動タイプは非表示にしましょう。



◎ソートの安定化

動作テストをしていたら、ソートが安定でないことに気付きました。う~んどうしたものか…。

安定ソートの基本ロジックは手元にありますが、ソート中の入れ替え発生の度に、部隊インスタンスの値を毎回入れ替えるのは非効率です。参照のみ入れ替えできれば効率が良いのですが、Generic.ListにはSwapメソッドが無いので、駄目っぽいですね。

いっそのこと、部隊リストデータへのアクセスを全てインデックス方式にしてしまえば一番効率が良いのでしょうが、そこまでする必要があるとは思えません。

そこで、以下の方式で対処することにしました。

1.ソート対象項目の値をワーク配列にコピー
2.ワーク配列の値を安定ソート
3.ワーク配列の順序で部隊リストを再構築

これなら、データの入れ替えは全件2回分で、速度もソートも安定します。


…後で気付いたのですが、データ件数が200件以下なので、ソート速度は気にするレベルではなかったかもしれません。まぁいいかw



◎実装

F6キーで武将一覧、F7キーで部隊一覧を表示するようにしました(暫定仕様)。また、本隊と支隊を区別し、メイン画面では本隊のみ部隊ラベルに顔画像を表示するなど、細かい改修も加えました。

部隊一覧02   部隊一覧03

ソートが安定し、段階ソートが可能になりました。
(兵数でソートしてから部隊名でソートする、など)



◎次回予告

3月になったので、次回は「2月の総括と3月の目標」です。

スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー)



copyright © ゲーム制作の舞台裏 all rights reserved.Powered by FC2ブログ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。