A *をどのように再計画する必要がありますか?


10

A *アルゴリズムを使用してプレイヤーを探すパスファインディングボスの敵がいます。これはかなり複雑な環境で、Flashで実行しているため、長距離を検索しているときに検索が少し遅くなる可能性があります。プレイヤーが静止している場合は、一度だけ検索できますが、現時点ではすべてのフレームを検索しています。これには、フレームレートが低下するほど時間がかかります。

これに対する通常の解決策は何ですか?検索全体をやり直さずにA *を「再計画」する方法はありますか?少し頻度を下げて(0.5秒または1秒ごと)、パスに少し不正確さが生じることを受け入れる必要がありますか?

回答:


13

1つのフレームでパス全体を検索する必要はありません。検索ループに制限を設けることでこれを実行しました。AIはそこにある小さな情報を追跡し始め、次のフレームでさらに検索します、パスが見つかるまで3フレームかかる場合があります。AIが実際に検索しているように見えるので、かなり説得力があります。


+1。これは、マットバックランドが彼のAIブックで説明していることでもあります。彼はそれを「タイムスライスパスプランニング」と呼んでいます(books.google.ch/…)。良いもの。
bummzack

8

距離が非常に大きい場合は、近接検出を使用して数フレームごとにアルゴリズムを実行できます(ほとんどの場合、距離が大きい場合、ターゲットパスはフレーム間で大幅に変化しないためです)。例えば:

      Distance > 100, run A* every 2 seconds
100 > Distance >  50, run A* every 1 second
50  > Distance >  25, run A* every 10 frames
25  > Distance <  25, run A* every frame

これは、すべてのフレームでA *を実行しても、まだ許容可能なパフォーマンスが得られる距離があることを前提としています。要するに、私はあなたの2番目のオプションを選びます。特に、あなたが持っているものが機能している場合、うまく機能しているものを縮小することができれば、他の何かを再実装することは避けます。一番下の行は、それがあなたのゲームで機能するかどうかを確認するためにそれを試してみる必要があるということです。


8

正確にあなたの質問に答えるわけではありませんが、... "チート"するつもりなら、プレイヤーに "ブレッドクラム"を残して上司にフォローさせることができます。ブレッドクラムパスがそれ自体と交差する場合は、最新のパスをたどります(これにより、ボスがループや、プレイヤーの正確なパスをたどらないことは言うまでもなく、長すぎる他のパスを回避できます)

上司が匂いの良い動物の場合、これは問題なく動作します。これは、プレーヤーの香りをたどるのと同じように機能します:)


5

あなたのケースはHPA *が対処するために発明したものとほぼ同じです。しかし、やりすぎのように思える場合は、0.5秒ごとにパスファインディングを行うとうまくいくと思いがちです。



2

私は48試合のゲームを作成しました。A*キャラクターがレベルの周りでプレイヤーを追跡します。私のA *実装は遅いため(フレームごとに実行できなかった)、間隔を3秒の遅延に置きました。これにより、プレーヤーがしばらくの間AIを「だます」ことができるという意図しない結果がありました。それは実際にゲームをより楽しくしました。

その後、A *実装のパフォーマンスを改善し、すべてのフレームで実行してみました。敵は常に完全にプレイヤーを探すため、ゲームは面白くなくなりました。

それは予想外であり、良い学習経験でした。


1
それは良い点です。パックマンでの経路探索について、彼らが故意に不完全なアルゴリズムを使用して、プレイヤーが幽霊を裏切ることができるようにしたことを読んだことを覚えている。各ゴーストにはわずかに異なる不完全性があり、より多くの性格を与えていました。ここで重要なのは、ゲームでは、他のすべての楽しみです。
Nick Van Brunt

0

A *を絶対に使用したい(または必要としない)場合を除き、ステアリング動作を確認することもできます。関与するフレームごとの完全な経路計画がないため、処理が大幅に軽減されます。


エージェントとそのターゲットの間に障害物がない場合は、ステアリング動作(具体的にはSeek)を使用します。残念ながら、私の環境には、よりスマートなソリューションが必要なねじれ廊下などが含まれています。
グレゴリーAvery-Weir
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.