タグ付けされた質問 「path-finding」

ある地点から別の地点への移動経路を計画するために使用される方法。通常、障害物を回避します。

5
Dwarf Fortressは、パフォーマンスを失うことなく、どのように多くのエンティティを追跡しますか?
ドワーフ要塞では、数百のドワーフ、動物、ゴブリンなどを一度にゲームに入れることができ、それぞれに独自の複雑なAIと経路探索ルーチンがあります。私の質問は、これがどのように顕著な減速を引き起こさないのですか?各Dwarfは独自のスレッドで実行されますか?


6
逃げるための経路探索
ご存知のように、ポイントAからポイントBに至る2次元環境で最適なパスを見つけるには、多くの解決策があります。 しかし、オブジェクトがポイントAにあり、ポイントBからできるだけ早く遠くまで離れたい場合、どのようにパスを計算しますか? 少しの背景情報:私のゲームは、タイルベースではないが、浮動小数点精度の2D環境を使用しています。動きはベクトルベースです。経路探索は、ゲームワールドを歩行可能または歩行不可能な長方形に分割し、コーナーからグラフを作成することによって行われます。ダイクストラアルゴリズムを使用して動作するポイント間のパスファインディングはすでにあります。逃亡アルゴリズムのユースケースは、特定の状況では、ゲーム内のアクターが別のアクターを危険として認識し、そこから逃げるということです。 些細な解決策は、「安全な」距離に到達するか、または俳優が恐怖で覆う壁に到達するまで、脅威とは反対の方向にベクトルで俳優を移動することです。 このアプローチの問題は、アクターが簡単に回避できる小さな障害物によってブロックされることです。壁に沿って移動しても脅威に近づくことはできませんが、そもそも障害物を避けたほうが賢く見えます。 もう1つの問題は、マップジオメトリの行き止まりです。状況によっては、存在は、より速く離れるが、トラップされる行き止まりで終わるパス、または最初は危険からそれほど遠くに行かないことを意味する別のパスから選択する必要があります(または少し近づいても)、その一方で、最終的にははるかに遠く離れてしまうという点で、はるかに長期的な報酬があります。だから、離れるの短期報酬の高速は何とか離れるの長期報酬に対して評価されなければならない遠いです。 また、攻撃者が小さな脅威に近づき、はるかに大きな脅威から逃れることを受け入れる必要がある状況には、別の評価の問題があります。しかし、すべての軽度の脅威を完全に無視するのも愚かなことです(そのため、この図の俳優は右上の領域で軽度の脅威を回避するために邪魔になりません)。 この問題の標準的な解決策はありますか?


7
RTSゲームの経路探索はどのように機能しますか?
[stackoverflowからクロスポスト] Warcraft 3やAge of Empiresなどのゲームでは、AIの対戦相手がマップ上を移動できる方法はほとんど無限に見えます。マップは巨大であり、他のプレイヤーの位置は常に変化しています。 これらのようなゲームのAI経路探索はどのように機能しますか?このようなセットアップでは、標準のグラフ検索方法(DFS、BFS、A *など)は不可能に思えます。


12
目的地が通過できない場合、どうすればA *をより速く終了できますか?
A *( "A star")経路探索アルゴリズムを使用する単純なタイルベースの2Dゲームを作成しています。すべて正常に動作していますが、検索にパフォーマンスの問題があります。簡単に言えば、通行不可能なタイルをクリックすると、アルゴリズムはどうやらマップ全体を通過して、通行不可能なタイルへのルートを見つけます。 どうすればこれを回避できますか?画面領域へのパスファインディングを減らすことができたと思いますが、おそらくここで明らかな何かを見逃していますか?

2
障害物が動いている場合でもA *は効率的ですか?
経路探索について学び始めたばかりで、A *アルゴリズムを検討しています。私の主な関心は、これまでに見たすべての例が、計算する静的障害を示していることです。 動く障害物、たとえば他のキャラクターが動き回るなど、キャラクターが動き回る必要がある場合、フレームごとにアルゴリズムを実行する必要があると想定していますが、かなり高価になるのではないかと心配していますハードウェアが各移動アクターの各フレームを処理します。 A *は、障害物が動いている場合でも使用できるほど効率的ですか、または、動いている障害物をより雄弁に処理するパス検索の別の方法がありますか?

6
移動するターゲットに向けた経路探索の標準的なソリューションは何ですか?
ゲームのような2D RTSに取り組んでいます。基本的なA *は、ユニットをポイントAからポイントBに移動するのに最適です。 しかし、Aが移動するオブジェクトBを攻撃するように、オブジェクトBの位置が変更された後、各フレームでA *を呼び出すなど、継続的なパス検索の問題に直面しています。 この問題の標準的な方法は何ですか?


4
ヒューリスティック関数として使用すると、マンハッタン距離は単調になりますか?
正方形ベースのマップがあります。水平方向と垂直方向の移動のみが許可されます(対角線は不可)。移動コストは常に1です。 マンハッタン距離を距離ヒューリスティックとして使用して、そのマップにA *アルゴリズムを実装しています。このヒューリスティックな一貫性はありますか?g(node)CLOSEDセットにあるノードに対するチェックを回避できますか? 編集:一貫して私は単調という意味です。

1
経路探索アルゴリズム?
最初にこの質問をスタックオーバーフローに投稿しましたが、そこにビデオゲームに興味がある人はいないと思います... すべてのタイプのゲームで使用されるパス検索アルゴリズムにはどのようなものがありますか?(とにかく、キャラクターが移動するすべてのタイプの)ダイクストラはたくさん使われていますか?実際にどこかに行くための手順を追跡していないので、そうは思わないでしょう?私がそれを正しく理解しているなら、どのオブジェクトが最も近いかを決定するだけです。私は何もコーディングするつもりはありません。ただいくつかの研究を行っていますが、擬似コードまたは何かを貼り付けると、それは問題ありません(JavaとC ++を理解できます)。基本的に、一般的なパス検索の簡単な概要を探しています。 A *は2Dゲームで使用するアルゴリズムのようなものです。それは素晴らしいことですが、グリッドベースではない2Dゲームについてはどうでしょうか?Age of EmpiresやLink's Awakeningのようなもの。移動するための明確な正方形のスペースはありませんが、何をしますか? 3Dゲームは何をしますか?この話題のhttp://www.ai-blog.net/archives/000152.htmlを読んだことがありますが、これは主題に関する素晴らしい権威であると聞きましたが、メッシュが設定されると、実際にはどのように説明するのか、パス検索が完了しました。A *が使用するものである場合、3D環境でそのようなことはどのように行われますか?また、角を丸くするためにスプラインはどのように機能しますか?

3
ロックとキーを使用した経路探索?
私は、ロックパズルとキーパズルに似たマップを使ったゲームに取り組んでいます。AIは、ロックされた赤いドアの後ろにある可能性のある目標に移動する必要がありますが、赤いキーはロックされた青いドアの後ろにある場合があります... このパズルは、次の図のようなゼルダ風のダンジョンに似ています。 目標を達成するには、ボスを倒す必要があります。ボスを倒すには、ピットを通過する必要があり、フェザーを集める必要があり、キーを集める必要があります ゼルダのダンジョンは線形になる傾向があります。ただし、一般的なケースでは問題を解決する必要があります。そう: 目標には、一連のキーのいずれかが必要になる場合があります。そのため、赤キーまたは青キーのいずれかを取得する必要があります。または、ロック解除されたドアが長い距離にある可能性があります! 同じ種類の複数のドアとキーが存在する場合があります。たとえば、マップに複数の赤いキーがあり、1つを収集すると、すべての赤いドアへのアクセスが許可されます。 右の鍵が施錠されたドアの後ろにあるため、目標に到達できない場合があります そのような地図でどのように経路探索を実行しますか?検索グラフはどのように表示されますか? 注:アクセスできない目標の検出に関する最後のポイントは重要です。たとえば、A *は、目標に到達できない場合は非常に非効率的です。これに効率的に対処したいと思います。 AIがすべてがマップ上のどこにあるかを知っていると仮定します。

3
一部のネットワークゲームが補間を使用し、一部がリモート移動にパスファインディングを使用するのはなぜですか?
これは少々未解決の質問ですが、私は誰かが両方の正当な理由を提供してくれることを望んでいます。 両方の簡単な例: 補間モデル クライアントが位置の更新を頻繁に受信し、リモートがこのデータの補間を使用して位置を更新するValveモデルを考えてください。 経路探索 このモデルでは、ユーザーが宛先を送信し、全員がその宛先にパスファインディングすると考えます。 どのタイプのゲームがそれぞれに適していますか?

3
障害物の周りの多くの群がっている敵を効率的に経路探索する
私はゲームの敵の経路探索を改善しようとしています。現在、彼らは基本的に、プレイヤーとプレイヤー間の角度を計算し、その方向に移動することにより、プレイヤーの正確な位置に向かって絶えず移動しています。また、敵が互いの上に積み重なるのを防ぐ群れアルゴリズムを持っているので、敵が互いを挟むのではなくグループになります。 ただし、タイルベースのマップを追加したので、たとえば障害物や壁の周りを敵が通過できるようにする必要があります。私は最初、群れアルゴリズムが壁や障害物を遠ざけるオブジェクトと見なすように、「歩行不可能な」タイルに分離値を追加しようとしました。私の最初のテストでは、敵が歩くことのできないタイルのない目に見えない「壁」にぶつかったことが示されたので、これが実現可能かどうかはまだ解明していません。 A *を使用してプレーヤーへのパスを計算し、群れを防ぐために群れアルゴリズムを使用するには、パフォーマンスが重すぎるのではないかと考えていました。もともと私のゲームは波ベースのシューティングゲームになる予定でしたが、代わりにホットラインマイアミの静脈内でレベルベースにすることを決めたので、たまに大群とともに敵を減らし、それらが強くなります。 これは実行可能なソリューションですか?ゲームエンジンとしてSlick2DでJavaを使用しています。または、これら両方の問題に取り組むより良い解決策/アルゴリズムがありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.