6

皆さん、こんにちは。

私は趣味のプロジェクトの 1 つの設計段階にあります。3D 空中戦ゲームを開発する予定です。(HAWX に触発されました)。しかし、敵のクラフトに対して AI がどのように機能するのか気になります。FPS ゲームのようにパス (グラフ上のパス検索) に沿って移動することはないと思います。敵機の移動にはどのようなアルゴリズムを使用できますか? これに使用できる AI ライブラリはありますか?

注: 開発環境として Irrricht エンジン、C++ を使用しています。

4

1 に答える 1

5

傍受ポイントを見つけるための簡単な答え...

いつでも、直線的な仮定を立ててください。あなたとあなたのターゲットは一定の速度で直線的に移動しています。したがって、ターゲットから位置とモーションを差し引いて、ターゲットの相対的な位置と速度を操作できます。

興味深い点は、ターゲットがこれまでにないほど近く (その線上) にあるとき、つまりその線上で最も近い点です。ベクトル内積で計算できるIIRC...

      P . V
t = - -----
      V . V

私がそれを正しく理解したと仮定すると、この時点で、ターゲットのパスは、あなたからターゲットへの線に対して直角になっています (ターゲットとあなたの動きの間の角度と同じではありません)。三角法 (内積は余弦に関連する) を使用して同等の答えを得ることができ、何年も前に始めたが決して完成しなかった 2D ゲームに対して、一度連立方程式法を使用して (よくわからない) 計算しました。 (オイズ/推力スタイルの回転と推力の宇宙船間の戦闘を重力で考えてみてください)。

これから、その最も近いポイントがどこにあり、どのくらい離れているかを判断できます。

現在の速度と方向のわずかな変動に対してこの時間を計算すると、近い将来の迎撃に向けて繰り返し最適化できます。もちろん、t を最小化すると、t がさらに過去にさかのぼる可能性が生じます。t の 2 乗を最小化する方がよいかもしれませんが、そうすると別の問題が発生します。敵がすぐ後ろにいる場合、本当に速度を落としますか?

とにかく、これはおそらく単純な誘導ミサイルには十分ですが、もちろんドッグファイトではほとんど使用されません. 私の印象は、ほとんどの場合ボードのほとんどが見えない、一種のアナログ リアルタイム チェスのようなものです。明らかにそれをミニマックスすることはできないので、ジョイスティックやその他のコントロール設定だけでなく、動きが何であるかのより高いレベルのモデルが必要です. そのためには、AI エンジンの設計を開始する前に、人間の経験に基づく戦術についてかなりの調査が必要です。

ただし、地形のカバーを利用する場合は、おそらくもっと簡単なことを行うことができます. グラフベースのパスファインダーは、谷を通るルートをプロットするのに適しているかもしれません。経路探索のほとんどを 2D で行い、マップを比較的滑らかなバリエーションの「嘘」に微調整して、崖にまっすぐ飛び込まないようにします。

おそらく、さまざまなタイプの目標と戦術のシステムが必要であり、それらの間で重み付けと選択を行う方法があります。ターゲットから遠く離れていると、近づいたときよりも物陰にとどまろうとする可能性が高くなります。自分の尻尾にミサイルがある場合は、攻撃的な行動よりもミサイルが優先されます。

ところで-これはゲーム開発の実際の経験からのものではありません(そして、私は確かにどのような説明のパイロットでもありませんでした)ので、うまくいかないかもしれない漠然とした提案を扱います. 注意してください - 私の 2D ゲームが完成しなかった理由の 1 つは、AI コードを作成しようとするのが最初は非常に興味深く、後で非常に苛立たしいものだったからです。何倍もの船と無限の弾薬を持っています。

于 2010-10-04T03:50:19.603 に答える