同人界を揺るがすシューティングゲームを創ろうぜ日誌 第四夜
Debugビルドならうまく行くのに、
Releaseビルドにすると弾幕や敵が消える……。
意味わかんねぇ死ねコラァアアッ!!!
――という事件から1000年。
細かくログを出したらあっさり原因が解明した。
オブジェクトの生死フラグが未初期化。
たったこれだけのことであった。
つまりDebugビルドだと常に初期値がtrueが入っていたことになる。
Releaseビルドにするとそこが不定、いやfalseが入る確率が高くなり、敵が最初から「死」の状態になったらしい。
ほんと今まで初期化をなめててすみませんでした。
何もしなけりゃ0が入るんじゃねぇの? とか思ってた自分が未熟でした。反省のため、半年間山に籠もったり、滝に打たれたり修行してくる夢を見ようと思います。
仕事ではそりゃちゃんと全てのメンバを初期化するんですけどね。でもほら、自作ゲームまでそんなしっかりしなくてもイイジャン? とか、そう思ってたのが甘かったと。プログラムなめんなと。そういうことですよ。
よい子のみんなも、初期化には気をつけようぜ!
※とりあえず剣をまともなモノにしました。敵弾も大きくしました。
ってことで、開発再開。
とりあえずボタン一つでスクリーンショットが撮れる機能を追加。
これまでハードコピーで画像を取り込んでいたけど、上記はその機能を利用して保存したもの。
それとステージクラスを作って、敵やその他のオブジェクトの出現をそこに任せた。
ステージ開始からの経過時間と、ステータスの判定で、ステージ進行を行う。
例えば、最初は「state : 0」の状態だとして、
■state == 0 && 経過時間 == 5秒 のとき、
・ザコ10体出現(ザコは倒されなければ5秒間で画面外へ消える)
・stateを1に
■state == 1 && 経過時間 == 15秒のとき
・中ボス出現(中ボスは倒されるまで消えない)
・stateを2に
■state == 2 のとき
・中ボスの生死を判定
中ボスが生きていればそのまま
中ボスが死んでいればstateを3に
という具合。
なんだけど、他の人たちはどうやっているのだろう?
上記だとif文がずらずらと連なって、あまりスマートなコードではないような。
でも仕方ないような気も。
シューティングゲーム開発ベテランのみなさま、
どうやってるのか意見ください。
Releaseビルドにすると弾幕や敵が消える……。
意味わかんねぇ死ねコラァアアッ!!!
――という事件から1000年。
細かくログを出したらあっさり原因が解明した。
オブジェクトの生死フラグが未初期化。
たったこれだけのことであった。
つまりDebugビルドだと常に初期値がtrueが入っていたことになる。
Releaseビルドにするとそこが不定、いやfalseが入る確率が高くなり、敵が最初から「死」の状態になったらしい。
ほんと今まで初期化をなめててすみませんでした。
何もしなけりゃ0が入るんじゃねぇの? とか思ってた自分が未熟でした。反省のため、半年間山に籠もったり、滝に打たれたり修行してくる夢を見ようと思います。
仕事ではそりゃちゃんと全てのメンバを初期化するんですけどね。でもほら、自作ゲームまでそんなしっかりしなくてもイイジャン? とか、そう思ってたのが甘かったと。プログラムなめんなと。そういうことですよ。
よい子のみんなも、初期化には気をつけようぜ!
※とりあえず剣をまともなモノにしました。敵弾も大きくしました。
ってことで、開発再開。
とりあえずボタン一つでスクリーンショットが撮れる機能を追加。
これまでハードコピーで画像を取り込んでいたけど、上記はその機能を利用して保存したもの。
それとステージクラスを作って、敵やその他のオブジェクトの出現をそこに任せた。
ステージ開始からの経過時間と、ステータスの判定で、ステージ進行を行う。
例えば、最初は「state : 0」の状態だとして、
■state == 0 && 経過時間 == 5秒 のとき、
・ザコ10体出現(ザコは倒されなければ5秒間で画面外へ消える)
・stateを1に
■state == 1 && 経過時間 == 15秒のとき
・中ボス出現(中ボスは倒されるまで消えない)
・stateを2に
■state == 2 のとき
・中ボスの生死を判定
中ボスが生きていればそのまま
中ボスが死んでいればstateを3に
という具合。
なんだけど、他の人たちはどうやっているのだろう?
上記だとif文がずらずらと連なって、あまりスマートなコードではないような。
でも仕方ないような気も。
シューティングゲーム開発ベテランのみなさま、
どうやってるのか意見ください。