ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

カルネージハートエクサコミュの予測射撃を考えよう

  • mixiチェック
  • このエントリーをはてなブックマークに追加
相手の動きを予想して射撃する予測射撃、既に狙撃と言うのがあるけれど、ぴょんぴょん跳ねる奴や高高度の航空機に当たらない。

そこで、それらを解決する為に、少なくとも狙撃よりは、優秀な射撃を考えてみようと言うトピです。

私も予測射撃を考えて作ったんですが、あんまり精度が良くなくて乱射すれば、多少は当たる程度です。
と言う事で意見や情報をお願いします。

不思議に思った事や気がついた事とかでもいいです。

コメント(46)

横からすいません、うろ覚えですが確か重力加速度は初級演習場で3.2666...だった気がします
空気抵抗は0.00032か0.000032だか…
弾速は測定してくれてる方がいるのでそこから自分は使わせてもらってます
差し支えなければ後ででも弾速書きますが…
徹甲弾 8.8m/F
ビームガン 15.9m/F
スパルガン 8.2m/F
ナパーム 7.8m/F
ショットガン 7.1m/F
炸裂弾 7.3m/F
カノン砲 10.4m/F
レールガン 14.6m/F

だそうです
Sh1sh1d0さんへ

方向について
弾の到達は、確認しません。弾が到達するのにかかる時間だけを使いました。
被弾判定は、別処理で行います。予想射撃と被弾処理は別だと考えてます。

基本的に、相手が何をしているかとか着地とか被弾とか関係なく、相手がある時間にどの方向に
どのぐらい移動したかを取得して、次も同じだろうと推定して射撃すると言う物です。
(だから、指摘どおり、同じ行動をしない時は、はずれますw。)

仰角は、
HXは、ターゲットの仰角取得1チップでできます。
射撃する次の瞬間は異なった角度で構いません。
この計算は、延々と射撃中にずーっと何度もやり続ける事で精度を上げます。
1度の計算で出すのでは無く発射後もずーっとガンサイトを変更しつづけます。
と言うのも、発射チップ実行して実際に発射されるまでのガンサイト指定方向が影響してるからです。
つまり実際に発射する瞬間迄、ガンサイトの方向計算を行い続けます。いや発射した後さえも。

この計算のトリガーを現在は、射撃開始時にしていますが、例えば、相手のジャンプした瞬間をトリガーにしても構いません。

ZX2 = ZX-g*dt*dtですが、下降しなくても構いません。上昇中でも減速すると言うのを意味してます。
これは、ある瞬間の高度のベクトル演算を数値化した物です。

速度などをある時間区間dTでデジタル化して距離と言う単位に変換して計算しました。
例えば、空気抵抗を無視してると横方向の速度はほぼ一定。つまり時間dTの間に距離X進むとした場合、次の時間dTでも距離X進むと考えたのです。そこでXと言う値が横方向移動速度となります。
縦方向は、これに常に重力分の下方向のベクトルがかかると考えてマイナスで引き算しました。
これも計算を楽にする為に離散時間dTでg*dT*dTと言うスカラー値にしました。
>> 6 Sh1sh1d0さんへ
Sh1sh1d0さんのプログラムは、事前に情報を取得しておいて、決め撃ちで着地点を撃っちゃうんですね。

相手の飛来物回避の判断距離の差や反応速度差があるから。
ためし撃ち1発から相手のZ座標変化までの時間測定して補正をかけたら、当たるのでは?
それと式の簡略化と単位系の統一から、ターゲットの方向と仰角取得した方が楽だと思います。
相対X,Y,Zが取得できます。

私の予想射撃は、相手を選ばず空中で撃ち落すのを目標としています。
sh1sh1d0さんのは、着地点狙い。とちょっとコンセプトが違うようです。
現在使ってる方向予測プログラムをカルネジプログラム変換したものです。
カルネジ計算式

重力加速が3.92m/s^2
弾速は、レールガンが464m/s
空気抵抗は、0
これで計算しています。

/* 射撃ルーティン
射撃可能の時
D0 <- 敵の初期方向
H0 <- 敵の初期仰角
T0 <- 時間
ガンサイトON
ガンサイト指定( D0 , H0) <-- 実際は、この時の値はあんまり意味無し。
射撃チップ実行
RETURN

〜 時間経過

ガンサイト起動中で射撃中の時(毎回実行)
/* ターゲット情報取得
dD <- 敵の方向
dH <- 敵の仰角
DT <- 時間
R <- 敵のXY距離

/* 弾到達時間補正計算
dT = DT-T0
TT <- R
TT = TT / 464
TT = TT /dT

/* 仰角予測 sub2
(仰角予測ルーティン)

/* 射撃予想差分計算
dD = dD - D0
dD = dD * TT
dH = dH - H0
dH = dE * TT

/* ガンサイト指定
dT <- 敵の現在方向
TT <- 敵の現在仰角
TT = TT + dH
TTが1.05以下なら地面に着地している。
(yes) 補正しない
TT <- 1.05
(no) 補正する
dT = dT + dD

ガンサイトON
ガンサイト指定( dT , TT)
RETURN

次に仰角予測プログラムのカルネジ変換したもの
/* 仰角予測 sub2
(仰角予測ルーティン)
敵が航空機なら予想しない
( 航空機? dH <- 敵の仰角 RETURN )
dH = tan(dH)
dH = dH*R
dT = dT *dT
dT = dT * 3.92
dH = dH - dT
dHが4m以下なら、もうOKEは地面に着地してるとする。(OKEの身長を加味)
( dH <= 4m ? dH <- 敵の仰角 RETURN)
dH = dH / R
dH = atan( dH )
RETURN

〜 時間経過

/* 射撃ルーティン
射撃可能の時
D0 <- 敵の初期方向
H0 <- 敵の初期仰角
T0 <- 時間
ガンサイトON
ガンサイト指定( D0 , H0) <-- 実際は、この時の値はあんまり意味無し。
射撃チップ実行
RETURN
>11 にぼしさん
ありがとうございます。
レールガンの速度を 14.6*30 = 438 に修正します。

また重力加速度を
3.26m/s^2に変更してみます。
うーん。。。重力加速度は、やっぱり3.92m/s^2じゃ無いかな?カットアンドトライでも、この値の方が高さがかなり予想通りになります。
>九龍さん
重力加速度はうろ覚えなので多分違うんだと思います
もっと頑張らねば…
にぼしさんへ
私のプログラムがそもそも間違ってる可能性もあります。

まだ全然当たらないし。
今までの説明の為に、ちょっと絵を書いてみました。
加速度を自分で計算して見ました。

ジャンプさせて毎フレームの速度を記録。
するとフレーム間の速度差が14km/h〜17km/hぐらい。だいたい4m/sぐらい1/30sで減速します。
つまり1sだとこの30倍で120m/sぐらい減速するので、加速度は、120m/s^2じゃ無いかな?
フレームだとこの1/900で0.13m/f^2ぐらい
試行錯誤の末に、秒単位だと精度が悪いのでフレーム単位で処理し、さらに角度足し算すると誤差がでるから距離系で計算するように作り変えました。

カルネジPG風計算式

/* 射撃ルーティン */
射撃可能の時
D0 <- 敵の初期方向
H0 <- 敵の初期仰角
T0 <- 時間
R <- 距離
ガンサイトON
ガンサイト指定( D0 , H0) <-- 実際は、この時の値はあんまり意味無し。
射撃チップ実行
D0 = tan(D0)
D0 = R * D0 ; D0 = R*tan(D0) 正面に対してのX軸座標
H0 <- 敵のZ高さ
RETURN

(毎回処理)

ガンサイト起動中で射撃中で旋回中で無い時(毎回実行)

/* ターゲット情報取得 */
dD <- 敵の方向
dH <- 敵のZ高さ
DT <- 時間
R <- 敵のXY距離
dD = tan(dD)
dD = R * dD ; dD = R*tan(dD) X軸移動量

/* 弾到達時間補正計算 */
dT = DT-T0 ; 時間差
dT = 30 * dT ; フレーム時間変換
TT <- R
TT = TT / 14.6 ; TT = R/14.6 弾到達時間
TT = TT -3 ; 計算時間補正
もしTTが0.01以下なら0.01(0とマイナス避け)
TT = TT /dT ; TT = R/14.6/dT 弾到達時間比

/* 方向予測 */
dD = dD - D0 ; X移動量差
dD = dD * TT ; 弾到達時間補正

/* 仰角予測 sub2 */
(仰角予測ルーティン) -> dHを決定する
dH = dH - H0 ;Z差分
dH = dE * TT ;弾到達時間補正

/* ガンサイト指定 */
dT <- 敵の現在方向 ; カウンタが無いので再利用
TT <- 敵のZ座標  ; カウンタが無いので再利用
R <- 敵のXY距離  ; 最新の距離

dT = tan(dT)
dT = R*dT ; dT = R*tan(dT) 正面に対してのX軸座標
dD = dD + dT ; 敵の次の予想X座標
dD = dD / R
dD = atan(dD) ; dD = atan(dD/R) 角度変換

dH = dH + TT ; 敵の次の予想Z座標
dHが3m以下なら着地しているのでdH = 3
dH = dH / R
dH = atan(dH) ; dH = atan(dH/R) 角度変換

ガンサイトON
ガンサイト指定( dD , dH )
RETURN

/* 仰角予測 sub2
(仰角予測ルーティン)
敵が航空機なら予想しない
( 航空機? dH <- 敵の仰角 RETURN )
dT = dT * dT
dT = dT * 0.13
dT = dT / 2 ; dT = 1/2*0.13*dt*dt 加速度から距離は積分だから1/2
dH = dH - dT ; 加速度補正
dHが2m以下なら、もうOKEは地面に着地してるとする。(OKEの身長を加味)
( dH <= 2m ? dH <- 敵のZ高さ RETURN)
RETURN

射撃完了したら、また最初に戻って以下

/* 射撃ルーティン
射撃可能の時
D0 <- 敵の初期方向
H0 <- 敵の初期仰角
T0 <- 時間
ガンサイトON
ガンサイト指定( D0 , H0) <-- 実際は、この時の値はあんまり意味無し。
射撃チップ実行
RETURN

ここまでやっても当たらない。ダメなのかな。
気が向いた方がいらっしゃったら実装してみて下さい。何かアドバイス戴けると助かります。
初コメントします。よろしくお願いします。

炸裂弾の利点が全く見えず悩んでいます。アレは何が得意な弾なんですか?
おー、こんなトピが! エクサ界砲術師マスターへの道は険しいね。。
予測射撃は領域と相談ですね。
カノンでもなければ車両は熱でしか倒せないので、相手が熱を無視する距離で生存出来るかで決まりますし、カノンがあるなら盾がきれるまで生きてるかどうかなので予測関係ないですし。対空砲が一番メリットあるので、まず対空を作って、ループを兼用してチップ控えめで対地に使えるなら使うみたいになりますかね。
この分野の最前線には永遠に追いつけないだろうな…(; ̄▽ ̄)
簡単な方位ベースの対空射撃と単なる武装狙いカノンの命中率が変わらなかった
ちょっと悲しい
地上の軌道予測は簡単です
方位の1fあたりの変化量、XY距離の1fあたりの変化量があればOKE
距離÷(弾速ー距離変化量)×方位変化量
で弾が届くまでの変化の総量を出します
それを今の方位に足すだけです

対空だとこのやり方ではダメなので
対地対空兼用だとまた話が変わってきます
失礼。距離の変化量はなしでもいいみたい。
自分の好みでやっていた部分だったようです。

距離÷弾速×方位変化量 を今の方位に足せばOK

ただそれだと未来予測に使った情報が古いので少しハズれてしまうので
距離÷弾速で出した弾体到達見込み時間に数f〜7fくらいを加算して
前目に打つように帳尻あわせすることでカバーすることが多いです
TGが飛行型なら仰角の変化量を考慮するように分岐すれば大部分を共有して
体地対空を兼用出来ますね。
ただ、高度100で飛んでてくれれば当りますが
実際には高度変化して絶えず上下動する機体が多いので飛行にはたまにしか当りませんね
基本的には、地対地予測射撃の場合は
距離変化によって着弾時間がずれるので補正が必要、なんですが
大抵は距離変化が大きい≒方位変化が少ない、なので
結局補正量が微々たる数字になるため、距離変化の考慮はあんまりいらないですね。

地対空・空対地だと着弾時間のズレが仰角に大きく影響するので、
考慮してやらないとまずい気がします。
あとジャンプ予測の場合も要考慮ですね。
アングローケンゲイザーのショット、アヌビのカノンなどで使える対空用の移動射撃を作ったよ
自動旋回かけて前進している状態で使う用

1fあたりの方位変化量から自分の向きの変化量を補正
弾速から1fあたりの距離変化量を補正
する以外は普通の軌道予測と同じ
f数は数f加算ではなく1.1をかけてる

TGが被弾したら再ロックかけて(ガンサイト移動モードを解除して普段のTG追尾に戻す)
通常射撃で追撃
これで予測射撃で引っ掛けて追撃で破壊というシステムにできる
予測射撃といえば、冬の無制限大会優勝の朝雲って機体の予測射撃の精度がすごかったです
Xtendさんのコメをヒントに予測射撃にチャレンジしてますが、カウンタを莫迦みたいに圧迫するね(;w;)これ
朝雲は未来座標割り出してうつやつみたいですね
軌道&対空はループ一周に5fもかけて計算していますし
かなり凝ってますね
>>[41]
bishopさんのハデスがたしか予測射撃していたはずです。
SATLOKEのバックアップにあるかな?
お久しぶりです
bishopさんのハデスは予測射撃はまだ積んでいなかったような
脚付き相手に着地タイミングに合わせて射撃を開始する機能を積んでいました
(着地のちょっと前から射撃を開始して着地したところに通常射撃を当てる)

ハデスの予測射撃は非常に有効な手段になるかと思います
というのも相手によっては距離が離れたままになる場合があり(逃げるホバー、地雷飛行、木琴など)
そういった相手に予測射撃をすることで勝つ確率が変わるからです

ほかに実装した方がよい機能として 霧下のめくら打ちと
ミサイルの運用を相手によって変えることでしょうか
車両には開幕で捨てて、脚型には威嚇で使用し、それ以外は追撃ミサイル(追撃で使い切れない場合は終幕に放出することでフライポッドへの対策を兼ねる)など
霧下のめくら打ちは高火力の主武器を持ちながら、誤射の可能性の無い機体であることから
大変有効になります
着地予測射撃について
着地予測の実戦での効果性は、本命射撃の精度と頻度によって決まると思いますが
OKEのボディが大きいので精度はある程度妥協しても戦果を挙げられる場合もあります
頻度については監視を効率化することや、確実に本命弾を発射できるかで変わってくるでしょうが
ほとんどの場合足型は跳び回っていることが多いので
「地面で何かしているところを牽制で飛ばせて本命で射貫く」というパターンと同じくらいに
「空中の相手が着地したところを再ジャンプさせてその着地を拾う」というパターンが出てきます
相手がジャンプ状態でないときに監視に入る、とするだけでは再ジャンプ狙いの方が実現できないので
相手が地上近くまで降りてきたかもしくは着地したタイミングからも監視に入ることで再ジャンプの着地を捕えることができるでしょう
もう一つ頻度に影響する、確実に本命弾を発射できるかどうかでは
相手が監視中にジャンプしたら自分もジャンプすることで100%本命弾が発射できるようにする方法もありますが
これはかなりチップ消費が激しくなるのでなかなか導入は難しいかもしれません
接地の射撃で効率を高める方法としては、監視中や発射中は毎f見れることから飛翔物の検知距離を最小=ギリ回避距離にするという方法があります。

ログインすると、残り17件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

カルネージハートエクサ 更新情報

カルネージハートエクサのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。