シューティング用スクリプト2


随分と古いエントリですが,「シューティング用スクリプト」の続き.


# まず,今回のエントリを書くに至った言い訳
趣味ゲームプログラマ系巡回経路内に
ゲームプログラムめも日記より「シューティングのスクリプト」
というエントリがありまして,今自分がやっている事がそのままな感じがしました.
ひょっとしたら,自分の作ったスクリプトの仕様をオープンにする需要って
少しはあるのかな?って思ったのが1つ.
ってのと,2週間くらい前のエントリ「初めての関節」内で,何やら
「スクリプトのコマンドリファレンスを作ろうと決心」したらしい俺がいるご様子.
# えぇ,もちろん,やってませんが.何か.
まぁ,そんなこんなで,自分が作ったシューティング用スクリプトの仕様を
ぼちぼちと書いてみようかなと思った次第です.


# これって意味あるのかなぁ...
# っと,すごく疑心暗鬼になりつつ...


まず,どんな感じのスクリプトかを俯瞰で眺めてみる.
昨日の「遅延旋回砲台」の敵機のスクリプト.

//うにゃ胴
DefEnemy  UNYA
  SetModel  MDL_UNYA
  const:
    ene.HitPoint      100
    SetSize           48
    create            UNYAHEAD, 1, 0, 0, 1
    mot               0, -3, 0, 0.1
  dest:
    DestroyEnemy      1, 1
    gosub     EXPLOSION
    snd.Play  EXP_S
    AddBonus  1000
  esc:
    DestroyEnemy      1, 0
  main:
    wait      25
    acc       0, 0
    wait      180
    vel       0, 0
    wait

//うにゃ頭
DefEnemy UNYAHEAD
  SetModel  MDL_UNYAH
  const:
    ene.HitPoint      0
  main:
    for b
      SetChild      BULN, 0, 0, 0
      SetCannon     gl.rank*40+10, 160
      StartHeadTurn aim, 0, 3, 1
      wait          gl.rank*60+100
      StartHeadTurn aim, 0, 0.5, 1
      fire          abs, head, 3
      SetCannon     1, 0
      for a, 1, 10, 1
        wait          8
        SetChild      BULN, 1, 16, -10, 0
        fire          abs, head, 3
        SetChild      BULN, 1, -16, -10, 0
        fire          abs, head, 3
      next
    next
    wait


ちなみにこれ単独では動きません.
別のところで,まとめてリソースをロードするスクリプトが書いてあって,

    LoadModel    MDL_UNYA,  "model\unyaa.mqo",  0.4, 0.4, 0.4
    LoadModel    MDL_UNYAH, "model\unyaah.mqo", 0.4, 0.4, 0.4
    LoadSound    EXP_S,     "sound\exp_s.wav"


あと,汎用性の高いスクリプトはサブルーチン化してあったりします.

// 基本爆発パターン
sub EXPLOSION
  SetChild    EXPL, 0, 0, 0
  SetCannon   6, 360, 1.2, 1
  fire        abs, 0, 0.8
  return
DefParticle EXPL
  SetBitmap           EXPLOSION
  const:
    SetLifeTerm         25, 1
    bmp.TexCoord        0, 0, 0.5, 0.5
    bmp.Size            52, 52
    bmp.Rotation        rnd(20)-10
    vel                 vx, vy-6, 5
    acc                 ax, -0.2, 0.4, 20

// 針状弾
DefBullet BULN
  SetBitmap           SPRITE32
  const:
    bmp.TexCoord        0.25, 0, 0.25, 0.25
    bmp.Size            24, 24
    bmp.Rotation        0, 0, 1
  dest:
    create              EAT_EFFECT_S


...ここまでにしておこう.
まずは,一部を抜粋したんですけど,これを全部説明するのは無理かも.
# まぁ,晒すだけでも意味はあるのかも.と自分を納得させてみる.
# ちなみに,現在スクリプトのコマンド数は139種類.
# 何というか,20ページくらいの仕様書が出来そうな気がしてきた...


# ...このエントリは失敗かも.