FC2ブログ
汎用ヒト型決戦遊具はじめました。
SUB領域を3つにしたい
2006年10月31日 (火) | 編集 |

今後本格的に予測射撃を導入するために、チップスペース確保のための省チップ化を進めたいと思います。

・同じような処理は、1つにまとめる。
・処理を省チップ化する。
・踏む頻度の高い処理をSUBに入れる。
・使われていない機能を省く。

と、それぞれ組み直すのに時間がかかりますが、できること自体はさほど多くありません。

一方、自分のプログラムを見ると、熱管理用のSUB2の領域が、数チップしか使われておらずデッドスペースになっているのが気になります。
SUB2の処理は、「熱を帯びたら冷却を効率よく使う」というシンプルなものです。

このデッドスペースをなんとか有効活用してみたいわけです。


(1)SUB2の処理を、SUB1の回避ルーチンに押し込む。

これは簡単そうです。
メイン領域での「飛来物判断」からSUB1の回避ルーチンへ飛ぶように使っているのですが、
SUB1の1チップ目に「飛来物が回避範囲に無ければ熱処理へ」と熱処理をさせて外に出すようにすればいいわけです。
SUB1チップ一つで、熱処理のみの場合は熱処理のみ、回避が必要な場合には回避をする一石二鳥の便利ルーチンに早変わりです。
ただし、SUB1の入り口に1チップ増えるため、1フレームでジャンプを実行したい場合、回避方向処理に3チップしか使えないことになります。
これはそれなりに苦しくなります。


(2)SUB2の領域に、ジャミング対策などを押し込む。

滅多に使わないジャミング対策が、それなりのチップを食っています。
今、カウンタHに敵機番号を入れていますが、見失ったらHに「ー1」などを代入し、SUB2の入り口で「H=-1ならジャミング対策へ」の1枚を噛ませれば、それがパーティションの役割を果たし、SUB領域が実質上1つ増えることになります
これが、タイトルに書いた「SUB領域を3つにする」活用案です。
もちろん、パーティションで区切るだけですので、使えるチップ数が増えるどころか2枚以上余分に必要になりますが、場合によっては総チップ数は減ると思います。
予測射撃がコンパクトに収まれば、それをSUB領域に格納することもできそうです。

要は、SUB領域の最初に条件分岐のチップを1枚おくことだけで、1枚で2種類の機能を持つ便利な「SUBチップ」になりますよね~ということであります。
ちなみに、思いついただけで未実装であります。

スポンサーサイト



未勝利戦おつかれさまでした。
2006年10月30日 (月) | 編集 |

2ch大会の未勝利戦、とても楽しめました。
主催者の方、本当にお疲れ様でした。そしてヘルプ書き込みをしてくださった方&追加参加の受け入れを容認してくださった参加者のみなさま、ありがとうございました。
コメントが参加者への改善点のアドバイスとして秀逸で、参加者全員にとって意義のある大会になったと思います。
私のようなクラスのプレイヤーには、とてもうれしい企画でした。



マングース計画3aの戦績
(アラクネー/ブルーマングース1029)

対アングリフ ○ A3F Tech. ( akisute )
対アングリフ ○ Aggressiv ( Nuts )
対アラクネー × Sedition. ( Cool-Wind )
対綾影    × 綾華士団 ( SG )
対チァーイカ × 縁側ゴロネーズ ( またぎや寝 )
対月影    × 炎炎風之射手3 ( ぽぽんか )
対フライド  × 不羅井戸3 ( koto )
対モッキン  × チーム1ST ( earl )
対バジリスク ○ KAMIKAZE ( MONO )
対ジェイラー ○ シューティングスター ( GUM )
対ラスティ  ○ ジャミラ ( ヘメレケ )
対モッキン  × Kasamasy ( Kasamasy )
対アラクネー × 白熊さん’S ( エンチョー )
対月影    ○ シャルケ04装甲猟兵連隊 ( 櫻色 )
対チァーイカ × 鴎一式部隊 ( UK )

対空対脚への対応プログラムを搭載できなかったこともあり、混戦の中の8位という結果になりました。
例によってガンダムにたとえるならば、ジオングの設計者が足から先に作り始め、やっと本体に着手できるというところで時間切れとなり、シャア大佐が足だけで出撃するはめになったようなものです。非対応機に関しては勝てる要素がありません。



唯一の救いは、決勝でアングリフ2チーム、バジリスク1チームの全車両に勝てていることです。
1位のAggressivの全勝を食い止めることができたのは、対車両特化アラクネー作成研究が出自である「マングース計画」シリーズとしては、ぎりぎり面目を保てたと思いたいです。

ここはひとつ、対応した部分に関しては結果が出せた、と前向きに考えたいところです。



今後に期待が持てるのがやはり二脚です。
二脚はマトが小さく、急速移動でカノンを回避するので、今後着地狙い撃ちが完成したとしてもほとんど効かないことになります。
二脚の弱点を考えると、メインの対抗策は転ばしラッシュでのゴリ押しになると思いますが、なんにせよ二脚の仮想敵が増えたのは楽しさ倍増なことであります。



昨晩、寝る前に上位のアラクネー同士の戦闘をいくつか見てみました。
ポイントは、140m付近では各機種一体どういう戦いをするのだろうか?というところです。
ざっと見たところ、200m~120m付近では互いにミサイルを当てるべく、つかず離れず省エネ的に牽制しあっているというのが一番よく見るシチュエーションでした。
被弾を最小限に抑えつつ、ミサイルヒットでのダメージや、カノンヒットからのラッシュをひたすら伺うという戦術のようです。
カノンの撃ち合い時に、ほぼ安全といえる距離を保つその戦術はちょっと消極的とも取れますが、相手の弾薬切れ、エネルギー切れ、プログラムバグの露呈を誘う効果もあるため、弱点のある機体はそこでふるい落とされます。といいますか、ズバリ私の機体がそこでふるい落とされます><



おかげさまで今回の大会でも、これまたいろいろと課題は明確になりました。
今後とも精進させていただきたいと思います。ぺこり。

4チップで全弾発射
2006年10月29日 (日) | 編集 |

2CH大会用に機体を作りました。
対車両でそこそこの戦績のあったブルーマングースをベースに、付け焼き刃的にいぢってみました。
マングースベースということで、障害物の配置などの都合でたまに勝てていた「満デーイ」への勝率をアップすべく調整をはじめたらいぢるほどに弱くなるという例のパターンにはまりました。
対空も読み方がいまだに分からない「驟雨」に勝てるようにしようとおもいつつ手詰まり&時間切れ。
対四脚に関しては小ミサイル→大ミサイルのコンボのみなんとか搭載。
しかし、それ以外は遠中近距離とオールラウンドに何も出来ないポンコツとなりました。

と、いろいろいいわけを書きましたが、そもそも自宅の回線がいつのまにか2ch書き込み禁止になっていたらしく、ジュピターへのアップのみで出場表明が出来ずじまいでした。wikiの使われていない掲示板も参戦表明に使えたら便利なのに!
次回は携帯やエッジ経由での書き込みを試してみます。



対四脚での戦い方について、どうしようか悩んでいます。

 30m以内(格闘域):格闘戦距離  
100m以内(近距離):カノン撃ち合い
200m付近(中距離):着地狙い撃ち
350m付近(遠距離):ミサイル中心

とすると、格闘はしないように間合いを開けつつ、近距離のカノン撃ち合いでは極秘裏に研究中の「ひとり時間差撃ち」が成功すればそれを導入できればよし、中距離・遠距離も現在研究中のものを進めればよいとして・・・140mぐらいの微妙な距離をどうすればいいのか皆目見当がつきません。
ジャンプ射撃は当たらないし、かといって地面で狙いを定めていたら逆にいいマトになってしまう距離。ジャンプこの領域を避けるべきなのでしょうか。なんとも微妙です。寝る前に改めて他の優秀なアラクネーを見てみたいと思います。



「ひとり時間差撃ち」はやろうとしてなかなか着手できていないアイデアです。
原理は至ってシンプルで、ジャンプで撃ち合いになる90m付近で、

1)相手がジャンプするのを待つ
2)相手のジャンプを検知したら数Fの間ディレイ
3)相手の着地硬直開始に、こちらのジャンプ射撃を発射するタイミングで
  ジャンプ射撃を発動
4)相手の硬直解除直前に、着弾

というものです。
そううまくいくかは分かりませんが、予測射撃と併せて使うことで、カノンの活用範囲を増やせるのではと皮算用しております。



予測射撃の可能性について、先行機体である「Devin好き」氏の「峰打ち君1号」を改めて見てみました。
勝敗はミサイルの運用による感じですが、予測当てがじんわりと判定に貢献しているようです。
計算をチップから精査するには理解力が足りませんので、以前いただいたコメントのような計算をしているのだなあという程度の理解に留めておこうと思います。



敗北間際のミサイル放出処理を作っていて気づいたことをメモします。
「残弾が0なら他の武装を使う」という処理で省チップが出来ました。

武装3→武装2→武装1の順番で空にしたいとき、

[1]「武装2をジャンプ射撃(通過)」
   ↓
[2]「武装3をジャンプ射撃(通過)」
   ↓
[3]ディレイ1F
   ↓
[4]「武装1をジャンプ射撃(通過)」

とすることで、残弾判断チップを省略できました。
・武装3の残弾があるときには、[1]が[2]で上書き実行される。
・武装3の残弾が0になると、[2]のチップが不実行となるので、
 [1]の実行が生きる。
・武装3も2も0の場合、[1][2]のチップが不実行となり、[4]が実行される
という具合です。
[3]のディレイがないと、毎回[4]のみが実行されてしまいます。
※ちなみに、フレームの切れ目が[2]と[3]の間に来るようにすれば、[3]のチップも不要かもしれません。(未検証)

「OKE開発ノート」を更新しました。
2006年10月27日 (金) | 編集 |

9月7日~前回までのブログの分を、右下にリンクのあります「OKE開発ノート」にまとめました。
いただいたコメントからのティップスなどもまとめてあります。
なかなか実用的なノートになったと思います。

いただいたコメントの情報価値の高さに、改めて感謝している次第であります。



過去のコメントを読みつつ、gaku氏の状況把握式のジャンプ方向決定方法を読みながら、ふと思いつくことがありました。

昔なにかで読んだのですが、
チェスの思考プログラムの原始的な方法として、
取れるコマにスコアを設定しておき、スコアの高いコマを取れる手を選ぶようにする、という手法があったそうです。

それを、このゲームに応用できそうな気がちょっとしました。

ジャンプするとして、左右の着地点予定地点に関して、
味方が近ければ  2点
壁が近ければ   1点
地雷があれば   3点
のようにスコアを加算し、
左右で比較してより合計危険スコアの低い方にジャンプする、
という方法です。

・・・と、ここまで書いてチップ食いそうでジャンプが遅れるなと思いました。



格闘ホーミングをいまさら導入しましたが、その性能の高さに驚いております。
相手を向くのに4枚は使っていたところが2枚で済み、なおかつジャンプ待ちなど行動の合間に手軽にはさめるので、活用はマストであります。

リロードのみ先行させて狙いを後回しにしてみたい
2006年10月25日 (水) | 編集 |

なんどか動作するようになった着地予測射撃ですが、実装への微調整の前に、根本的な課題をしておかなくてはなりません。

前回のテストで分かったのは、
「着地の8Fの間に弾がギリギリ届かず、予測分のカノンもジャンプで避けられてしまう」

という問題点です。
TGがジャンプするのを待って、左右に打ち分けているというところに大きな問題があるようですが、ジャンプで避けられるのは240m付近でも数フレの差であり、あと一工夫で間に合うようになるかもしれません。



そこで思いついたのが、「カウンタ指定射撃」において、いわゆる「リロード時間」を先行して消費しつつ、撃つ直前に指定数値を更新して、方向が決定するなり発射する方法がとれないか?ということです。

ご存じの通り「カウンタ指定射撃」は、たとえばアラクネーでは発動から発射までに約10Fの「リロード時間」(というか準備時間)を要します。

また、チップは、全く同じ行動チップを2枚重ねて発動しても、1枚目の行動実行をそのまま継続する(2枚目を踏んだ時に改めてその行動をやり直さない)という性質があるらしいことも経験上わかっています。(※精査はしていません。)

この2つの要素を組み合わせて考えるならば、
1枚目の「カウンタ指定射撃」チップの実行後、発射間際に改めて指定数値を更新し、2枚目の「カウンタ指定射撃」チップを踏ませることで、リロード時間を消化しつつも狙った位置に撃てるのではないかと予想できます。



さっそく実験してみました。

【その1:普通のカウンタ指定射撃】
1)カウンタAに方向代入
2)カウンタBに仰角代入
3)カウンタC=C+1(フレーム測定用)
4)カウンタ指定射撃
5)行動停止

結果:
10フレームで問題なく発射。


【その2:カウンタ指定射撃後に数値変更】
1)カウンタAに方向代入
2)カウンタBに0度と仰角を代入
3)カウンタC=C+1(フレーム測定用)
4)カウンタ指定射撃
5)カウンタBに40度の仰角を代入
6)行動停止

結果:
10フレームで、仰角0度に発射。
「カウンタ指定射撃」は、実行時点の射角数値の適用で発射される。


【その3:カウンタ指定射撃の数値を変更し、再度実行する。】
1)カウンタAに方向代入
2)カウンタBに0度と仰角を代入
3)カウンタC=C+1(フレーム測定用)
4)カウンタ指定射撃(射角A、仰角B)
5)カウンタBに40度の仰角を代入
6)カウンタ指定射撃(射角A、仰角B)
7)行動停止

結果:
10フレームで、仰角40度に発射。
「カウンタ指定射撃」は、チップを2枚使うことで、リロードの消化時間に角度を更新することができる。(たぶん)


・・・というわけで、予想通りのうれしい結果が出ました!
過去に存在したというバースト射撃のようにリロード時間が短縮されるものではありませんが、予測射撃において10Fを先行消化できるのは非常に助かります
予測射撃の研究はほとんど需要がないようですので、このリロード時間消化についても気づいている方はそれほど多くないのではないでしょうか。
今回は久々に面白い発見が出来たと思います。
(検証が甘めなので、ぬか喜びにならないといいのですが。)



かなりいいところまで来ましたが、予測射撃の開発はいったん中止し、ミサイルありで大会用の機体を組みたいと思います。
現行、そもそも開発が途中だった上に、さらに機体が古くなりすぎて、対車両である程度勝てていたマングース計画機ですら車両に勝てなくなり、対車両、対空、対四脚とオールラウンドに何もできない状態になっておりますので・・・。

着地予測射撃をなんとか実装したい
2006年10月23日 (月) | 編集 |

前回までの研究で、
300m程度の遠方の静止したターゲットに、カウンタ指定射撃で50%以上の命中度を得る補正値を得ることができました。
そして、ジャンプ機体の着地位置を大まかに予言するプチ予測射撃の計算式も得ることができました。

ダヴィデ計画もいよいよ大詰め。
今回は実装に向けての課題解決です。

・どう撃つか?
・撃つタイミングを作れるか?
・長時間硬直のリスクは返上できるか?
・コンパクトに実装できるか?

さっそくチップを並べたいところですが、愚鈍な私が闇雲に並べるとまた迷宮入りになりますので、ここは慎重に。
やるべきことを整理してみます。
データ取得と射撃&回避を同時並行に処理する必要があります。
多少絡み合っていますが、まずはそれぞれの要素について列記してみます。


【予測射撃開始可能かを判断する】
(1)最短距離の敵をロック。
(2)TG(ターゲット)が多脚か?
(3)TGの距離が200m以遠か?
(4)もしくは自機ロックフリーか。
(5)条件がそろえば予測射撃ルーチンへ。


【敵の動きとデータを取得する】
(1)TGの距離を取得。
(2)TGの動作を取得。
(3)ジャンプ中なら無視。
(4)ジャンプ中でなければ、敵の角度を取得。
(5)(ジャンプ回避を誘う。)
(6)ジャンプを開始したら、ジャンプ方向を判断。
(7)着地予想点を計算。
(8)(予測射撃を放つ。)


【回避&予測射撃行動】
ケース1:相手が静止中の場合
(1)飛来物があればジャンプ射撃(4F+24F)をジャブにする。なければ指定射撃(13F)。
(2)相手がジャンプを始めたら着地予想点を計算。
(3)飛来物があれば回避行動。→(1)へ
(4)予測射撃一発目
(5)飛来物があれば回避行動。→(1)へ
(6)予測射撃二発目

ケース2:相手がジャンプ中の場合
(1)着地まで待つ。
(2)ケース1へ。


【ラッシュ攻撃】
(1)TGが被弾状態か?
(2)狙撃or指定射撃で連射。


【静止射撃が許される時間】
TGが250mと仮定して、狙撃カノンの到達時間を考えると、こちらが静止が許される時間は、最高速反応で回避するとして最短で20F。(実際には相手のリロード時間および発射までのタイムラグもあるので少なくとも4F以上の上積みを期待できそうです。)


計算式を4チップ程度まで軽量・簡略化してみましたが、それ以外の部分でかなりチップコストがかかりそうです。
やるべきことはかなり多そうですが、以上の要素を合成してなんとかコンパクトにまとめたいわけであります。
というわけで、下のようにまとめてみました。


【予測射撃開始判断】
1)最短距離の敵をロック。
   ↓
2)TGが多脚か? N→(外へ)
  Y↓
○)TGの距離を取得(カウンタG)。
   ↓
3)TGの距離(G)が200m以遠か?Y→予測射撃ルーチンへ。
  N↓
4)もしくは自機ロックフリーか?Y→予測射撃ルーチンへ。


【予測射撃ルーチン】

1)TGがジャンプ中か?Y→ 防御(通過) →1)へ。
  N↓
2)TGが静止中か?N→ 防御(通過) →1)へ。
  Y↓
●)TGが被弾中か?Y→ ラッシュルーチンへ。
  N↓
3)TGの角度を取得(カウンタA)。
   ↓
4)TGがジャンプ中か?N→ 乱射 →防御(通過) →4)へ。
  Y↓
○)カウンタC=1543
   ↓
○)カウンタC=C÷G
   ↓
○)ディレイ2~3F
   ↓
5)TGの角度を取得(カウンタB)。
   ↓
6)カウンタBがA以上?
   ↓Yなら右ジャンプ、Nなら左ジャンプ
7)カウンタA=A+CorカウンタA=AーC
   ↓
○)カウンタA=A+(簡易補正値)
   ↓
8)カウンタB=固定仰角値
   ↓
9)カウンタ指定射撃(射角A、仰角B、2発)
   ↓
10)ディレイ約5F~14F
   ↓
11)1)へ。


【ラッシュルーチン】

1)TGが被弾中か?N→ (予測射撃ルーチンへ)
  Y↓
2)TGの角度を取得(カウンタA)。
   ↓
3)カウンタB=固定仰角値
   ↓
4)カウンタ指定射撃(射角A、仰角B、6発)
   ↓
5)1)へ。


・・・通過だけで20チップ以上もありフクザツな感じもしますが、フレーム数にすれば5F程度ということで、これは実装の範疇内という気がします。
3発目以降はひとつ前の射撃をジャブ(ジャンプ誘い用)としてつかるようにループにしたつもりです。
本来なら回避すべきところをザクッと「防御」でまとめたところは、実戦に向けての大きな不安要素でもありますが・・・。
また、ラッシュルーチンも、現状のままだと相手が回復する時間が充分にあるのでラッシュにはなり得ない気もします・・・。

が、それはそれ。

果たして動くかどうか・・・?

動きました!
若干チップを微調整しましたが、ジャンプ機体の着地を狙い、かなりそれっぽい方角へ予測射撃します。

ただ、射撃の間隔が大きすぎるためか、着地の8Fの間に弾がギリギリ届かず、予測分のカノンもジャンプで避けられてしまいます。

しかし、まだまだ、諦めるつもりはありません。
次回は連射オプション使用などで詰めてみたいと思います。

ミサイルをなしにしたい
2006年10月22日 (日) | 編集 |

1ヶ月以上も戦える機体を発表していないのに、マイペースに研究だけは続けております。
最新機体もDLしていないので、どんどん時代遅れになっております。
そして、弱い癖にミサイル非搭載機の可能性を考えております。
今後研究が進むほど、ミサイルが当たらなくなる気がしているからです。



その前に、ジャンプ機にミサイルを当てる可能性についても考えてみたいです。

【着地狙いタイフーン】

手堅くムラマサ→ディレイ→タイフーンで試してみました。
着地の硬直8Fを狙ってタイフーンを当てる手法であります。

理屈上は、1発目のジャブで相手をジャンプをさせ、
2発目を、「着地した瞬間に相手の約26m前に本命ミサイルが到着しているようなタイミング」で撃てばおそらく成功します。
着地硬直8Fの間に、静止したマトに向けて本命ミサイルがホーミング完了するという皮算用です。

注意点は、ジャブにムラマサを使う場合、分裂時に減速することです。
が、タイミングを調整すればジャンプ射撃を利用してミサイル発射をすることもできるので、発射硬直も通常の撃ち合いとさほど変わりませんし、それほど問題は大きくなさそうです。

ジャンプ中のECM発動を優先するなど、「着地狙いミサイル」を検知してECMを発動されれば回避されてしまいますが、検知にはそれなりのテクニックも必要になると思われます。

手元で試しましたが、9月ごろの機体が相手であれば、命中率はかなりのものです。
現役で使えるテクニックと言えそうです。

これまた理屈上の理論ですが、「ジャブにカノン→着地硬直にタイフーン」という絶妙なタイミングを敵の距離から割り出して発射することができれば、アラクネーでも計6発のタイフーンを当てることができるようになりそうです。(もちろん、都合良く相手が非対応だった場合ですが!)


【ロック解除当て】

以前からボンヤリと考えていた手法です。
ECMやしゃがみジャンプでミサイルを避けられてしまうのは、ミサイルに追尾機能が付いているからなわけで、だったらミサイルから追尾機能を消してしまえばむしろあたるのでは?
という強引な着目によるものです。

1)追尾燃料が切れて弾頭だけが着弾する距離で撃つ。
2)ヒット直前にターゲットロックを解除してみる。

の2種類が考えられ(?)ます。

2)については、単純にロックを外してミサイルを直進させることが出来れば有りな気もするのですが、ロックを単純に解除する方法はおそらく発見されていないので、味方にロックを切り替えるなどの代替にするしかなく、あまり現実的ではなさそうなので検証していません。

1)については試してみました。
360m先のアラクネーに、ヴァイパーを撃ってみました。
ギリギリでしゃがみジャンプをする相手にたいしては、希に当たることがありました。
しかし、余裕を持って回避する相手に対しては、通常の飛来物回避として処理されるという結果に終わりました(笑)



とここまで調べ、また別のことが気になりました。
ヴァイパーなどの小型ミサイルをもうすこし有効活用できないか?ということです。

追尾燃料が切れたミサイルは、重力に従って落ちます。
ということは、飛距離を伸ばすには、方角指定射撃で上方に打ち上げておくか、低い位置から発射して、燃料切れ後のベクトルを上方に向けておけばよいのではないか、と期待せずにはいられません!

結果的には、・・・ほとんど差は出ませんでした。
高く撃ってもその分距離が増えて燃料切れが早まるため、トントンになるようです。

しかしながら、小ミサイルの中でも飛距離があるとされるヴァイパーは、弾頭だけならば350mぐらいはがんばれました
これだけがんばれれば、ジャンプ回避を誘うことはできるので、小ミサイルを着地タイフーン狙いのジャブミサイルとして運用することは可能と言えそうです。



「追尾切れミサイル」は、処理上はミサイルとは見なされず、飛来物と見なされるようです。
これが吉とでるか凶とでるかです。

小型ならではの搭載量(アラクネーなら12発)を利用して、ECM削りに使いたいところですが、ミサイルと認識させ、ECMを発動させるには300mが限界という感じです。
しかし、300m以内の距離から2発ずつ撃ち集中ミサイルと誤認させてECMを削るには役立ちそうです。
2発×5回の定期ミサイルでECM1個を消費させ、残り2発を本命タイフーン用のジャブ弾として運用するとするならば、一つの運用法として可能性がありそうではあります。

もし、360m付近での戦闘と割り切ることができれば、
「追尾切れミサイル」のジャブ→ディレイ→本命タイフーン
と組み合わることで、コンボミサイルを単発タイフーンと誤認させることも出来そうです。
ムラマサ→タイフーンへの対策しかない相手には、効き目があるかもしれません。



というわけで、2ヶ月ぐらい情報の遅いミサイル運用研究でしたが、まだまだミサイルは主流な感じがします。今後さらに研究が進み、撃ち方と回避処理の相性がジャンケンのような関係になれば、ミサイルは有用というところで落ち着くとも思えます。
ミサイル運用にはミサイル運用の面白さとロマンがまだまだありそうです。



予測射撃はロマンの方がまだ途中でしたので、次回からまたそちらを進めようと思います。
11月にはまた大会にも出られるようにがんばります。

300m先の動かない冥界にまずなんとか当てたい(その2)
2006年10月20日 (金) | 編集 |

かなり遠方(360m)で「伏せ」上体の冥界に、ランダム要素のあるカウンタ指定射撃で、なんとか50%近くの精度で当てることができるようになりました。

次は、立っている状態にはどうかという検証です。



いきなり結論ですが、立っている状態としゃがんでいる状態では当然のことながらベスト仰角が別の数値になります。
理由は説明するまでもありませんが、立ち状態としゃがみ状態ではストライクゾーンが倍ぐらいズレるためです。

さらに微妙なことですが、立っている冥界に当てるベスト仰角&射角は、


■■□□
┏■□┐
┃  │


こんな感じに、黒い部分、つまり足を含んで狙うのがベストっぽい感じにです。
といいますのも、四脚とくに冥界は足が細く本体も平べったいため、機体の中心を撃ち抜いたつもりでも弾が股下をくぐる場合が多いためです。

カノンの弾道が微妙に弧を描くことに期待し、立ち伏せ両方に当たるポイントを探ろうとしましたが、弧の描き方がかなり浅いらしく、それも無理でした。

ベスト仰角補正について、「伏せ」に特化するか「立ち」をカバーしつつ「伏せ」への命中率を犠牲にするか悩みどころです。



そこで、改めて冥界のジャンプをコマ送りで見てみることにしました。
予測射撃で狙おうとしているジャンプ後の硬直は、アラクネーと同じ8フレームです。
しかも、8フレーム全コマについて、「伏せ」状態になっていることが分かりました。

となると、「立ち」状態はどうやら無視してよさそうです!



そうなればしめたもの。
「伏せ」冥界をいろんな距離におき、0.1度刻みでどんどんストライクポイントを探します。

例によって10回あてるまでの必要弾数の計測5セットずつ行いました。
各距離である程度のベスト仰射角を求めたあと、
その傾向をもとに、帰納的にざくっと数値を整理。
そこから改めて演繹的に算出されたベスト仰射角の精度をテスト。

その結果、200m以内では90%以上、300m以上でも50%程度の精度を得られる(と期待したい)補正値を獲得できました。



仰射角の補正値は敵の距離から求められる簡単な関数になっています。
これをチップで計算するのも手ですが、実装に向けてはまず、狙いたい距離での補正値を単純加算してみようと思います。



と、ここまでは順調に来たのですが、大きな壁がいくつも残っています。

・どう撃つか?
・撃つタイミングを作れるか?
・長時間硬直のリスクは返上できるか?
・コンパクトに実装できるか?

そして、
・ジャンプがメインとなる中近距離の撃ちあいではどう戦う?

一つ一つ解決していく必要がありますが、また四脚との1オンに戻り、開発を進めたいと思います。

300m先の動かない冥界にまずなんとか当てたい
2006年10月19日 (木) | 編集 |

ジャンプする四脚の着地地点を予測し、それっぽい方角へ打つことはなんとかできなくもないというところまで来ました。

今は、仰角と水平射角の補正を研究中であります。
ド文系の私にとって、実戦でのカノン予測射撃は、強い弱いはさておき、もはやロマンあふれるプチプロジェクトとなっております。



まず、360m先の「伏せ」状態の冥界に対し、カウンター指定射撃がそもそも当たり得るのか?というところから実験です。

ご存知の通り、かない標的を狙ってもカウンター指定射撃は動毎回微妙かつランダムにブレるので、狙撃に比べて精度は低くなります。
精度の低さを乱射と同級のリロードスピードで埋め合わせるというゲームバランスになっているようですが、360mの大遠投となると、このブレは大きな壁となります。
もう一つ、アラクネーの左手ゆえの大砲の癖をどう克服するかも問題になります。

というわけで、
新幹線の移動時間を利用して、
10発命中するまでの必要弾数を、
仰角と補正角度を0.1ずつ変更しながら、
5回ずつ測定しました。

気分はちょっと星一徹です。
ストライクまで延々とアラクネーに投げさせます。

星一徹の気分とは言いましたがなんせ単調な作業のため、気づくと寝てしまい何度もやり直すという非効率的な調査になりました。
が、なんとか命中率50%を確保できそうな角度の組み合わせが2つ見つかりました。

50%はギリギリ夢をつなげる数値です。
着地予想地点に2発撃てば1発ぐらい当たるという期待が持てる数値です。

さらに、計測が信頼できるものであると仮定するならば、試した中でもっとも命中率が高い射角は、ブレの要素を差し引いた時に相手を中心に捉えている射角と言うこともできます。

中心を捉えた射角から多少ブレるという要素は、もともと、2連射の1発目と2発目のそれぞれに組み込もうとしていた要素であり、問題ないわけです。

結果的に、予測射撃の邪魔だったシステム内のズラしプログラムを、逆に味方につけたということにもなりました。・・・あくまで結果的にですが。



次は、360m先に「立っている」状態の冥界に50%を達成できるか検証です。

「伏せ」用で50%当てた角度でこれも同時に達成できれば、メインの使用範囲であり、なおかつより近くて当てることが容易であろう200m~300mの設定により高い希望が持てます。

さっそく挑戦であります!

(次回に続く)

各機体の横ジャンプ力を知りたい
2006年10月18日 (水) | 編集 |

距離からずらし角度を取得するタイプの予測射撃の実用性について調べてみることにしました。
久しぶりの体力測定です。
ジャンプ可能な機体について、超軽量時と超重量時(あと1メモリでレッドゾーン)の2段階で、
それぞれ横ジャンプの飛距離を調べてみました。
なお、測定には8月に作りました「SOKUTEI1.CHP」(@ジュピター)を使用しました。

機体名   軽量時横ジャンプ(m)/重量時(m)

ネグローニ 40.2/29.0
ジェイラー 17.3/12.0
エッグ   20.0/14.1
綾影    27.2/19.2
ラスティー 26.7/17.2
ノーランダ 40.7/33.0
トリンカー 43.6/31.4
月影    33.9/24.5

セメタリー 36.3/24.6
ドッグ   38.7/25.6
グラス   32.0/22.0
アラクネー 32.8/21.0
冥界    32.5/21.3

こうしてみると、四脚はほぼ同一値で大丈夫そうです。特に要注意の冥界とアラクネーのジャンプ力がほぼ同値なのが救いです。
調整が必要なのは、むしろ仰角な感じです。
アラクネーも着地時はちょっと平べったくなりますし、さらに平べったい冥界に当てるのは、かなり至難の業な気がします。
とはいえ、いくつかの距離に応じたベスト仰角さえ測定できれば、式を簡易化すれば組み込めなくもないような気がします。



ランダムマップ用に、開幕ジャンプで自機のZ座標の差分を計り、そこから仰角係数を割り振るという強引な適応法も考えられそうではありますが、煩雑になりすぎるので、とりあえずは、演習場での予測風射撃の実用化を目指してみます。



ガンダムバトルロワイヤルは「重力からの開放」の面で挫折中です。
それにしても、レーダーの感じとか、場外壁の雰囲気とか、動きの描写の雰囲気とか、同じ会社が作ったことに思わず頷いてしまうソックリさであります。

距離から着地位置を予測してみたい
2006年10月14日 (土) | 編集 |

ジャンプしてから着地するまでの距離を取得し、次の射撃に反映させるタイプの着地予測射撃を作っていましたが、練習がてらアラクネーに限定した予測射撃を作ってみることにしました。



算数の知識で計算式を作ってみました。
距離の取得から予測ずらし角度の獲得まで4チップと案外コンパクトです。
実際にはスパイスの係数を入れたり、仰角も入れたり、また射撃時にずらし角度を足したり引いたりする必要もあるので、組み入れには10チップ以上使うと思います。



そもそも敵のアラクネーが自分にたいして直角にジャンプしてくれないと当たらない仕組みです・・・

(下図はクリックで拡大します。)
3.jpg


狙撃の仕組みが気になる
2006年10月08日 (日) | 編集 |

「狙撃」チップ
遊んでいての憶測ですが、
・チップが実行されると、
 数フレーム前の相手の場所と、発射時の相手の場所から、
 その2点を直線で結んだ線の延長戦上に、着弾までの時間を加味して、
 砲撃する。
・ので、ジャンプなど「等速で直線的ではない動き」に関しては予測できない。
と勝手に解釈しています。

相手が等速で移動する砲撃バジリスクなどの場合、狙撃が非常によく当たるのはこういう理由だと考えています。
飛行機にカノンが当たるのも、飛行機の回避プログラムが連続で作動した場合などに、動きが直線的になり、そこにカノン狙撃がヒットする、と考えています。

では何フレーム前の敵位置を狙撃用のデータとして使っているのか?となると検証も難しくまだ出来ていません。
また、狙撃状態が長いほどよく狙撃が当たるという実感があるので、もう少し複雑な式かもしれませんし、取得するデータも2点だけではないかもしれません。その辺はよく分かりません。



忙殺されすぎてじっくり遊ぶ時間がとれないので、アタマを休めて遊べそうな「ガンダムバトルロワイヤル」を買ってみました。



射撃ボタンを押しっぱなしにすると「予測射撃」というのが出来るのですが、これがカルポの「狙撃」と同じような感じでした。
相手の移動速度から割り出したっぽい着弾予測地点にロックマーカーがずれ、相手が移動パターンを変更せずに等速移動すれば、当たる、というものです。
(もちろん、アクションゲームということで、ビームを撃った後微妙に自動追尾がかかっているようですが)



そんなこんなでどんどん時代に取り残されている今日この頃であります。