セーブデータ拡張 一覧

DQ3 セーブデータのサイズ拡張

DQ3にAIを導入するならやってみたいのは「学習機能の実装」です。最近のドラクエのAIは「賢すぎる」というのがどうにもひっかかっていました。使用するメモリ量を抑える目的もあるのでしょうが、AIは自分のターンが回ってきたときにその場で行動を決定するのでいわゆる「後出しジャンケン」の上、初見のモンスターの情報もなぜかお見通しということもあり、正直かなり便利です。じゃあお前はどうするんだよという話になりますが、少なくともなにもしないうちから「相手の耐性・行動をすべて知っている状態」がその理由の一つである、ということで「対象のモンスターの耐性情報、行動情報を把握しているか」フラグを持つようにすれば多少はマシになるのではと思います。モンスターを倒したり、実際に呪文を使ってみて初めて情報にアクセスできる、とすればAIべったりお任せにもならないのではと思います。さすがに一人づつこの情報を持たせると領域がいくらあっても足りないのでパーティで共有するとして、1モンスターにつき、基本情報(HP、攻撃力、守備力、素早さなど)1B、行動情報1B、耐性情報2Bとすると、モンスター数256として、4B*256モンスター分*冒険の書3個分=3,072Bのセーブデータの領域が追加で必要になります。オリジナルのDQ3セーブデータサイズは8KB(=8,192B)で、そのうちヘッダ5Byte+セーブデータ本体2,719B*冒険の書3個分+フッタ5B=8,167B*1とほぼフルに使っています。まるで領域が足りないので手法としては

  1. セーブデータファイルのサイズはそのままにして既存領域を圧縮する
  2. セーブデータファイルのサイズを拡張する

のどちらかになります。既存領域は大きく分けて

  1. 進行フラグ、宝箱回収フラグ
  2. アイテム(袋の中身)情報
  3. キャラクター情報

で使用されているのですが、圧縮できそうなのはせいぜい袋の中身くらいでやったとしても128B程度しかサイズが浮きません(袋の中身をセーブのたびに毎回固定で並び替えればもう192B浮きますが結局焼け石に水です)。というわけで必然的にセーブデータファイルのサイズを拡張することになります。とりあえず拡張後のサイズは32KBとします。拡張した場合のデメリットは既存のデータとの互換性が問題になるわけですが、最悪互換性は切り捨てることで解決します。今までDQ3 K.Mixにおいて、バージョンアップに伴い極力古いバージョンのデータをそのまま使えるようにはしてきましたが、さすがにセーブデータのファイルサイズが異なる場合にはSFCのプログラム内部ではどうしようもないのでサポートする場合には別途外部ツールを用意するか各自で対応してもらう必要があります。対応と言っても既存のファイルの最後に24KB分0をつけてもらうだけなんですが。

続きを読む