精度と距離の式


8

シューティングゲームとターゲットを考えてみましょう。私の質問は、シューターがターゲットに命中する確率を計算する現実的な近似があるかどうかです。

武器と射手のスキルを無視すると、一次近似は、ヒットする確率が1 / r ^ 2に比例するはずだと思います。ここで、rはターゲットまでの距離です。

この関係への動機は、シューティングゲームを中心とする球の領域がr ^ 2として減衰するという考えを使用することに由来します。したがって、ターゲットにヒットする確率は、最悪の場合、1 / r ^ 2に減衰するはずです。

私はどんな武器についてもいくつかの関係をグーグルで試しましたが、何も見つかりませんでした...

このトピックに関する詳細情報を知っている人はいますか?この近似は有効ですか?

編集:

質問の詳細:私は戦術ゲームを考えています。特に、2つのユニット間の射撃をモデル化したいと思います(したがって、FPSゲームではなく、プレイヤーは狙いを定めず、注文を出します)。そのために、ユニットにはある程度の経験があり、武器にはある程度の精度があり、環境(霧、植生など)は全体的な精度に影響を与えると考えています。いくつかの難しいモデルを使用する前に、テストする最も簡単なモデルは、すべての要因を一定にして、精度は距離にのみ依存することです。

問題は、この精度が距離にどのように依存するかです。私の最初の推測は、1 / r ^ 2の崩壊でしょう。しかし、コメントでよく言及していますが、これは非常に急速な減衰のように見えます。


1
1 / r ^ 2は急速に減衰します。 どうやら、ほとんどのFPSは照準ポイントを立体角で変更し、光線を追跡します。角度が大きいほど、遠くのターゲットを攻撃するのが難しくなります。
Daniel Blezek 2012

1
おそらく、逆二乗則を使用して1つを考え出すことができますか?
MichaelHouse


もちろん。私がそれを考えた理由に違いない。しかし、4πが足りず、Pに1を使用しているだけです。本質的には、その方程式の強度を使用して精度と同等にすることができます。
MichaelHouse

1
彼が「リアルな近似」と「武器と射手のスキルを無視する」ことを求めているので、彼のゲームデザインは適切ではないと思います。これらの制約により、それは基本的な数学的問題のように見えます。
Kylotan 2012

回答:


5

あなたの近似は基本的にショットが球の表面の一部に着陸することを指示し、角度によって決定されます。そのサーフェス内のターゲット領域は定数です。確率分布は表面内で一定で、他の場所ではゼロです。

Gajetは、これらの仮定のいくつかがフラットになる理由をいくつかの正当な理由ですでに示していますが、同じ不正確なモデルである角度の限界エラーを保持しています。結果はまだr ^ -2で落ちますが、小さな定数です。

シューターの最大広がりが5°だとします。彼は0度から1度の誤差で発砲する可能性がありますが、4度から5度の間のリングの面積は0度から1度の間のリング/円の面積よりもはるかに大きいです。エラーが大きいほど、発生する可能性が高くなります。誤差をさらに大きくすると、5度の制限を超えているため、確率が突然ゼロに下がります。それはあまり現実的ではないようです。

より正確な表現は、角度誤差のガウス分布を持つことですA(ϕ) = sqrt(a/π) exp(-a ϕ²)。変数aを使用して、シューティングゲームのスキルなどを含めることができます。このソリューションは1次元であることに注意してください。ターゲットがその幅に比べて非常に背が高い場合は、垂直方向の誤差を完全に省略して、ショットが正しい標高で着地したと見なすことができます。または、ターゲットがほぼ長方形であると想定して、計算を2回実行して結果を乗算することもできます。

確率関数からターゲットに命中する実際の確率を得るには、関数Aを統合し、高価なエラー関数を作成しますp(ϕ) = erf(ϕ sqrt(a))。これは、実際にはエラー関数と呼ばれます。角度は、ターゲットポイントとターゲットのエッジ間の角度に相当します。目標サイズSとの距離rの点で:p(r) = erf(arctan(s/2r) sqrt(a))。この機能は、1と精度値の大きさのターゲットの下にプロットされているa=2a=10

目標を打つ確率と距離

r ^ -2のフォールオフとは異なり、ターゲットがどの程度近くても、確率は1未満にきちんと留まっていることに注意してください。実際、誤差が90°を超える可能性が非常に低いため、正確にゼロの距離にあるターゲットであっても見逃される可能性があります。

前に言ったように、エラー関数はかなり高価ですが、その引数はϕ sqrt(a)、賢明なシューティングゲームのシナリオではそれほど変わりません。代わりにテイラー級数の一部を評価し、その結果に上限を設けることで、はるかに良い結果を得ることができます。まず、をマップしてからx = arctan(s/2r) sqrt(a)、次を評価します2 x - (2/3) x^3 + (1/5) x^5 ...。必要と思われる数の用語を省略または追加してください。ただし、用語の数が偶数になると、距離が短いと望ましくない動作が発生することに注意してください。以下にプロットされているのは、そのテイラー級数の最初の3つの非ゼロ項と比較した実際の誤差関数です。

誤差関数とテイラー級数を使用した確率

最後に、これは純粋に数学です。いくつかの正弦関数、ランダム係数、対数を投入すれば、ゲームも同様に楽しいかもしれません。


5

確率は確かに1 / r ^ 2の関数ですが、1 / r ^ 2自体ほど速く減衰しません。簡単な計算をしてみましょう。計算を簡単にするために、最初に2D撮影を行います。これにより、撮影で1Dエラーが発生します。ターゲットの幅は常に同じです。たとえば、ターゲットの幅は1メートルであることがわかっています。また、銃を撃っている間、最大5度の角度でターゲットを逃す可能性があることもわかっています。これは状況を示す図です:

図1

次に、これらの3つの状態を見てみましょう。彼らは持っていると仮定しh1h2かつh3コーナーからの距離。これらの値と角度に基づいて、それらの状態での距離を計算できます。h*tan(10/2)*2(図2に示すように)と同じくらい簡単に計算されます。

図2

私たちはそれを知ってh/l = cos(theta/2)おり、r/l = sin(theta/2)=> r/h = sin(theta/2)/cos(theta/2) = tan(theta/2)=> r = h*tan(theta/2)=>edge length = h*tan(theta/2)*2

一方、ターゲット自体の幅は1メートルであるため、その値が1メートル未満である限り、常にヒットします。その部分の後"target surface"/"hit area"は、に等しい確率があり1 / (h*tan(10/2)*2)ます。ターゲットサーフェスのすべてが円錐形の火の中にあると常に想定できることに注意してください。ゲームのプレイにはそれほど影響しませんが、計算が非常に簡単になります。

2Dターゲットの3D問題に戻ります。コーンなので、ターゲットを通過するとき、弾丸は常に特定の直径の円を通過します。ここでも、半径を計算してから、その円の面積を計算する必要があります。前に説明したようにr=h*tan(10/2)*2、使用できるため、表面積はpi*r^2 = h^2*tan^2(10/2)*4 * piです。そして結局、確率はであることがわかり"target area"/"circle area" = 1 / h^2*tan^2(10/2)*4 * piます。前述のとおり、h ^ 2の関数ですが、tan^2(5)非常に小さいため、その確率が非常に低くなるまでには長い時間がかかります。


1

これには、「不正確」の定義された概念が必要です。不正確とは何ですか?どのように機能しますか?射撃するAIをコーディングし、毎回正確なパスを計算する場合、明らかに、不正確さはどの距離でも0です。

どの射撃AIも最初に完璧なパスを定義し、次に照準の不正確さを追加します。この不正確さは完全にユーザーによって定義され、その定義は確率を計算する前に必要です。


質問で述べたように、この最初の近似ではユニットの精度(経験など)を無視していたため、精度はヒットの確率です。
Jorge Leitao

@JC:しかし、理由やユニットの精度が毎回100%とは限らないことを定義していませんでした。
DeadMG 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.