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を始めました。
好きなアニメは「盾の勇者の成り上がり」「かぐや様は告らせたい」「私に天使が舞い降りた!」「ガーリー・エアフォース」「えんどろ~!」「荒野のコトブキ飛行隊」「上野さんは不器用」「風が強く吹いている」「とある魔術の禁書目録III」「賭ケグルイXX」「ケムリクサ」「ドメスティックな彼女」「デート・ア・ライブIII」「ブラッククローバー」。

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