FC2ブログ

あちゃちゃ、Engine MOD 2.8.7wにバグあった、パッチ出した

3日前に最新のEngine MOD 2.8.7 westernをSASに出してきていたのですが。

ちょっと慌てて作業したせいでミサイルまわりのコードに新しくバグ作っちゃってたのが今日になって判明しました。
レーザー誘導のAGM-65EやAGM-123Aが自動ロックオンせず、ならばと強制発射すると例外が発生し続けて空中で止まっちまうというもので。
直して2.8.7 Aパッチを出してきました。

原因はなかなか間抜けなものでして。
Javaだと、「もし○○の値が××と一致していれば、処理△△を行え」という構文はif文を使って
if (○○ == ××) { △△; }
って書くんですけども。
具体的には「もしミサイルの誘導方式がセミアクティブレーザーなら、レーザーの照射地点を探してあるならそこへ向かえ」って処理を行わせたかったんですね。これをコードに書くと
if (ミサイルの誘導方式 == セミアクティブレーザー) { レーザーの照射地点を探してあるならそこへ向かえ; }
となるはずのものなのです。
ところがこれを間違えて
if (ミサイルの誘導方式 != セミアクティブレーザー) { レーザーの照射地点を探してあるならそこへ向かえ; }
って書いてしまっていたのでした。
「○○ == ××」と書くべきところを「○○ != ××」と書き間違えると、判定に使う条件の意味が「もし○○の値が××以外ならば」と真逆になってしまうので。
セミアクティブレーザー誘導ミサイルに一切の処理が行われなくなってしまっていたというオチでした。

こんな単純な書き間違えのバグなのに、意外に発見に時間がかかってしまって。
気をもみもみしました。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

western0221

Author:western0221
2010年7月30日にIL-2 1946を始めました。
好きなアニメは「ゾンビランドサガ」「青春ブタ野郎は…」「抱かれたい男1位…」「うちのメイドがウザすぎる!」「となりの吸血鬼さん」「SSSS.GRIDMAN」「ゴブリンスレイヤー」「DOUBLE DECKER!」「やがて君になる」「寄宿学校のジュリエット」「色づく世界の明日から」「俺が好きなのは妹だけど妹じゃない」「ベルゼブブ嬢のお気に召すまま。」「ゲゲゲの鬼太郎」「ブラッククローバー」。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2アフィリエイト
アフィリエイト・SEO対策
検索フォーム
RSSリンクの表示
リンク
訪問数
Twitter