リプレイバグが出にくいようにするには

リプレイバグ話(id:ABA:20080120#p2)の続き。結局あんまりこれといった特効薬はなくて、「リプレイバグが発生する原因を意識して注意深く実装しましょう」っていう話になってしまうのかもね。各自かんばれ。

ただ、ゲームがほとんどできた後から後付でリプレイをつけようとしたほうがよりデバッグが困難になる、っていうことは言えるだろう。なのでよさげなプラクティスとしては、

  • 最初の段階(プロトタイプでそこそこ面白そうという当たりがついた段階くらいか)からリプレイ機能を実装しておく
  • プレイヤーの破壊、特定スコアへの到達などのイベントが発生した時のゲームカウンタの数をリプレイデータとは別に覚えておいて、カウンタのずれが発生したらInvalidReplayExceptionなどを投げるようにしておく

というのが考えられる。これならゲームを建て増ししていく途中でリプレイバグが発生したときにはすぐ分かるし、その建て増しした部分を疑ってデバッグすればいいわけだしね。次からはこんな感じでやってみるか。