スクリーンショット_2019-07-27_13

敵が隣接するプレイヤーを見失ってしまう問題の修正 RogueEna

NPC(敵など)が、隣接している敵対者(プレイヤーなど)を、曲がり角で見失ってしまう問題が発覚し、それを修正していました。

問題のシーンはこちら。

視界内の敵対者を追いかける際に用いる経路探索の方法に問題が有りました。

経路探索では角を考慮しておらず、角なら斜め移動できるという結果を導き出してしまい、結局その結果だと移動ができなくて、ランダムな場所に移動をする仕組みが発生するというのが具体的な問題でした。

経路探索のアルゴリズムは一般化していて、ノードのコストの計算方法などは外から注入できるようにしていたので、視界内の目標から移動方向を算出するための経路探索ではコストの計算方法に角を考慮し、角はコストが無限になるようにすることで修正ができました。

こちらが修正されたバージョンです。

あと、とても細かい部分なのですが、これまではNPCはそのNPCの味方の位置を無視して経路探索をしていました。理由はNPCがなるべく敵対者に近づこうとしてほしいためです。
例えば敵対者がNPCに8方向すべて囲まれているようなケースだとそこに到達できないため経路探索の結果、一切敵対者のことを無視して行動してしまいます。
これを防ぐためにNPCは他のNPCを無視して経路探索を行っています。しかし、これではNPCを迂回して移動することができないため、今回その部分も修正しています。

修正内容ですが、従来のNPCを無視する経路探索によって得られた移動方向にNPCが居た場合、NPCを無視せず経路探索を再度行う、という方法を用いることにしました。これにより、囲まれていても近づきますし、囲まれていなければNPCを迂回して移動してくれるようになりました。
細かい挙動ですが、敵の移動方向がプレイヤーから予測しやすい状況を生み出すためには重要な修正となります。

移動に関する挙動はこれでほぼ目標通りになったと思います!

応援してくださると嬉しいです。よろしくお願いいたします!