さまざまな移動タイプを処理する経路探索アルゴリズムはありますか?


12

私はBattleTechボードゲームシミュレーターhttp://en.wikipedia.org/wiki/BattleTechのボットを開発しています。これはターンベースです。

ボードは六角形に分割され、それぞれが異なる地形タイプと標高を持っています。他のロボットを破壊するには、それらの上を移動するロボットを運転します。

ダイクストラとA *のパスファインディングアルゴリズムしか知りませんが、問題は3種類の動きがあることです:いくつかの六角形を歩く、走る、ジャンプする(それぞれに独自のルールがあります)。ウォークアンドランはほぼ同じです。

最適なパスは、組み合わせまたは各移動タイプです。マップの例はこちらhttp://megamek.info/sites/default/files/isometric_view.png

この複雑な経路探索に適したアルゴリズム、または各運動タイプのA *結果を組み合わせる方法を知っていますか?


これは、A *で重み付けされたパスを巧妙に操作することでよく処理されると思います(重みはそのパス/平方のコストです)。たとえば、ジャンプが望ましい場合は、ウォーキング(たとえば10)よりも軽いウェイト(たとえば5)になります。
ashes999

3種類の動きはどの程度正確に異なりますか?それらを組み合わせることはできますか(タイルAまで歩いてから、Bまで走り、同じ順番でCまでジャンプします)?はいの場合、プレーヤーのフォームが常に最も安価な方法を使用してタイルAからタイルBに到達することを妨げるルールは何ですか?
フィリップ

@Philippはい、A *を使用すると可能です。すべての移動タイプで移動できるすべてのタイルをオープンリストに追加し、各タイルの価格+優れたヒューリスティックに基づいて、どのタイルをさらに進めるかを決定できます。
akaltar

@Philippいいえ、各ターンで使用できる移動は1種類のみです。
alexvisio

歩く:六角形を移動しますが、高度にほとんど差はありません。実行:同じですが、遠くまで行くことができますが、熱が発生し、射撃の精度が低下します(常に最良とは限りません)。ジャンプ:障害物(壁または川)の周りを歩く代わりにジャンプできます。
alexvisio

回答:


10

ダイクストラとA *はどちらも、あるタイルから別のタイルへのエッジ(接続)に異なるコストを追加できます。また、2つのノード(=タイル)を複数のエッジで接続することもできます。各ノードは異なるコストで使用します。

代替ジャンプモードは、各タイルからジャンプ距離内の各タイルへの代替直接エッジがあることを意味します。しかし、メカは1ターンで歩くかジャンプすることができるため、このエッジを使用するためのコストは、1ターン全体の移動ポイントと、このターンにすでに移動があった場合の現在のターンの残りのポイントになります。

あなたの説明によると、ウォーキングとランニングの決定は、パスの選択に関して大きな違いはありませんが、むしろ戦略的な決定のようです。俳優は、実行に頼らずに現在のターンで目的地に到達できる場合、間違いなく歩くことができます。しかし、そうでなければ、考慮すべき多くの要因があります:

  • 現在の熱レベルと、冷める前に戦闘に関与する可能性
  • このラウンドで発射する必要があるショットの難易度
  • 目的地に迅速に到達することがいかに戦略的に重要か

この決定を行うための厳しい規則はありません。最善の方法は、ヒューリスティックなアプローチを使用することです。すべての状況に正または負のポイント値を割り当て、それらを合計して、結果が正か負かを確認します。

パスファインディングには、考慮すべき別の要因もあります。特定の条件では、特定の場所でのターンの終了を回避するためにメカが意味をなす場合があります。危険なエリアでは、3ターンを使用してAからBに到達しますが、それぞれをカバーで終了することは、2ターンだけ使用するが、それぞれの終わりに露出するよりも良い場合があります。またはそうでないかもしれません。それは状況と正確なゲームの仕組みに依存します。これも、ヒューリスティックに基づいて行う必要がある戦略的な決定です。危険なタイルでターンを終了するエッジに追加コストを追加して、AIがこの動きをするのを思いとどまらせることで、これを表すことができます。

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