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

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

2
Time.deltaTimeを使用しているにもかかわらず、動きはフレームレートに依存しているように見える
Unityでゲームオブジェクトを移動するために必要な変換を計算する次のコードがありますLateUpdate。これはで呼び出されます。私が理解していることから、私の使用はTime.deltaTime最終的な翻訳フレームレートを独立させるべきCollisionDetection.Move()です(ただレイキャストを実行することに注意してください)。 public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If we're ignoring gravity, then just …

3
グリッド上でA *を使用して自然に見えるパスを作成する方法は?
私はこれを読んでいます:http : //theory.stanford.edu/~amitp/GameProgramming/Heuristics.html しかし、私が理解していないこともいくつかあります。たとえば、この記事では、対角線の動きを伴う経路探索に次のようなものを使用するように記述されています。 function heuristic(node) = dx = abs(node.x - goal.x) dy = abs(node.y - goal.y) return D * max(dx, dy) 記事のようにDを設定して自然なパスを取得する方法がわからない、それを言ったようにDを隣接するスクエア間の最低コストに設定し、ヒューリスティックなものに関する意味がわからない4 * Dであり、何も変わらないようです。 これは私のヒューリスティック関数および移動関数です。 def heuristic(self, node, goal): D = 5 dx = abs(node.x - goal.x) dy = abs(node.y - goal.y) return D * max(dx, dy) def move_cost(self, …

1
nVidiaのCUDAは、経路探索計算の実行に適していますか?
GPUでパスファインディングを実行する価値があるかどうかを知りたい(nVidiaの 特定の状況で CUDAまたは同等のものする)か、それとも無駄な努力かどうか。私が想像する状況は、ボットのパスを見つける責任があるヘッドレスマルチプレイヤーサーバーです。 ナビゲーションメッシュを使用したA *パスファインディングに特に興味がありますが、GPU実行からより多くの利益を得る別のパスファインディングアルゴリズムがある場合、それを聞きたいです。

1
さまざまな移動タイプを処理する経路探索アルゴリズムはありますか?
私はBattleTechボードゲームシミュレーターhttp://en.wikipedia.org/wiki/BattleTechのボットを開発しています。これはターンベースです。 ボードは六角形に分割され、それぞれが異なる地形タイプと標高を持っています。他のロボットを破壊するには、それらの上を移動するロボットを運転します。 ダイクストラとA *のパスファインディングアルゴリズムしか知りませんが、問題は3種類の動きがあることです:いくつかの六角形を歩く、走る、ジャンプする(それぞれに独自のルールがあります)。ウォークアンドランはほぼ同じです。 最適なパスは、組み合わせまたは各移動タイプです。マップの例はこちらhttp://megamek.info/sites/default/files/isometric_view.png この複雑な経路探索に適したアルゴリズム、または各運動タイプのA *結果を組み合わせる方法を知っていますか?

2
大規模なネットワーク化された世界でエンティティのパス検索と移動を処理する方法
32x32ボックスに分割されたタイルを使用した上記の画像を考慮すると、近くにいる近くのプレイヤーに「aggro」とマークされたエンティティがあります。このモンスターに理想的にはプレイヤーを追いかけたい(そしてしばらくの間プレイヤーを追い続けたい)。現在、私の唯一の動きは、リモートエンティティの単純な補間器で行われます。これは、動きの更新間のギャップがかなり小さいために機能します。 モンスターがいる位置に移動したいことをクライアントに伝えることができません。それはエンティティが本来よりもはるかに速く移動するためです(これはおそらく補間coに数学を使用して解決できます) -効果的)しかし、もっと重要なのは、現実的に見えず、壁をクリップする可能性があることです!回避できる場合は、サーバー上の動き全体をシミュレートしたくありません...できると思いますが、それでもクリッピングの問題は解決しません。解決策には、定期的なノード更新をパス検索および送信し、それらに動きをシミュレートさせることが必要ですが、確信はありません。 ありがとう!

1
空きスペースでの効率的な経路探索
宇宙にゲームがあり、移動命令を発行したいのですが、これには経路探索が必要です。現在、A *などはほとんどがツリーに適用され、パス検索ノードのない空のスペースではないことを理解しています。現在、固定されたAABBとして表現されているいくつかの障害があります。つまり、境界のない「地形」障害はありません。さらに、ほとんどの障害物は、立方体または球体として合理的に近似できると予想しています。 だから私はずっと簡単な経路探索アルゴリズムを適用することを考えていました-つまり、現在の位置から目標位置に光線を投げるだけで、空間分割を使用して比較的迅速に障害物のリストを取得できます。私がよくわからないのは、注文したユニットが障害物の周りを移動する部分をどのように決定するかです。 私がこれまで考えてきたのは、単純に潜在的なフィールドを使用するということです。つまり、すべてのユニットは、互いに離れた強い反発力と、目的のポイントに向かって適度な力を感じるでしょう。これには、グループ命令を発行するために、別のエンティティに向けて中レベルの部隊を単純に命令できるという利点もあります。しかし、これは明らかに最適なソリューションを達成しません。 可能性のあるフィールドは、自分のパラメーターを考慮して合理的な近似を達成しますか、それとも別のソリューションが必要ですか?
12 c++  path-finding 

1
事前に計算された経路探索はまだ関連していますか?
環境 Old Lucas Arts(ScummVM時代)のポイントアンドクリックグラフィックアドベンチャーゲームは、事前に計算された経路探索を使用していました。テクニックの大まかな概要は次のとおりです。 ステップ1 各部屋の床は「ウォークボックス」と呼ばれるものに分割され、ナビゲーションメッシュのノードとほぼ同等でしたが、台形に限定されていました。例えば: ______ _____ _________ _____ \ A | B | C | D \ \_____| | |_______\ |_____| | |_________| ステップ2 オフラインアルゴリズム(ダイクストラやA *など)は、ノードの各ペア間の最短パスを計算し、使用される開始ノードと終了ノードによって各次元でインデックス付けされた2Dマトリックスにパスの最初のステップを格納します。たとえば、上記のウォークボックスを使用します。 ___ ___ ___ ___ | A | B | C | D | <- Start Node ___|___|___|___|___| | A | A | …

3
farseer / box2dのような2D物理エンジン内でAIパスをどのようにフォローしますか?
私は、Farseerのような適切な剛体物理エンジンに取り組んでいる2Dトップダウンゲームを動かしている最中です。これまで、必要に応じて自分の物理コードをハッキングしていました。 ここで物事を行う適切な方法を学ぼうとしています。 AIを物理エンジン内で剛体にした後、設定されたパスをAIに追従させる適切な方法は何ですか? AIに追従する必要があるナビゲーションノードのパスがある場合、以前は次のタイムステップでの次の位置を計算し、その位置に手動で設定することで、パスに沿って手動で移動します。 しかし、今ではそれらは剛体であり、衝突や、それらにぶつかってそれらをパスから外す可能性のある力の影響を受けます。 だから、AIを動かすために、私は今、それらに衝動/力を適用すべきだと思いますか?フレームごとに手動で位置を設定する必要はもうありません。 だから私は決定論的世界からAIを強制的に非決定的世界に強制的に追いかける必要があると考えていますそれらを動かすために。 そうですか?それは他の人がそれを行う方法ですか? これは、AIが正確な道を歩いていないので、AIが風景の隅に引っかかるのを避ける方法についてのいくつかの質問を提起します。 または、何らかの方法で2つを混合し、AIの位置を手動で設定して固定パスをたどり、簡単に制御できる特定の状況でのみ他の力に反応させる方が良いでしょうか? アドバイスをありがとう。

4
AIエージェントを曲線に沿って移動させるにはどうすればよいですか?
現在、私の非常に基本的なAIフレームワークには、一連のポイントで構成されるギザギザのパスに沿って移動するエージェントがあります。 これは、ある地点から次の地点に位置を移動するだけです。次のポイントに到達すると、次のポイントに向かって移動します。曲線バージョンのパスに沿ってスムーズに移動するようにこれを変更するにはどうすればよいですか?また、曲線を生成するにはどうすればよいですか?

3
移動/障害物の回避
障害物(赤)を配置できる「ゲーム」を作成したいのですが、黒点がそれを避け、緑のターゲットに到達しようとします。 非常に簡単な方法を使用して、黒い点が赤に近く、方向を変え、しばらく移動した後、緑の点に進みます。 コンピューター制御の「プレーヤー」の「スムーズ」パスを作成するにはどうすればよいですか? 編集:滑らかさが主なポイントではありませんが、赤いブロック「壁」を回避し、それに衝突してそれを回避しないようにします。 基本的に3つのポイントしかない場合、どのようにパス検索アルゴリズムを実装できますか? (そして、あなたが複数の障害物を置くことができたら、それは物事をはるかに複雑にしますか?)
12 ai  path-finding 

5
強化学習がパスファインディングでめったに使用されないのはなぜですか?
由緒ある最短経路グラフ理論アルゴリズムA *およびその後の改善(たとえば、階層注釈付きA *)は、明らかに、ゲーム開発における経路探索に最適な手法です。 代わりに、RLはゲーム空間内でキャラクターを動かすためのより自然なパラダイムであるように思えます。 それでも、強化学習ベースの経路探索エンジンを実装しているゲーム開発者は1人もいません。(これから、パスファインディングにおけるRLの適用が0であるとは推測しません。A*や友人に比べて非常に小さいというだけです。) 理由が何であれ、これらの開発者がRLを認識していないからではありません。RLはゲームエンジンの他の場所で頻繁に使用されるという事実からも明らかです。 この質問は、経路探索においてRLについて意見を述べる口実ではありません。実際、私はA * et al。の暗黙の選好を仮定しています。RLよりも正しいですが、その好みは私には明らかではなく、その理由、特にパスファインディングにRLを使用しようとした人には非常に興味があります。

1
均一な地形上での2D非グリッドベースの移動によるパスファインディング
私のゲームでパスファインディングの最良の解決策を探しています。マップは最終的にグリッドベースですが、エンティティはフロートを使用して配置され、マップ上の任意のポイントに任意の方向に移動できます。私のゲームの「地面」の移動コストは一定ですが、もちろん、道を妨げる障害物が存在する可能性があります。障害物の大半は静的になり、ゲーム内の他のアニメーションの実体があるでしょうが、私はあり、それらを考慮しないで逃げるん-それはアイソメトリックだテーマ病院のように何の戦闘スタイルの戦略ゲーム、。 私が見たほとんどの経路探索記事は、3Dまたはグリッドベースの2Dの動きをカバーしています。私のユースケースをカバーするかもしれない何かのための提案はありますか?どうもありがとう。
12 2d  path-finding 

2
動的な障害物やプレーヤーが作った障害物のためのA *パスファインディング?
こんにちは、Unity 5でTDを作成しています。Pathfindingで助けが必要です。 私は、AIにArons A *パスファインディングを使用して、動的オブジェクトを使用し、実行時にパスを更新できるようにします。ただし、私のゲームでは、プレイヤーが特別なタレットで手先をブロックできるようにして、目的地に行く代わりに手下に「ブロックタワー」を強制的に攻撃させます。 どうすればこのようなことを達成できますか? より明確にするための画像:
11 unity  c#  2d  ai  path-finding 

4
ターンベース、距離ベースの戦略ゲームで可能な動きの範囲を決定する方法は?
私はc ++とSFML-2.0を使用して、2次元のターンベースの戦略ゲームを作成しています。移動はグリッドベースではなく距離ベースであり、いくつかの異なる三角形のピースが所定のターンで所定の位置で回転するか、前方に移動します。 動きは、プレイヤーが駒を移動する場所を選択するように機能します。これにより、駒が進む可能性のあるパスが生成されます。プレーヤーが決定を確認すると、ピースはそのパスに沿って目的の場所に移動します。パスは次の2つの要素によって制限されます。距離、曲がり角を考慮して、ピースが移動できる距離です(カーブがある場合、ポイントからポイントに直接ではなく、カーブに沿った長さになります)。ステアリングアングル、ピースが移動中に任意のポイント(およびすべてのポイント)で回転できる距離(たとえば、-30から30度)。 私の質問は、ピースを移動させるためにプレーヤーが選択できる潜在的な場所の範囲をどのように決定すればよいですか? ここで使用する方程式やアルゴリズムは完全にはわかりません。私の最初の計画は非常に複雑で、実装することはほぼ不可能であり、説明は言うまでもありませんでした。この時点で、プロジェクトが停滞して完全に迷っています。 回転半径を考慮して、ユニットが移動できる範囲をどのように決定できますか? たとえば、次の画像では。赤、青、緑の線はすべて同じ長さになります。紫色の円は、ユニットが移動できる移動範囲を示します。(形状はおそらく不正確であり、ラインはおそらく実際には同じ長さではありませんが、あなたはアイデアを得るでしょう)

3
2つのボクセルが相互接続されているかどうかを確認するアルゴリズム
私は次の問題に適したアルゴリズムを探しています:ボクセルの3Dグリッド(空または塗りつぶされている可能性があります)を前提として、隣接していない2つのボクセルを選択した場合、それらが互いに接続されているかどうかを知りたい他のボクセル。 たとえば(2Dで状況を示すため)、#は塗りつぶされた正方形です。 1 2 3 a # # # b # # c # # # 私がa3とc3を選択した場合、それらが接続されているかどうかをできるだけ早く判別したいと思います。塗りつぶされたピクセルを通るa3とc3の間にパスがある場合。(実際の状況は、もちろん3Dボクセルグリッド内にあります。) フラッドフィルアルゴリズムとパスファインディングアルゴリズムを見てきましたが、どちらを選択するかわかりません。どちらも不必要な作業を行います。フラッドフィルはすべてのボクセルを埋めようとしますが、これは必要ありません。パス検索アルゴリズムは通常、最短パスの検索に関係していますが、これも必要ではありません。道があるかどうかを知るだけです。 どのアルゴリズムを使用する必要がありますか? 編集:コメントに基づいて、以下を追加する必要があると思います:ボクセルの内容は事前に不明であり、ボクセルの削除(空にする)によってボクセルのグループが壊れるかどうかを検出するアルゴリズムも必要です2つ以上の小さなグループに分けます。

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