プロフィール

Na-7

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


アクセスカウンター


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


DATE: CATEGORY:スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
DATE: CATEGORY:三国志軍記開発
エースター法による移動経路実装01
開発中のメイン画面
エースターによって導き出した移動経路を視覚的に表示した。川の迂回経路が確認できる。



別件トラブル対応のため、しばらくお休みしてましたが、そちらの見通しがついたので、開発を再開します。


◎移動コストの準備

今回はメインプログラムにエースターを組み込んで、部隊の移動処理を実装します。

まずはじめに、移動タイプ別の移動コストデータを準備しましょう。

移動コストデータ(移動タイプ:騎馬)(PDF)

これは騎馬タイプの移動コストです。縦軸が移動元の地形、横軸が移動先の地形です。

移動コストは移動先の地形のみ影響するゲームが多いのですが、三国志軍記では、移動元の地形も影響します。ちなみに、移動コストが最も軽い(早い)のは「道→道」のパターンです。



◎ノード&エッジデータのメモリ展開

ノードやエッジデータは、予めメモリに展開しておくことにしました。プレイ中に動的に取得することも可能ですが、

・マップの端はエッジ数が異なる
・移動タイプによって侵入不可地形が異なる
 (エッジ数が異なる)

経路探索ループ内で、上記を毎回チェックするのはパフォーマンス上好ましくないので、メモリよりパフォーマンスを重視することにしたわけです。(ちなみに、メモリ使用量を計算したら20MB程度でした)

25万件のノード&エッジデータをメモリに展開すると、起動が数秒遅くなりました。インスタンスの作成に時間かかるようです。起動数秒なら許容範囲内ですが、ゲーム中の速度はどうでしょうか?



◎移動経路の記憶

経路を毎フレーム探索すると負荷が高すぎるので、部隊毎に移動経路を記憶して、何か契機が訪れない限り経路に沿って進むこととします。

移動経路は最初List型を使用したのですが、順番を保全する必要があるので配列で組み直しました。



◎製造

一通りコーディングしたのですが、オーバーフローでエラーになったりフリーズしたりでまともに動きません。

目的地を近くとし、移動を1ユニットに限定すると、(向きのアニメが異常ですが)とりあえず別の地点に移動し、停止しました。

向きのアニメは画像番号の問題かもしれないので後で調べるとして、移動経路や移動先がおかしい点が問題です。

・移動先が真上なのに斜めルートを選択することがある
 →斜めのコストが上下左右と等価であるため?
  →コスト計算をint型→float型とし、
   斜めのコストを1.42倍とすべき?
 →結局、道に沿っていただけらしい?

・移動方向がおかしい
 →向きの計算において、XNAは右手座標系であるため
  Z座標を反転する必要がある
 →Z座標を反転する(-1を掛ける)ことにより解決

・川を越えるケースがある?
 →セル(マス目)の左上端に沿って移動するので、
  見た目がズレているだけ?
  →ズレに関しては座標を補正すれば問題無い



◎ルートの視覚表示

ルートを視覚的に表示して、ルートに問題が無いか一目で確認できるようにしましょう。

エースター法による移動経路実装01

赤矢印はエースターが導き出した経路です。曹仁部隊は経路に沿って川を迂回し目的地に到達します。^^


エースター法による移動経路実装02

移動部隊を複数に増やすと、経路はそれぞれきちんと作成されました。しかし曹仁以外の部隊は移動しません(泣)



◎今後の課題

・曹仁以外の部隊が動かない
 →座標の更新処理は行われている
  (どこかで元に戻っている?)

・経路探索処理が非常に重い
 →部隊数が多く遠距離になるとさらに長くなる
 →処理中は画面が更新されずフリーズ状態となる
 →目的地までのルートは記憶しているので、一度動き出すと負荷はかからない

他の部隊が動かない問題に関しては、近日中に解決できる自信があります。しかし処理が重い問題は、結構ヘビーかもしれません。うむむ…。



◎次回予告

今月も半分過ぎてしまいましたが(汗)、まだ先月の総括をしてなかったので、次回は「5月の反省と6月の目標」です(しばらく休んだ理由も記述します)。

スポンサーサイト

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

コメント

コメントの投稿


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

トラックバック


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



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