障害物を避けながらの移動

移動に関しては一応モーションを得ることが可能で、移動コマンド送出の次のサイクルでホムのモーションをチェックするだけで移動可能かを知る事が出来る。
つまり、AIループのサイクルをまたいでのチェックとなるので、移動できない場合のホムのアクションは140msec以上ディレイが生じる。
とは言え、ホムが秒間に何マスも移動できるわけではないので140msec程度なら構わないのではないかと考えた。
もともと移動できるポインタに対しては即移動可能なのでその辺も含めて言える。
ただ、Attackと同様の問題が潜んでいる事もわかった。
要するに、モーションをチェックせずに次のコマンドを1つくらいなら予約しておくと言う手段も取れるようだ。
モーションをいちいちチェックしていないAIの場合、クルクルにしても回転速度が早いのは、モーションが終わる前に、サーバーへ次のコマンドを送っている分ディレイタイムが少ない。
つまりそれで早いわけだ。
本AIでは、移動に関してモーションが終わるのをチェックしながら送っているが、この部分を改善すればもっと早い移動も可能だ。
今でも、ケミを追う速度は問題無いのだが、この辺をもう一工夫したいと考えている。
とりあえず、0.3で組み込むのは時間が足りないかも。
今のところ、移動可能かチェック後、移動ポインタを回り道させたりして障害物回避は出来ている。

障害物を迂回する移動について(L字迂回)

移動先のポイントが移動不可能な場合、つまり障害物の場所だか、ここへの移動は一番近いところにすべきかそうでないか迷った。
しかし、そもそもそう言った移動の目的は、ケミのそばとか、MOBのそばとかそう言った目的にあるため、単純には無理して障害物のある位置に移動しても無意味と言うことになる。
したがって、オブジェクトを目標にした別の移動を用意した方が、ソフトウェアのアルゴリズムとしては明確なものとなる。
っと考えたので、オブジェクトを目標にする移動方法は0.4以降で用意する事にした。
0.3では簡易的な移動方法にL字迂回のみを残す事にする。
L字迂回とは、X軸だけの移動を行い、次にY軸移動を行う方法。
もちろん、状況によってはX軸Y軸の順が逆になる場合もある。
単純に二回に分けて移動すると言うものだ。
しかし、これだけでも結構障害物を迂回できる。


以下は@wikiスポンサースペースです。
最終更新:2007年10月26日 16:09