お、重い……
 JSで、最大移動距離7で、八方向移動の経路探索をさせてみたんですが、これがまた重いのなんのって。八方向の経路探索ってのは初めて試したんですがね、例えば以下のような状況を考えてみませう。


........
..t...@.
........


 「t」がnpcで、「@」がpc、「.」は平地だと思ってくだせい。この状況で、npcがpcに接近するための経路は、まあ人間が普通に考えれば、そりゃあ「右、右、右、右」となるわけです。しかし、このマップで斜め移動が可能だとすると、「右下、右上、右上、右下」でも、同じ移動距離で到達できてしまうんですな。いくら移動距離が同じだっつっても、そんな酔っ払いみたいな移動はして欲しくないわけですよ。というわけで、私の意図する最適な移動経路を割り出すためには、移動距離だけでなく、移動方向も考えなければいけないんじゃあないかなあと。そんで、どうやればいいのかよくわからんかったので、とりあえず、同じ移動数で目的地に到達できる複数の経路から、「同じ方向への連続した移動数がもっとも多い経路」を選択するようにしてみたんです。これ、一応意図通りには動いてくれまして、わーいやったぜいと喜んだのも束の間、狭い通路とかなら問題ない(移動出来ない箇所では即刻探索を打ち切っているため)んですが、広い場所なんかではもう重くて仕方がない。使いものにならんのですよ。なんか効率のいい方法があるんだろうなあ。う~ん。
 しょうがないので、次の一歩目で、目標との距離がもっとも近くなる位置に移動するようにするしかないかなあ。これやると、壁をはさんだりしたときに動かなくなる(前後・左右移動を繰り返す)んだよねえ。条件付きでバックをしないようにするとかして、なんとかやってみるしかないかなあ。いやはや、なかなか一筋縄ではいかないもんですな。
コメント一覧
コメント投稿

名前

URL

メッセージ

- CafeLog -