May. 28, 2009
ZEUS、ZEUSUのOKE開発技術情報を探して来て集めたページです。 CHMLや各人の技術情報を勝手に集めてきました。(著者に確認してません、ごめんなさい。)

バースト射撃
バーストとは、射撃硬直や跳躍着地硬直を、おなじ優先順位の行為でキャンセルし、それをふたたび射撃や跳躍を挟んで相互キャンセルする事です。
書いててよく判らないと思うのですが、たとえば射撃には、実際に弾を出す前と後に動作があるのです。これが長くて射撃速度を遅くしてしまってるんですが、弾が出た瞬間にこの事後動作を別の射撃でキャンセルしてさらに元の射撃をする事で予備動作を無くして連射したりするのに使うのです。 (機体特性や武器により効果に差が出ますが、可変連射等として使用するにも有効です。)
つまり 射撃1 = 射撃前硬直、弾発射、射撃後硬直
タイムテーブルで書いてみると
射撃1x1発 = ------弾------ (---は。硬直状態で次の射撃ができない期間を表します)
射撃1→射撃1= ------弾------------弾------
射撃1x2発 = ------弾----弾------

これを射撃1→射撃2→射撃1とすると(弾が出た瞬間に射撃2、射撃1を連続する)
------弾X------弾 (Xは、射撃2でキャンセルされた事を示します。)
射撃2→射撃1の間隔が短ければこのXは見えません
つまり射撃2、射撃1と連続する事で射撃2自体はキャンセルだけに使われ射撃1が連発されます。これがバースト射撃です。

さてこのバースト使用例としてバーストの起動トリガーをターゲット被弾としてみます。
*       A         B         C     
  /\___/\___/\_↓_/\
  \/   \/   \/   \/
   |?機動作 |        |        |
01 ←   的   │        │        │
   | [被弾] |        |        |
  /\_∨_/\___/\___/\
  \/   \←   \/   \/
   |$状入力 |!的攻撃 |        |
02 │ A←w1残│  w1_2  │        │
   |        |        |        |
  /\_↓_/\___/\___/\
  \/   ▽/   \←   \/
   |?$比較  |$状入力 |!的攻撃 |
03 │ A= B  → B←w1残→  w2_1  │
   | (ABC..)|        |        |
  /\___/\___/\___/\
  \/   \/   \/   \/
このプログラムを解説すると、ターゲット被弾している時に、最初に射撃2、射撃1を連続実行し。 その後に射撃1をしつづけます。ここで射撃1の弾が減ったらA=BがNoとなり、 射撃1→射撃2→射撃1のバーストが発生します。 上記の例は、これだけの事をたったの6チップで実現しています。

CHMLの記事でまくんさんがまとめて発表されていました。非常に参考となる情報です。
メビウスループ
begin
HARD:
+[機体名 ]               ()
[OKE CODE]                           重量   AP
[BODY    ] ‐未選択‐                   0     0
[CPU     ] ‐未選択‐                   0     0
[Armor   ] ‐未選択‐                   0     0
[EX Armor] ‐なし‐                     0     0
[Weapon 1] ‐装備しない‐               0     0
[Option 1] ‐装備しない‐               0     0
[Total   ]                        0/    0     0
[Loadage ]                        0.00% (緑 / 緑)
[Paint   ] 塗装パターン1    (12,12,5) 
SOFT:
[MAIN:6x6/30]
*       A         B         C         D         E         F     
  /\___/\___/\___/\_↓_/\_ _/\___/\
  \/   \/   \/   \/   \/ ↑ \/   \/
   |        |        |?危  60m|?機  20m|!A     |        |
01 │        │        │高速 ▲1←敵全 ▲1>  格闘  │        │
   |        |        |   0,512|   0,128|        |        |
  /\___/\___/\_↓_△\_ _/\___/\___/\
  \/   \/   \/   \/ ↑ \←   \/   \/
   |!旋     |?的方向 |?機動作 | SUB   |?$比較  |$状入力 |
02 │  左回  ←        │   自   │   1    │ A≠ B  ← A←w1残│
   |        | 128,256| [射撃] |        | (ABC..)|        |
  /\_↓_/\_∨_/\_↓_△\___/\_∨_/\_ _/\
  \/   \/   \▽   \/   →/   \/ ↑ \/
   |?危  60m|!旋     |?的方向 |$状入力 |?的方向 |$状入力 |
03 │高速 ▲1←  右回  │        │ A←w1残│        │ B←w1残│
   |   0,512|        | 256,384|        |   0,128|        |
  /\_∨_→\___/\_↓_/\___/←_∨_/\_ _/\
  \/   \/   →/   \←   \/   \/ ↑ \/
   | SUB   |!的 320m|?機 120m|!的 320m|?状 熱量|!的 320m|
04 ←   1    │ 敵 全部│敵全 ▲1│ 敵 全部← ▼ 60% │ 敵 全部│
   |        |   0,512|   0,128|   0,512|        |   0,512|
  /\_ _/\___/←_∨_/\___/△___/\_ _/\
  \/ ∧ →/   \/   \/   \/   →/ ↑ \/
   |?危  60m|!動     |?状 熱量|!攻 120m|?危  60m| SUB   |
05 │高速 ▲1←  前進  │ ▼ 60% │ 全 w2_1│高速 ▲1>   1    │
   |   0,512|        |        |   0,128|   0,512|        |
  /\___/\_ _/←___△\_↓_/\___/\___/\
  \/   \/ ↑ \/   \/   →/   \/   \/
   |!A     |?機  20m|        |!攻 120m|        |        |
06 ←  格闘  <敵全 ▲1│        │ 全 w1_1│        │        │
   |        |   0,128|        |   0,128|        |        |
  /\___/\___/\___/\___/\___/\___/\
  \/   \/   \/   \/   \/   \/   \/
[SUB1:2x2/4]
*       A         B     
  /\___/\_↓_/\
  \/   \/   \/
   |!跳     |?危  60m|
01 ←  左J  <高速 ▲1│
   |        |   0, 64|
  /\___/\_↓_/\
  \/   \▽   \/
   |!跳     |?危  30m|
02 ←  前J  ←ミサ ▲1│
   |        | 256,128|
  /\___/\___/\
  \/   \/   \/
[SUB2:0x0/0]
comment:
メインループの思想を発展させた応用技術。考案者は椰子さん。射
撃中、旋回中、前進中などなど、個々の動作をループで高速管理し、
それらをひとつにまとめた集合体でひとつのメインコアを形成する。
このコアは離れて存在することもあるが、最低2つのループ同士が
状況変化分岐で密接に絡み合うので、見た目からメビウスループと
呼ばれている。その反応速度は多チップ機では間違いなく最速を実
現でき、省チップ機に迫れるだろう。メビウスの恩恵を受ける最た
るものは跳躍アクションを持つ脚型だ。ホバーや車輌、飛行では反
応を多少遅らせた遊びを作ることでスムーズに動く要素があるので、
メビウス実装による効果はせいぜいで至近での対処速度くらいだろ
う。省チップ機ではメビウスを実装する必然はないが、実装するに
超したことはない。メビウスループは「プログラムスタイル」であ
って、とくに決まった組み方は存在しない。事実S軍のメビウスル
ープも4通りの組み方をしている。ループ分岐を距離にしてもよい
し、熱量にしても良い。方位で分かれるものよし、旋回移動をすべ
て一括りにするのもよい。要素によっては外周に流すのがベストと
いうこともあるだろう。とにかくメビウスの輪をひとつ作っていれ
ば、メビウスループ実装には間違いないのである。
*メビウスループはすでに大会で優勝等の実績を挙げていて、参加
*者の半分近くが脚型制作時に採用しています。
メビウスループはメイン的な行動をすべてループ管理す
るプログラムスタイルです。このサンプルでは高速CPU
換算1〜2フレーム毎で、実際の多チップ機でも1〜3
フレーム毎の高速反応を実現できます。メビウス実装に
はサブ領域の使用が欠かせず、ZEUSタイプPRGでのみ可
能な技術です。現時点でもっとも強力なPRGを作ること
が出来る可能性を持つスタイルだと思われます。

end
begin Zpass
31G2 44D8 C1EB 88BC 8060 A05H 9A43 9574
43B1 1A20 1078 G3B5 8302 6835 C07A E20F
159E 16D1 0D5B G6D0 2C09 A10C 4C83 FD4B
BG6A A13E 0FF5 3F51 94C0 3FD4 09A0 D201
EB88 2C07 D632 4401 AD20 D281 EB89 H268
1702 C601 828G 8203 5AG1 3C88 9B36 6GAE
2025 8260 DDE0 6448 09D6 02
end Zpass

対レー妨会敵座標信号報知集結
begin
HARD:
+[機体名 ] 4HF5          (D50)
[OKE CODE]                           重量   AP
[BODY    ] ‐未選択‐                   0     0
[CPU     ] PSYCHE(高速)               200   300
[Armor   ] 20mm                         0   200
[EX Armor] ‐なし‐                     0     0
[Weapon 1] ‐装備しない‐               0     0
[Option 1] ‐装備しない‐               0     0
[Total   ]                        0/  200   500
[Loadage ]                        0.00% (緑 / 緑)
[Paint   ] 塗装パターン1    (12,12,5) 
SOFT:
[MAIN:5x10/49]
*       A         B         C         D         E     
  /\___/\___/\___/\___/\_↓_/\
  \/   \/   \/   \/   \/   \/
   |!旋     |?的方向 |?的方向 |!動     |!的 320m|
01 ←  左回  ←        <        →  前進  → 敵 全部│
   |        | 128,256| 256,384|        |   0,512|
  /\___/△___/\___/\___/←___/\
  \/   \/   \/   \←   \/   \/
   |!旋     |?障  30m|?$比較  |?的距離 |$受信   |
02 ←  右回  │ ▲ 24m ← C= 0  │ ▼  0m >A ≪ch.1│
   |        | 256,256| (123..)|        |        |
  /\___/←_∨_/△___/\___/←___/\
  \/   \/   \/   \▽   \/   \/
   |!動     |?障  30m|!動     |?$比較  |?MAP320m|
03 │  後退  < ▲ 24m →  前進  │ A= 0  →  [4A]  │
   |        |   0,256|        | (123..)|   0,128|
  /\_↓_/\___/←___/\___/←_∨_/\
  \/   \/   \/   \/   \/   \/
   |$演算   |$演算   |?MAP120m|?MAP320m|$xyz入力|
04 │ C← 1  │ C← 0  │  [5H]  ←  [5H]  > B←自X │
   | (123..)| (123..)| 128,256|   0,128|        |
  /\_↓_/←___/△_↓_/\___/\_↓_/\
  \/   \/   \/   \/   \/   \/
   |!高     |!旋     |?MAP120m|?$比較  |$演算   |
05 │  上空  ←  右回  <  [4A]  │ B▲20  ← B− A  │
   |        |        | 128,256| (123..)| (ABC..)|
  /\_↓_/\___/←___/△___→\___/\
  \/   \←   \/   \/   \/   \/
   |!的 320m|!旋     |?MAP320m|?MAP320m|?$比較  |
06 │ 敵 全部│  左回  │  [5H]  │  [5H]  < B▼-20 │
   |   0,512|        |   0,160|   0,160| (123..)|
  /\_↓_/\___/←_∨_/←_∨_/\_↓_/\
  \/   \/   \/   \/   \/   \/
   |?的方向 |!動     |!動     |!動     |$受信   |
07 ←        │  左移  │  右移  │  左移  │A ≪ch.2│
   |   0,512|        |        |        |        |
  /\_∨_/\___→\_↓_/←___/\_↓_/\
  \/   \←   \/   \/   \/   \/
   |$xyz入力|!的 320m|!高     |!動     |$xyz入力|
08 │ A←的X │ 敵 全部←  上空  ←  後退  │ B←自Y │
   |        |   0,512|        |        |        |
  /\_↓_/\___/\_ _/\_ _/\_↓_/\
  \/   \/   →/ ↑ \/ ↑ \/   \/
   |$発信   |!動     |!動     |?MAP320m|$演算   |
09 │A ≫ch.1│  後退  │  前進  <  [5H]  │ B− A  │
   |        |        |        |   0,160| (ABC..)|
  /\___→\___/\_ _/\_ _/←___/\
  \/   \/   \▽ ↑ \/ ∧ \/   \/
   |$発信   |$xyz入力|?MAP320m|?$比較  |        |
10 ←A ≫ch.2← A←的Y │  [5H]  ← B▲ 1  │        │
   |        |        |   0,160| (123..)|        |
  /\___/\___/\___/\___/\___/\
  \/   \/   \/   \/   \/   \/
[SUB1:0x0/0]
[SUB2:0x0/0]
comment:
敵と最初に出会った機体が、味方にその敵の座標を報せる。このロ
ジックでは味方は戦場の開幕2点を目印に敵位置目がけて殺到して
おり、実装機はしかる後に不幸な敵を袋叩きにする。目印近辺で報
せを受けると敵位置に上手くたどり着けない欠点を有するが、4辺
目印を採用すれば迷わなくなる。ただしかなりのPRG領域を要する。
*実装チームの優勝経験が複数。
このサンプルでは、レーダー妨害弾を受けるとまず前後
に壁スイッチ移動します。そして最初に敵と出会った機
体が味方に信号を発信し、味方は5A地点もしくは4H地点
を目印に敵さんのいる座標目指して移動します。

end
begin Zpass
4HF5 5D50 EAAD 0B09 0274 1FEA 04D2 1E19
641C BA0D 55FE 53A0 315H 9A42 8262 C072
E0A8 40B8 BFC7 5803 F6G9 A5E8 AC05 EAAC
GE95 0EB3 9D9G FE76 E1G4 D234 83C3 AE43
AB10 3A72 63D8 9H13 4A70 1FEA 1F9D 6013
E791 8263 6B40 9A55 D01E 1330 A105 4E28
0813 4B70 44F8 3FD4 6D05 85B8 4813 4C2C
G888 4GE1 809F 3BD4 9H13 4C38 16F0 A70E
04F9 E0C0 EH27 B77
end Zpass

バースト前転
begin
HARD:
+[機体名 ] 2G79          (BG3)
[OKE CODE]                           重量   AP
[BODY    ] ‐未選択‐                   0     0
[CPU     ] PSYCHE(高速)               200   300
[Armor   ] 20mm                         0   200
[EX Armor] ‐なし‐                     0     0
[Weapon 1] ‐装備しない‐               0     0
[Option 1] ‐装備しない‐               0     0
[Total   ]                        0/  200   500
[Loadage ]                        0.00% (緑 / 緑)
[Paint   ] 塗装パターン1    (12,12,5) 
SOFT:
[MAIN:3x4/12]
*       A         B         C     
  /\___/\___/\_↓_/\
  \/   \/   \/   \/
   |$演算   |?障  50m|?$比較  |
01 │ A← 0  │ ▲  3m ← A= 1  │
   | (123..)| -48, 96| (123..)|
  /\_ _→\_↓_△\_∨_/\
  \/ ↑ \/   \/   \/
   |?機動作 |*攻 w1_1|?障  50m|
02 │   自   ←方:   0 < ▲  3m │
   | [射撃] |角:   0 |  48, 96|
  /\_∨_/\___/\_↓_/\
  \/   \/   \/   \/
   |!A     |?機動作 |*攻 w1_1|
03 │  ★2   │   自   ←方:   0 │
   |        | [射撃] |角:   0 |
  /\_↓_/\_∨_→\_ _/\
  \/   \/   \/ ↑ \/
   |   ━   |!A     |$演算   |
04 ←   34   ←  ★1   │ A← 1  │
   |        |        | (123..)|
  /\___/\___/\___/\
  \/   \/   \/   \/
[SUB1:0x0/0]
[SUB2:0x0/0]
comment:
バースト跳躍は特殊アクションでも可能である。やり方はバースト
跳躍とおなじで、キャンセルに用いるのが伏せチップから射撃チッ
プに代わるだけだ。エッグだけは前転中の高度が一切変化しないの
で「見込みループ」となる。前転命令を出した直後に数フレームの
間を置き、足が地から離れてキャンセル不可能状態に入ってからも
う1回スイッチ判断部を通す。そしてキャンセルループに入るのだ
が、敵弾飛来がなくなったり格闘距離に入ったりしたら抜けるよう
にしておく。跳躍方向は自動的に見込みとなるが、もちろんこの後
でスイッチ判断をしてもよい。バースト特殊アクション回避で如実
に速くなるのはエッグだけだ。冥界・ノーラン・ネグは黄/赤重量
速度でない限り効果はほとんどないので、バースト行為に伴う初弾
回避率の低下を考えたら、実装させないのが良いと思われる。エッ
グは連続回避でおなじ方向に転がりつづける場合、転がりと転がり
の間で無視できない大きな隙が生じるので、バースト特殊アクショ
ン回避を実装したらよいだろう。私はエッグのバースト回避を個別
でバースト前転と呼んでいる。
*他がおなじロジックでバースト前転実装と非実装のエッグを戦わ
*せると、実装機が勝ち越します。
まず射撃命令を出し続けます。それが実行されたら即座
に前転アクションを行います。そしてノップを置いてキ
ャンセル不可能になるのを待ち、ふたたび射撃キャンセ
ルをかけはじめます。この繰り返しでおなじ方向への連
続前転をスムーズに行えます。効果は劇的です。

end
begin Zpass
2G79 8BG3 23E9 2041 A0C0 404D 6C08 84E0
3806 4C32 4G26 B164 61C4 2701 CG26 B074
45CD E02C 0409 FFC0 9C48 9
end Zpass

全機雷種判別
・全機雷種判別
*掲示板での議論で理論上可能だと判明しましたが、実装機はまだ。
*現段階では私がクラーケンと対地機雷を判別するロジックを開発
*していますが、これに炸裂系機雷を判別する要素をプラスした完
*全判別も可能という話です。以下は某製作法での私の解説です。
飛行型の中でロータスだけは機雷識別が出来る。機雷20〜30mくら
いで最高高度で旋回しつづけるだけだ。数秒たっても機雷がなくな
らない(動かない)場合、それはヴァルキリーなどの対地機雷なの
で、のちは機雷を無視してどんどん機雷原に突っ込んでいけばいい。
低空に下がるとヴァルキリーの掃射を受けるので、もちろん高高度
を維持しながらだ。旋回中に機雷が20m以内に近寄って来たら、そ
れはおそらくクラーケンなので旋回しつつ一気に低空に下がろう。
うまく行けばクラーケンを地面に叩きつけて消滅させることが出来
る。この機雷が至近射出アヴァランチだった場合は低下はかえって
ダメージを増やすが、不運とあきらめるしかない。ヴァルだったと
きの狙撃はあるていど覚悟しよう。ロータスが見分けることができ
る機雷はもうひとつある。それは炸裂系対空機雷とクラーケンとの
判別だ。機雷回避モードのデフォルトをクラーケンとし、回避を機
雷の距離別でわけておく。20m内では急速上昇旋回、40m内では高
度を中空にしつつ正面以外の方向に捉える。それで21〜40m内でい
きなり機雷が消えたときに、機雷判定を実施する。そのとき機雷が
20m内もしくは41m以遠にいたときはクラーケンとなる。消滅して
いたらアヴァランチないしはウィスプとなる。20m消滅は被弾の可
能性があるので採用できない。この方法は誤判断を防ぐためにクラ
ーケンを地面にぶつけて消さない上昇回避しか採用できないので、
長期戦を考えたら不利になる欠点を持つ。


inserted by FC2 system