凪瀬 Blog
Programming SHOT BAR

目次

Blog 利用状況
  • 投稿数 - 260
  • 記事 - 0
  • コメント - 55976
  • トラックバック - 192
ニュース
広告
  • Java開発者募集中
  • 経歴不問
  • 腕に自信のある方
  • 富山市内
  • (株)凪瀬アーキテクツ
アクセサリ
  • あわせて読みたい
凪瀬悠輝(なぎせ ゆうき)
  • Java技術者
  • お茶好き。カクテル好き。
  • 所属は(株)凪瀬アーキテクツ
  • Twitter:@nagise

書庫

日記カテゴリ

 

何を見てもアルゴリズムを考えてしまうのがプログラマの職業病といったところです。
私は結構ゲーム好きなんですが、ついついアルゴリズムを考えてしまうんですね。 バグを発見したときなどは楽しくてたまりません。 そのほつれからプログラムのコードが透けて見えるのです。

本日のターゲットは2001年、匠から発売されたアーケードゲーム「ナイトレイド」です。 ジャンルはシューティングなのですが、変なシステムを採用した、あまり見栄えのしないゲームでした。 このゲーム、非常にマイナーです。多分、名前を聞いて分かる人の方が少数派ですね。 ちなみにプレイステーションに移植されています。
アーケード版公式ページ
PS版公式ページ

このゲームには非常に致命的なバグがあり一部界隈では有名です。
自機を画面左上に移動させると敵が弾を撃たなくなるのです!
なぜこんなことが起こるのでしょうか?

矩形の衝突判定

ところで矩形(ようするに四角形のこと。プログラム用語。「くけい」と読む)同士の衝突判定はどうやるか分かりますか?

矩形の衝突判定

図のようにA,Bふたつの矩形があるとします。 Aの左上角の座標から見て右下にBの右下角があり(図の黒矢印)、 Aの右下角の座標から見て左上にBの左上角がある(図の赤矢印)場合にふたつの矩形は重なっているのです。

// 矩形Aの座標
// (ax1, ay1)───────────┐
//      └───────────(ax2, ay2)
// 矩形Bの座標
// (bx1, by1)───────────┐
//      └───────────(bx2, by2)
if (((ax1 < bx2&& (ay1 < by2))
    && ((ax2 > bx1&& (ay2 > by1))){
  // 衝突!
}

シューティングゲームでは敵に近くから弾を撃たれて即死しないように配慮して、 敵が自機に近い場合は弾を撃たないようにしているものがあります(ゲーマー用語で弾封じといいます)。

このナイトレイドでは自機と敵が重なってもミスとはならない仕様なのですが、 重なった状態から弾を撃たれると理不尽だろうという配慮でしょうか、 この弾封じの判定が実装されているわけです。

そして、あろうことか、弾封じのための矩形の衝突判定で条件式の"<"と">"を 間違えるというコーディングミスをしてしまったのです!

// 矩形Aの座標
// (ax1, ay1)───────────┐
//      └───────────(ax2, ay2)
// 矩形Bの座標
// (bx1, by1)───────────┐
//      └───────────(bx2, by2)
if (((ax1 < bx2&& (ay1 < by2))
    && ((ax2 < bx1&& (ay2 < by1))){
  // 衝突?
}

そして、誰もこのことに気づかないままゲームは出荷されたのでした。境界値テストは重要ですね。

投稿日時 : 2007年8月5日 18:28
コメント
  • # ゲームのバグにみるアルゴリズム - GameOver
    凪瀬 Blog
    Posted @ 2007/09/12 20:51
    ゲームのバグにみるアルゴリズム - GameOver
  • # re: ある期間が他の期間と重なっているかを調べるには?
    The road to C# master trapemiya
    Posted @ 2008/03/24 15:40
    re: ある期間が他の期間と重なっているかを調べるには?
  • # I read this paragraph completely on the topic of the resemblance of latest and preceding technologies, it's awesome article.
    I read this paragraph completely on the topic of t
    Posted @ 2020/06/22 17:30
    I read this paragraph completely on the topic of the resemblance of latest and preceding technologies,
    it's awesome article.
  • # Cbd oil that works 2020 I feel that is among the most important info for me. And i'm satisfied studying your article. However want to remark on few normal issues, The web site style is wonderful, the articles is in reality great : D. Good job, cheers b
    Cbd oil that works 2020 I feel that is among the
    Posted @ 2020/06/24 16:11
    Cbd oil that works 2020
    I feel that is among the most important info for me.
    And i'm satisfied studying your article. However want to remark on few normal issues, The web site style is wonderful, the articles is in reality
    great : D. Good job, cheers best rated cbd oil http://j.mp/3drY6lE cbd oil that works 2020 http://j.mp/3drY6lE
  • # Howdy! This article could not be written much better! Looking through this post reminds me of my previous roommate! He constantly kept preaching about this. I am going to forward this information to him. Fairly certain he'll have a great read. Thanks fo
    Howdy! This article could not be written much bett
    Posted @ 2020/07/22 10:56
    Howdy! This article could not be written much better!
    Looking through this post reminds me of my previous roommate!

    He constantly kept preaching about this. I am going to forward this information to him.
    Fairly certain he'll have a great read. Thanks for sharing!
  • # hi!,I love your writing so so much! proportion we communicate extra about your post on AOL? I need an expert on this house to unravel my problem. May be that is you! Having a look ahead to see you.
    hi!,I love your writing so so much! proportion we
    Posted @ 2020/08/07 18:38
    hi!,I love your writing so so much! proportion we
    communicate extra about your post on AOL? I need an expert on this house to
    unravel my problem. May be that is you! Having a look ahead to see you.
  • # Wow, that's what I was seeking for, what a stuff! existing here at this weblog, thanks admin of this web site.
    Wow, that's what I was seeking for, what a stuff!
    Posted @ 2020/08/28 18:18
    Wow, that's what I was seeking for, what a
    stuff! existing here at this weblog, thanks admin of this web site.
タイトル  
名前  
Url
コメント