=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 『バースト射撃の手引き』 注意───────────────────────────────┐ │このドキュメントはZEUSに対応しています。ZEUS2でも利用可能なテク │ │ニックですが、ZEUS2ではカノンの連射間隔は変更されて大幅に短く │ │なっているので、ありがたみは減っています。以下に出てくる例や値は│ │すべてZEUSのものであることに気をつけてください。 │ └────────────────────────────────┘ 「バースト射撃」とは、OKEの通常性能を超えて連射するテクニックです。OKEに よっては、2倍以上の連射速度を出すことも可能です。 また、通常の連射は8連射までですが、バースト射撃では連射が途切れる事が無 いのも特徴です。 バースト射撃のよい例が小林の作成した[CARNAGE 11064]のセメタリーキーパー 「ドカチン君三世」です。通常の連射間隔が0.85秒のカノン砲を、約半分の間 隔で撃ち続けます。プログラムは4×4と小さいので末尾に添付します。 【バースト射撃が有効なOKE】 バースト射撃はどのOKEでもできますが、射撃前硬直が連射間隔とくらべて短い ほど効果的です。セメタリーキーパー、エッグノッグ、ラスティネールなどが代 表でしょう。 【バースト射撃のやり方は?】 簡単に説明すると、 「射撃により弾が出た直後に、その射撃チップで行なわれるはずの残りの動作を 全てキャンセルし、新たに射撃を始める」 です。 射撃動作は「射撃前硬直」「連射中」「射撃後硬直」に分けられます。1発しか 撃たない場合は当然「射撃前硬直」「射撃後硬直」だけになります。下のタイム チャートを見てください。例はセメタリーキーパーのカノン砲を2発射撃です。 0 1 2 3 4 5 -(フレーム)→ 012345678901234567890123456789012345678901234567890 F ! ! N <------><---------------><---------------------> 前硬直 連射中 後硬直 Fは射撃チップを実行したフレーム、!は弾が出るタイミング(フレームの境目) です。Nは射撃チップが終了した次のフレームです。このフレームから移動可能 になります。 ここで、射撃はどのタイミングでも別の行動でキャンセルできる、という性質を 利用します。上の最初の!の直後に射撃をキャンセルして、再度射撃を始めると、 以下のようになります。 0 1 2 3 4 5 -(フレーム)→ 012345678901234567890123456789012345678901234567890123456 F ! F ! ! N <------><------><---------------><---------------------> 前硬直 前硬直 連射中 後硬直 ほら、普通に連射すると17フレームもかかるのに、キャンセルを入れると1発目 と2発目の間がたったの8フレームですね。これが「バースト射撃」です。5回繰 り返すと下のようになります。目に見えて速さが判ります。 0 1 2 3 4 5 -(フレーム)→ 012345678901234567890123456789012345678901234567890 F ! F ! F ! F ! F ! 【キャンセルの方法】 射撃1を射撃1でキャンセルはできないので、実際には射撃1をガードでキャンセ ルし、その直後にガードを射撃1でキャンセルする、という手順を取ります。 ガードの代わりに、別の武器の射撃(注1)や★1〜3でも構いません。もちろん実 際に射撃をキャンセルできる動作でないと駄目です。例えばロータスはガードや ★2が出来ませんので、それらのチップでのキャンセルは不可能です。 【キャンセルのタイミング】 下の図は1フレームをさらにチップ単位(低速CPU: 1frame=3chip)に分割してます。 "F"が射撃チップ、"G"がガードチップ、":"はフレームの境目、"!"は発射タイミ ングです。 frame : 0 : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : chip :123:123:123:123:123:123:123:123:123: F----------------------------!G 射撃前硬直が8フレームの場合、フレーム0で"F"を実行したら、フレーム7と8の 間の"!"で弾が出るので、キャンセルはそれ以後に行えばOKです。上の図では "G"以降です。 そして次の射撃チップはガードチップと同じフレームにおけるので、最速パター ンは、 0 : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 :10 :11 :12 :13 :14 :15 :16 :17 : 123:123:123:123:123:123:123:123:123:123:123:123:123:123:123:123:123:123: F----------------------------!G.F----------------------------!G.F----- となります。"."は適当なチップです。これで8フレームで1発出る事になります。 第8フレームは"G.F"となっていますが、".GF"でも"GF."でも構いません。 キャンセルするフレーム数は各OKEの機動性区分(注2)と武器により決まります。 OKE全機種の全武器の硬直時間を[CARNAGE 8455][CARNAGE 8459]でしまさんが表 にまとめていますから、そこから該当する射撃前硬直時間を求めます。 【バースト射撃のプログラミング】 バースト射撃をプログラムする場合、おもに2種類のやり方があります。 (1)はプログラムサイズが小さくなるというメリットがあります。 (2)は機体/武器/機動性区分/CPU速度に依らない、というメリットがあります。 (1)必要フレーム数待ってからキャンセル 射撃チップとキャンセルチップの前に射撃前硬直に相当する分のウェイトを置き ます。「ドカチン君」はこの方法を取っています。 キャンセルチップの前に射撃チップを含めて「射撃前硬直フレーム数×CPUスピー ド」以上のチップがあればOKです。nカウントNOPを使っても構いません。 上のやり方では最小でも1チップ時間分ロスがあります(注3)が、フレーム同期を 取って動くプログラム(プログラムのすべての経路に置いて、チップ数がCPU性能 の倍数になるプログラム)なら、ロス無しにすることが可能です。しかし、手間 が大きいのでおすすめしません。 欠点は先に挙げた(2)のメリットの裏返しです。機体/武器/機動性区分/CPU速度 でプログラムが変ってしまうことです。このうち機動性区分だけは戦闘中にも変 化するので注意が必要です。 実例を挙げます。下のプログラムはフレーム同期型です。エッグノッグに低速 CPUを積んでテストしてみてください。熱爆発しなければ100発を20秒で撃ち尽く します。 START タイムチャート ┌----↓----┬----------┐ │ ガード → 射撃1-1 │ : 0 : 1 : 2 : 3 : 4 : 5 ├----↑----┼----↓----┤ :123:123:123:123:123:123 │ NOP ← NOP 8 │ :GF-------------!GF-----... └----------┴----------┘ (2)残弾数をチェックし、弾が減った時にキャンセル キャンセルするタイミングは、弾が出たときですから、その瞬間には弾が減りま す。よって、弾数を監視していればキャンセルタイミングが自動で判ります。 一例として、下にサブルーチンを挙げます。 ┌----------┬----------┬----------┐ → 射撃1 ← ガード ← ? A=B │ ├----↓----┼----------∠----↑----┤ │ A←残弾1 →?自射撃中 > B←残弾1 │ └----------┴----↓----┴----------┘ ループの中に自分の射撃中チェックを入れないと、ループ中に転倒したときに無 限ループに陥ります。あとは適当に熱量チェックなどでアレンジしてください。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= (注1) 同じ武器の射撃チップでも、上下角区分が異なるチップならキャンセル可能だ、 という、しまさんによる報告[CARNAGE 8582]があります。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= (注2) OKEは、積載重量や様々な効果によって、機動性が変化します。機動性区分とは、 OKEの機動性の変化の区分で、4段階(緑>白>黄>赤)あります。 機体重量によって、基本の機動性が決まります。これは戦闘中にも変化します。 ┌─────────┬─────┐ │機体重量/積載重量│基本機動性│ ├─────────┼─────┤ │ 71%未満※ │ 緑 │ │ 101%未満※ │ 白 │ │ 130%以下 │ 黄 │ └─────────┴─────┘ ※ 機体重量表示の色と実際の基本機動性は約1%ずれています。例えば積載重量 5300のエッグノッグは、実際は、5352まで積んでも機動性は白です。 また、機体状態によって以下の修正が行われます。これらの修正は重複します。 ┌───────────┬─────┐ │機体状態 │機動性修正│ ├───────────┼─────┤ │機体冷却装置1個作動中 │一段階低下│ │機体修理装置1個作動中 │一段階低下│ │誘導妨害装置1個作動中 │一段階低下│ │約90%以上のダメージ† │一段階低下│ │加速装置1個作動中 │一段階上昇│ └───────────┴─────┘ ただし、機動性は緑が上限、赤が下限です。 † エッグノッグを使って目測で調査しました。別のOKEで閾値が変るかは未調査 です。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= (注3) 低速CPUなら、0.33フレーム。 中速CPUなら、0.25フレーム。 高速CPUなら、0.20フレーム。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= (おまけ) begin HARD: +[機体名 ] ドカチン君三世 (小林健一) [OKE CODE] DKCHN3 重量 VP [BODY ] セメタリ−キ−パ− 2200 900 [CPU ] PSYCHE(高速) 200 300 [Armor ] 80mm 2640 320 [EX Armor] 対徹甲 440 300 [Weapon 1] 215mmカノン x 105 2100 1470 [Weapon 2] ソニックブラスター x 4 100 80 [Weapon 3] アヴァランチ x 6 420 240 [Option 1] 機体冷却装置 100 100 [Option 2] 機体冷却装置 100 100 [Total ] 6400/ 8300 3810 [Loadage ] 129.68% (黄 / 黄) [Paint ] 塗装パターン4 (16,7,0) (0,0,0) SOFT: [MAIN:4x4/16] * A B C D /\___/\_ _/\___/\_↓_/\ \/   \/ ↑ \/   \/   \/ |!旋 |!攻 320m|?残 w2 |?危 70m| 01 ← 左回 │ 全 w2_1< ▲ 1 <ミサ ▲1│ | | 0,320| | 0,320| /\___/\___/\___→\_↓_/\ \/   \←   \/   \/   \/ |!動 |?機 320m|!跳 |?危 70m| 02 ← 前進 <敵全 ▲1│ 右J <高速 ▲1│ | | 64, 64| | 0,160| /\___/\___/\___→\_↓_/\ \/   →/   \/   \/   \/ |?機動作 | OP | OP |?状 熱量| 03 │ 自 │ 2 ← 1 < ▲ 70% │ | [射撃] | | | | /\_∨_/\_↓_/\___/\_↓_/\ \/   \←   \/   \/   \/ | ━ |!攻 20m|!攻 180m|!攻 160m| 04 ← 34 │ 飛 w3_1← 全 w1_1← 全 w3_1│ | | 256,192| 0,320| 0,320| /\___/\___/\___/\___/\ \/   \/   \/   \/   \/ [SUB1:0x0/0] [SUB2:0x0/0] comment: C04のカノン射撃チップをD04の武器3射撃チップでキャンセルします。 end begin Zpass 3HF4 8G9F A40E F102 3660 4B12 026A 0B01 7F10 7D40 8E36 6023 6202 6A60 C42A 2560 F987 G9A8 1D12 3C14 2204 604C 5G8C 097A 8013 FF81 3888 4 end Zpass =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 【改版履歴】 0.90版 981204発行 初版 0.91版 981204修正 後藤(と)さんのコメント反映 プログラミング(1)に欠点追加 0.99版 991016修正 ZEUS2のコメント追加 おまけをドカチン君三世に差し換え =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=