見出し画像

ダンジョンでお花摘みさせて!!"DynamicNavigationを自作した" #11

こんにちは。やーぺです。

 こちらは「ダンジョンでお花摘みなんか許しません!!」の二次創作、「ダンジョンでお花摘みさせて!」のスコアアタックゲーム開発記録です。(フリーウェア公開予定)

原作はこちら

体験版も公開中です。(Booth以外のアップロード先も検討中)

前回、Astarのシステムを作るって結果になりましたね。

今回の内容はAstarのその後とDynamicNavigation機能です。

Astarのその後

Astarのシステムについては前回お話ししたので省略します。そして、さっそく作ったものがこちら。

問題なく動きますね。では本番環境に乗せた結果は・・・

非常に重い

Navigation機能の比じゃないぐらい重い。(USBが破損してしまったので画像なしです・・・。すみません・・・。)

アルゴリズムも問題なし。プログラムも問題なし。なんでこんな動作が重いんだって原因を探したのですが、単純にAstar自体の負荷が高いことが分かりました。(このゲームに乗せるときの話です)

Dane Perry Svendsen様の動画です。こちらの動画ではいろんな経路探索アルゴリズムの過程を可視化しています。

見るとわかるのですが、別にAstarもそこまで軽い処理というわけではないんですよね。多分・・・。

これでは使い物にならない・・・。しょうがない・・・前から考えていた代替え案を使おう。


DynamicNavigation機能

こちらは私が作ったNavigation機能を無理やり動的にする機能です。
物理的に衝突可能な物体を検知して、NavigationMapに書き込む方法です。前回もやったのですが、Physics2DDirectSpaceState機能を覚えたので処理の軽減が可能になりました。

方針は決まったのでササッと作りました。こちらです。

なんだかカクつきます・・・。処理が軽くなったとはいえ、0.5秒ぐらいの感覚でMapを更新するのは無理があるのかもしれません。ではオブジェクトが追加されたり削除された時にマップを更新するのはどうでしょうか?やってみました。

う・・・動かない!?いや、正確には動いています。これはツボを壊したときとアイテムが出現したときで最低でも二回、更新が起こっています。それでここまで動作が不安定になるのはダメだ・・・没ですね・・・。


仕方がないのでオブジェクトを静的にすることを前提としたシステムにします。やはり静的にするということは動く床や動く壁を作れないということですね・・・。くやしみ。

そうしてできたのがこちら。

マップが若干半透明になっているのはDynamicNavigationTileMapを見えるようにしているためです。(未公開にしようとした完成済み死霊ちゃんが出てました)


今週はこんな感じです。
自分でも進んでいるのかどうか微妙にわかりません!でも楽しいです!!みんなもダン摘み見よう!いま半額だから!!(投稿日現在)

この記事が気に入ったらサポートをしてみませんか?