シューティング用スクリプト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ページくらいの仕様書が出来そうな気がしてきた...
# ...このエントリは失敗かも.