パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

ドラゴンクエストIVの「8逃げバグ」の話題が掘り返される」記事へのコメント

  • by Anonymous Coward on 2021年05月21日 8時50分 (#4035574)

    でも最近の環境でこのようなバグが発生することは少ないのかしら?

    # FORTRANでメモリの利用領域を適当に拡縮させてフラグ調整してた程度の経験しかないのでAC

    • 逆に8ビット時代はスタックで引数送ったり、ましてや変数を置くなんてできなかったけど(再帰なんかまたのまた夢)、今はローカルのバッファを行きすぎてスタック飛ばすのがよくあったりするわけで。

      親コメント
    • 今時はbooleanに32ビットおごる時代なので。
      // とかいいつつバッファオーバーランでいろいろやらかすのもまた乙
      親コメント
      • by Anonymous Coward

        32-bitや64-bitのカウンタでオーバーフロー起こすことはあまりないけど(と油断するからバグるのだが)
        ビットシフトだとやりがち。

        厄介なのは、意図的にオーバーフローさせて上位ビットを0や1に固定するイディオムもあるので、
        意図的なのかバグなのか見た目では判断しづらいところ。

        • by Anonymous Coward

          32bitカウンタなんて100Mhzクロックで回したら
          1分しないでオーバーフローを起こすけどね。

          • by Anonymous Coward

            32ビット60Hzだと2年と3ヶ月ちょっとで一周する。

            1/60秒毎の割り込みで++されるuint32_tなグローバルなカウンターを用意して、画面のフェード処理とか色んな演出の進度はそれで管理する、という仕様のゲーム作成に参加してた事がある。

            これ、カウンターが一周回ると表示が乱れるよな、と気になって計算して、2年以上ならまあいいじゃん、という設計なのかと納得した。一応、20フレームでフェードアウトする予定が2年3ヶ月かけてのフェードアウトに引き延ばされてしまうような不具合もおきかねないんだけど。

            うちが編み出した特殊なテクニックってことは無かろうから、2年と3ヶ月か、int32_tなら1年と1ヶ月ちょっとの間、動作指せ続けると何かが起こってしまうゲームは結構あるんじゃないかな。

            • by Anonymous Coward

              こんなげーむにまじになっちゃってどうするの -

    • by Anonymous Coward on 2021年05月21日 9時08分 (#4035588)

      この前、株価が32bitの最大値を超えて問題になった記事がありましたね。

      親コメント
    • by Anonymous Coward

      メモリがとにかく無かった時代のプログラム手法で、8ビットのカウンター用ワークで使わないビットをフラグビットとして使うなんて今はしないよね。
      それと今は変にフラグ管理するとデータベースとの相性が悪いっていうのもあるので、昔ほど必須のテクニックでは無いような気がする。

      • by Anonymous Coward

        ビットのフラグは今でも大量にあるでしょ。単に「回数」とかの横に置かないから足されるバグを心配しないだけで。キチキチに詰めておいても、型を正確に扱えばコンパイラがはねてくれるし。

    • by Anonymous Coward

      最近は富裕層のプログラミングだからw
      逆にこういう経験少ないので学ぶところが多いんだけど
      他人の間違いから学ぶスキルがないと学べない

      今だとDBの設計で同じことをやってしまう
      学んでいれば避けられる可能性高くなるはず
      #パルプンテからの学ぶとか名前付いたりしてw

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

処理中...