開発初期からある再現性の低いバグ
現在制作中のローグライクゲームで開発初期からあるバグがあります。
ソースコードの、
var stepX = path[1].x * baseSize;
という処理に差し掛かると「path[1]にはxというパラメータは無い」といった内容のエラーが出てフリーズします。
タイトルにも書いてますが、このバグは再現性が低いです。ですが、フリーズするのは致命的なので直さなければなりません。
ということで、重い腰を上げてバグ修正に乗り出しました。
でも再現性が低いので、普通にやっていたら原因を探るのは非常に時間がかかります。
ということで、バグが発生するまで延々とダンジョンを生成するプログラムに書き換えました。
が、なぜか一向に再現できず。
僕は敵が生成される際にこのバグが発生すると思っていたのですが、該当箇所のソースコードが処理されるには敵が行動を起こさなければならないようです。
ゲームターンエンジンの先行を敵に設定して、敵が行動を行った後に次のダンジョンを生成するようにしました。
もしバグが発生したらフリーズするので、次のダンジョンは生成されません。
まあこれでも再現できなかったんですがね。
ソースコード見ただけじゃバグの再現条件が分からないんですよ。
とりあえずそのソースコードが実行されるだけじゃダメで、何か別の条件が重なった時に発生するバグなのかもしれません。
例えばプレイヤーの座標情報が前の階から引き継いだ時に低確率で発生する。もしくは、初期生成ではなく追加生成の時に発生するのかもしれません。
これはめんどくさいバグを作ってしまいました。
再現できないバグって一番嫌いです。
今日はこのバグの修正作業は一旦ここまでにして、別の作業を進めました。
また明日もバグの原因を探ります。
それでは!