実験04:弾幕系STGを作れ!STGツクールで1画面中に表示できる敵弾出現量は60まで。これに不満を感じた人は私だけではないはず。
今回はこの仕様の限界に挑戦します、、、が後で期待外れだとか言って石投げないでね。
なおこの実験で作ったブツはDLコーナーの「弾幕系テスト」です。DLして参照しつつ読んでもらうと良いかもしれません<SMALL>(設定したイベントには●印をつけておきました)</SMALL>。
作戦
まずは第2回実験こーなーを読むべし。以下の仕様を頭に叩き込んでおこう。
敵弾
| 60
| 通常の敵
| 最高で100
| 中ボス
| 10
| ボス
| 1
| 自機武器+爆風
| 自機を含めて80
|
これらのイベントが全て1画面中に出現可能。
つまり敵弾だけなら最高で60だが、敵弾+敵+武器+爆発イベントでは240になる<SMALL>(注:プレイヤー自身を含む)</SMALL>。
タネは簡単である。敵イベント、武器+爆発イベントを敵弾の方に回せばよいのだ。
そこで試験的にゲームを作ってみることにした。以下はほんの一例だと思ってほしい。
なおキャラオーバーしないように最初から各イベントを撃ち分けていく方法もあるが、今回は画面中のイベントを数えて危なくなったら切り替える作戦に出た。
テストゲー作成まずステージ設定で敵の出現数を100、移動速度を0にしておく。
移動速度を0にするのは敵弾とエセ敵弾の速さを統一するためである。(第3回実験こーなー参照。<SMALL>ちなみにDLコーナーのテストゲームは移動速度5になっており、敵イベントを使った敵弾だけ他の速度より10少なくしてある</SMALL>)
プレイヤーの武器はてきとーに設定。
当り判定はプレイヤーイベント自身には設定せず、別イベントで判定させることにした。色々便利なのもあるが、爆発イベントに敵弾の代わりをさせる以上は普通にやっていたのでは自機に当たらないので細工することにした。
ステージ開始位置に任意の敵イベントを置き<SMALL>(テスト用では参照しやすいようにしてありますが、普通は無色のパターンを設定)</SMALL>、84:シールド1を発生させることにする。シールド1は自機にぴったりくっつくので当たり判定にはもってこいである。
大きさは自機を中心に16x16。耐久力はとりあえず100、物体接触:死亡で、詳細タブ内の「敵弾吸収」チェックをONにする。
耐久力が99以下になるか、変数24が2になった場合(後述)は分岐してダメージ処理に入る。
今回はダメージを受けた際変数24に1を代入し、各イベントと連動させて弾が消えるようにした。
なお、本当なら変数で残機数を管理し、0になったらプレイヤーイベント(これだけ別階層に置いておく)に攻撃するのだが、今回はテスト用なので無敵でいいや。
<SMALL>(*他にも色々やり方はあると思います)</SMALL>
テスト用ということで敵は1匹だけにして、中ボス1にこれもてきとーに設定。
凝った攻撃方法にしようかと一瞬思ったが、めんどくさいのでひたすら敵弾1をばらまく設定にした。手抜きだのう。
まあ、でも、このへんは本当にてきとーでいいんで。今は。
ここまでは読み飛ばしてもらってもよかったんですが さてここから本題である敵弾の設定に取りかかる。
作戦の確認。敵弾イベントが50ちょっとになったら敵イベントに移行し、さらに敵イベントが90を超えたら爆発イベントで代用することにする。変数25で敵弾イベント、変数26で敵イベントの数を計測<SMALL>(最初は21、22を用いていたが、うまくいかなかった。妙なタイミングで初期化されるようである)</SMALL>。
ちょうど60、100で切り替えないのは余裕を持たせているということで。ちゃんとしたゲームを作る時に100で切り替えていたら敵本体が出現できないんで。
今回は148:敵21を「敵弾1の予備」、124:爆発17を「敵弾1予備の予備」とした。
敵弾1の設定。
出現と同時に変数25に+1。この時点で変数の値が53<SMALL>(てきとーに決めました)</SMALL>以上なら敵弾1予備を発生させ変数に-1、即死亡。
画面外に出たときは変数に-1して死亡。最初変数53で判断しようとしたが敵弾に関してはうまくいかなかったので座標で判断することに。
発射された後でも敵弾数を監視して、もしもの時は敵イベントに切り替えられるよう設定するのもいいと思う。
敵弾1予備の設定。
出現と同時に変数26に+1、、、あとはだいたい一緒。
なお普通の敵と一緒の階層にいると同じように被弾してマズイので、当たり判定と敵弾関係はスクリーン3と4の間、その他は2と3の間にした。
敵弾1予備の予備は爆発イベントのため普通にやってたら自機に当たらないので、IFPコマンドを利用して自機と一定距離になったら変数24に2を代入、後はイベント84の当たり判定で処理させることにした。
本当はこれも変数で数を管理したほうがいいかもしれないが、今回は省略。
リストラ106:中ボス爆発、107:ボス爆発はそのままにしておいたら一気に財政をひっ迫するので即死亡に。
どーせ日頃から使ってないし。(使ってる人ごめんなさい)
結果
これで一応完成になるんですかね。なにはともあれ動かしてみましょう。
せっかくなんでデフォルトのままでばら撒いた場合と比べてみましょうか。
使用前
|
使用後
| 「弾幕系テスト」で敵弾1の移動制御コマンドの最初にLPT-LPEの2行を足すと、「使用前」と同じ設定になります。
まあまあの迫力は出ますね。今回の設定だと最大で180くらい画面上に弾が出るはずですが。
考察
あとは製作者次第一つの例ではあるが、「200近くの弾をばら撒く」という行為が可能であることがわかった。
しかし無理をしているのは否めない。敵イベントや武器+爆発イベントを横取りしているわけなので、使いどころを考えないと肝心の武器や敵本体が出現できなくなる。派手な攻撃や爆発はかなり厳しくなるだろう。
また多方向弾や炸裂弾<SMALL>(かな?ぼかーんって鳴ったら弾がいっぱい出てくるやつ)</SMALL>などは同時に多量の弾を発生させるため、今回の方法を使うなら弾制限をぎりぎりにしておくと危ない。状況に応じて制限数を変数で管理するのも1つの方法だろう。
切り替えを行わずに最初から撃ち分けを行う場合は、どの場面に各イベントがどれだけ登場するかを計算しないと痛い目に合う。
また、今回は1つの弾に対して3つイベントを費やしたが、これを採用すると普通にやっていてはイベント数が足らなくなるだろう<SMALL>(特に敵イベントなどは日頃から「足りねぇよ」とか思っている製作者もいるのでは)</SMALL>。SEQコマンドや変数を駆使し、いつもに増してイベント数を節約することが要求される。
つまりは製作者の腕次第である。がんばってください。石は投げないでください。
[此贴子已经被作者于2005-1-20 8:56:29编辑过] |