同人界を揺るがすシューティングゲームを創ろうぜ日誌 第四夜 | でたとこTRY@CATCH!

同人界を揺るがすシューティングゲームを創ろうぜ日誌 第四夜

Debugビルドならうまく行くのに、
Releaseビルドにすると弾幕や敵が消える……。
意味わかんねぇ死ねコラァアアッ!!!

――という事件から1000年。
細かくログを出したらあっさり原因が解明した。

オブジェクトの生死フラグが未初期化。


たったこれだけのことであった。

つまりDebugビルドだと常に初期値がtrueが入っていたことになる。
Releaseビルドにするとそこが不定、いやfalseが入る確率が高くなり、敵が最初から「死」の状態になったらしい。

ほんと今まで初期化をなめててすみませんでした。
何もしなけりゃ0が入るんじゃねぇの? とか思ってた自分が未熟でした。反省のため、半年間山に籠もったり、滝に打たれたり修行してくる夢を見ようと思います。
仕事ではそりゃちゃんと全てのメンバを初期化するんですけどね。でもほら、自作ゲームまでそんなしっかりしなくてもイイジャン? とか、そう思ってたのが甘かったと。プログラムなめんなと。そういうことですよ。

よい子のみんなも、初期化には気をつけようぜ!


でたとこTRY@CATCH!-開発中4
※とりあえず剣をまともなモノにしました。敵弾も大きくしました。

ってことで、開発再開。

とりあえずボタン一つでスクリーンショットが撮れる機能を追加。
これまでハードコピーで画像を取り込んでいたけど、上記はその機能を利用して保存したもの。

それとステージクラスを作って、敵やその他のオブジェクトの出現をそこに任せた。
ステージ開始からの経過時間と、ステータスの判定で、ステージ進行を行う。
例えば、最初は「state : 0」の状態だとして、

■state == 0 && 経過時間 == 5秒 のとき、
 ・ザコ10体出現(ザコは倒されなければ5秒間で画面外へ消える)
 ・stateを1に
■state == 1 && 経過時間 == 15秒のとき
 ・中ボス出現(中ボスは倒されるまで消えない)
 ・stateを2に
■state == 2 のとき
 ・中ボスの生死を判定
  中ボスが生きていればそのまま
  中ボスが死んでいればstateを3に

という具合。
なんだけど、他の人たちはどうやっているのだろう?
上記だとif文がずらずらと連なって、あまりスマートなコードではないような。
でも仕方ないような気も。

シューティングゲーム開発ベテランのみなさま、
どうやってるのか意見ください。