「初期化は大事だよ」という話

ゲーム開発をしています。(unityでも同じだけどこの記事ではgodotの話をしている。)

タイトル画面を作り、実際にゲーム画面を作る。そして、ゲームオーバー画面を作った。

ゲームオーバーするとタイトルに戻るという一連の流れだ。

このとき初期化が必要となる。シングルトンやstaticの値を初期化しなければ次のゲームで必ずエラーがでることになる。

作っているときは、あまり初期化のことを気にしないかもしれない。特にゲーム画面を作っているときは最低限の初期化はするがもう一度読み込まれるなんてことはあまり想定していない。

ゲーム画面はかなり多くのノードを使うことになるだろうけど、その全てを初期化しなければいけない。基本的にノードを移行するときに初期化されるものは多いが、上で書いたシングルトンとstaticは初期化されない。これでエラーが出るととても焦る。

そもそもゲームオーバーを作る前にゲーム画面を作り込んでいくとコード量が増えていく。

シングルトンもstaticも数が増えていくととても大変だ。

そして、実際ゲームが完成し、ゲームオーバーやエンディングを作ってタイトル画面に戻ってもう一度プレイしようとするとエラーで止まるというわけだ。だから最初から初期化のことを念頭においておかないといけない。というか、プレイ(ゲーム)画面もそこそこにゲームオーバーを作り一旦タイトルに戻る処理を作った方がいいかもしれない。全体の流れがあり、一応動いているということを確認してからゲーム画面を作り込むとエラーもすぐに見つけられる。

ということで、シングルトンやstaticはある意味では手動で初期化が必要となってくるので注意したい。