シューティングゲーム設計について。弾編

アバター
TOMY
記事: 53
登録日時: 12年前
住所: 愛知県
連絡を取る:

シューティングゲーム設計について。弾編

投稿記事 by TOMY » 11年前

現在作っていたシューティングゲームが結局、発表間に合わなかった。しかも納期が迫る焦りとシューティングゲームをあんまり作ったことがなかった経験の不足から、いろいろやらかしてしまったため、この日記で反省点と、設計について(先生に指摘された限りで)書き記しておこうと思う。

1、単体で行動するオブジェクトは絶対にまとめるな。
さっさと答えを言ってしまうと、弾をまとめて管理したり、何かキャラクタと同じクラス、構造体に突っ込むのはタブーということ。
少し前にここの掲示板でも同じ質問があったため記載。
弾は1発でひとつのオブジェクトのため、何かと共通させてしまうと、個別での処理が効かなくなってしまう。
方法としては弾のクラス(1発分)を作って弾を発射するキャラクタなどのクラスに攻撃時に必要な情報を吐き出すメソッドを用意、弾生成時にそのメソッドから情報を受け取った弾クラスは、その後独立して更新、描画させるというもの。自分は弾をキャラクタと一緒くたにしたり、数十発分で一つとよくまとめてしまったせいで当たり判定の処理で泣きを見ていた。
よく1発の弾が一定フレーム経つと炸裂する処理で弾をまとめる(一つのクラスに最初の一発分の弾とその後炸裂するための複数発の弾をまとめている)生徒が多いと先生が嘆いていたが、こういうのもタブー。上記の通り当たり判定とかそれ以外でも後で絶対泣きをみる。
じゃあどうすりゃいいんねん!という人はこのあと2以降の事項を見て。
これはたまに限らず、単体で単独行動するオブジェクト全てに言えることである。

2、どんな弾も(基本は)『直進弾』と『ホーミング弾』しか存在しない
これはどんなに綺麗な動き、カオスな動きをしている弾も分解しちまえば直進弾とホーミング弾の2つに分類できるということ。
放射線状に撃つ弾も一つだけで見れば直進弾だし、キャラクターを追いかけてから炸裂する弾もホーミングの後に直進弾を撃っているに過ぎない。つまりこの2つの動かし方を覚えれば、後はアレンジでいろんな弾が作れるということ。

3、弾の行動管理はフレームごとに。
例えば最初の40フレームまではホーミング、40から59フレームまでは直進、60フレームは一度弾を『解放』(←ここ重要)。61フレームから先は炸裂弾を生成という風にすることでホーミングした後に炸裂するいやらしい弾を作れる。等、管理が非常に楽になることから。そのために弾1発分のクラスになんか引数を入れたらホーミングと方向性直進弾が撃てる等、挙動を変更するメソッドを(全種類)ぶち込んでおくことが望ましいとのこと。そうすることで任意のタイミングで弾の挙動をリアルタイムにいじれる。

4、『動きパターン』は配列で管理してもいい。
あくまで動きパターンだけ。この項目についてはまだ研究中なので一概に言い切れないが、あくまで弾のクラスは個別に処理し、動きパターンは配列で持って処理させることによって、
セット単位の弾を処理しやすくするというこのなのかもしれない(ボスとかがよく使うセット単位の攻撃)。あくまで弾を単発で作るのは個別に消したり、生成したり、当たり判定等を管理させやすくしたりする為なので。

まだ自分もシューティングの設計に関しては研究中なのでこれ以上は自信持って書けない(上記に関しても一分不安あり)けど少なくても上に書いたことはシューティングにかぎらずプログラムにおいては必須要項なので忘れないようにしたい。ていうか忘れたくない。というか忘れるのが怖い。

ちなみにシューティングに関して一部この作品群を参考にしています。(両方共フリーゲーム)↓
[nico]http://www.nicovideo.jp/watch/sm1737490[/nico]
↑BGMに合わせて玉の動きがリアルタイムに変化するなど無駄にクオリティの高いネタゲー
[nico]http://www.nicovideo.jp/watch/sm2873421[/nico]
↑言わずと知れた同人シューティングの王道。
最後に編集したユーザー TOMY on 2012年10月02日(火) 23:37 [ 編集 3 回目 ]

コメントはまだありません。