恐怖のフリーズバグ
完成の悦びも束の間、突然このようなメッセージが出てゲームがフリーズします。これはプログラムの無限ループが原因で起こるバグで原因究明にはなかなか骨が折れます。今回これが出てしまったので顛末を記載します。プログラムの話なので興味のない方は読み飛ばしてくださいね。
フェイスズーム時にお○んぽを出したままコスチェンジするとフリーズしてしまうのでそこから原因を辿っていきます。まずコスチェンジプログラム中の怪しい命令を一つずつ実行しながら動作を確認していきます。
するとチェンジ時に表情をリセットする命令が原因だと分かりました。
さらに追跡して行くと今度はその中の手足の動きを制御する命令が原因と判明。
この中に手足をアニメーションさせるためにfor文というものがあります。プログラムを少しでも勉強された方はご存知と思いますがこれは繰り返し処理をさせる構文で、フリーズした時はまずforを疑えと言うぐらいなのでどうもこれが怪しい。案の定無効にしたら直ったのでこいつが犯人です。
forには繰り返し回数を設定しますがどうもそこに数値が入力されていないので無限ループに入っているようです。
回数には脚パーツの現在のフレームナンバーを元にした数値を入力することになっているのですが結局原因はこのプログラムが実行される時にはまだ脚パーツの読み込みが完了していないからと判明。なので対象そのものが存在しない時は命令を実行しないように改良して解決しました。但し本来ならそうならないように脚の側に実行プログラムを書いておくべきなのですが。
このように読み込みラグのようなアーキテクチャが原因のバグは実際に起こってみないと分からないので厄介です。
もしフリーズバグを発見されたらご報告頂けると幸いです。怖いけど。