仕様変更の時に、仕様が変更される部分を最小限のモジュールとして分離して、古いモジュール、新しいモジュールを用意する。

リプレイファイルには、バージョンのシグネチャを付けといて、どのモジュールを利用するかの判断基準にする(ダイナミックリンクが使えるなら、読み込むライブラリの末尾と関連付けるとか)


リプレイファイルの残し方は、スタート時のパラメータ、シード値を残した上で、入力毎に{前回の入力との差分(時間), 入力パラメータ}とかでどうだい?
毎フレーム入れるより少ないし、これでいいと思うが
(もしも入力した結果の動作等が変わるなら、入力じゃなく、各アクションのイベントにしておくか)