プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
中級ルール用の索敵範囲02
開発中のメイン画面
味方部隊の視界に入った部隊のみ表示されるようになった。遭遇時の演出もおまけで追加された。



◎索敵範囲

中級ルールでは、味方部隊の視界に入った敵味方部隊を表示します。つまり

・味方部隊
・味方部隊の視界
・味方部隊の近くにいる敵部隊

を表示します。敵の視界や味方部隊から遠い敵部隊は表示しません。


ここで検討課題が2つあります。

・味方部隊の近くの敵の判別方法

・特定の部隊のみ表示する方法



◎判別方法

XNAにはモデルの当たり判定(衝突判定)を処理する機能があります。使ったことがないのでよくわからないのですが、球型の当たり判定なら多分簡単でしょうから、これを利用するとスマートにできるかもしれません。

もっと原始的な方法もあります。全てのユニットの互いの距離を総当たりでチェックする手法です。
こう書くと時間がかかりそうな印象を受けるかもしれませんが、前述の方法も内部では同じようなことをしてると思います。むしろそちらの方が負荷が高かったりして??

どちらにすべきか迷ったので、ネットを参照すると、こちらに両方の手法が書かれた記事がありました。

えーと…どちらでも大差無いようですね(^^;
とりあえず後者でやります。



◎特定部隊のみ表示する方法

普通に個別表示していた場合は、当たり判定の結果をフラグに持たせて描き分ければ問題無いでしょう。しかしユニットはシェーダインスタンスで一括描画しているので、描画を個別にオン/オフできません。対処法案として下記2案を考えました。

A案:当たり判定の結果をふまえた描画ユニットリストを
   毎フレーム再構築する

B案:定数レジスタにフラグを持たせて
   シェーダ側で描き分ける
   (フラグがオフの時は透明色を描画する)

中級ルールでは表示すべき敵部隊数が少ないので、A案の方が早そうな印象を受けるかもしれません。しかしシェーダインスタンスのDraw回数が減るわけではないので、処理が増えるA案の方が不利かもしれません。でも、シェーダにifを追加すると頂点毎に判定するわけだし…ブツブツ。

正月ボケの頭でしばらく悩んでいたのですが、ようやく良い案が浮かびました。

B案改:インスタンス情報を定数レジスタに格納する際に、
    非表示ユニットの座標を地面の下にずらす

これならシンプルで負荷も増えません。



◎実装

実装しました。

中級ルール用の索敵範囲01

プレイヤーを魏としたので、関羽、糜芳、呂蒙などの部隊は表示されなくなりました。魏のユニットが近付くと表示され、離れると非表示となるので、衝突判定や非表示のプログラムはうまく機能したようです。

しかし呉の馬忠が表示されています。しかも旗手だけ表示されてないようですが…??



◎デバッグ

呉や蜀のユニットが(近くに魏がいなくても)表示されっぱなしになるものが、まれに存在します。

既存バグかも01   既存バグかも02

デバッグのため、非表示の際に上半身が残るようにしたら、上図のようなケースが存在しました。同じ部隊の中で、表示状態と非表示状態の兵士が混在しています。

表示/非表示の制御は部隊単位で行っているので、部隊編成リストか各個体の部隊参照インデックスがおかしいのかな?…中身を全て出力して照合したのですが、問題無さそうです。

あと考えられるのは、シェーダインスタンス描画時にリストを表示モーション番号順に再構築する際にリンクが切れたとか…こちらの中身も全て出力して前リストと照合したのですが、問題無さそうです。

いや、この段階で正しいなら表示がおかしくならないはずですが…おや?

…結局既存バグじゃなくて、新規追加コードの単純ミスでした(><)



◎修正

単純ミスを修正し、おまけで敵部隊遭遇時のエフェクトも付けました。



エフェクトや演出は最終段階で丁寧に作り直すつもりですが、今はこんなもんで十分かとw

ちなみに、ジャーンジャーンの文字は横山先生の漫画から拝借させて頂きました。厳密に言うと著作権違反ですが、これだけで文句言う人はいないよね?(^^;



◎次回予告

実装作業よりも、実装前の検討/実装後のデバッグ/おまけの演出の方が時間かかってしまいました。まぁプログラムなんてそんなもんですよね?w

次回はビューポート分割表示のサンプルプログラムを作成する予定です。

スポンサーサイト

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

コメント

コメントの投稿


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

トラックバック


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



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