Open3

xsystem4-androidのセーブデータ管理

kichikuoukichikuou

現状

現バージョンのxsystem4-androidでは、セーブデータは以下の場所に保存される。

Android/data/io.github.kichikuou.xsystem4/files/.xsystem4/<GameName>/<SaveFolder>

<GameName><SaveFolder>はSystem4ゲームの設定ファイルSystem40.iniまたはAliceStart.iniの同名のフィールドによって指定される。

例えば、戦国ランスのSystem40.iniには以下のように記述されている。

GameName        = "戦国ランス"
SaveFolder      = "SaveData"

この場合、セーブデータはAndroid/data/io.github.kichikuou.xsystem4/files/.xsystem4/戦国ランス/SaveDataに保存される。

以下の点に注意が必要である。

  • 複数のゲームが同じGameNameを持つ場合、それらはセーブデータを共有する
  • GameNameが変わるとセーブデータの場所が変わる
kichikuoukichikuou

問題点

アリスソフト純正のゲームに関しては上記の仕様で特に問題はないが、MODに関しては以下のような問題がある。

  • ルドラサウム大陸版・大戦国ランスはGameNameにバージョン番号が含まれているため、バージョンアップするとセーブデータの場所が変わってしまう
  • Darkness Hero Rance (DHR) はSystem40.iniを提供しないため、普通に導入するとバニラ(MangaGamer版)とセーブデータが同じ場所に保存されてしまう
kichikuoukichikuou

解決策

.xsystem4以下にセーブフォルダを作るのではなく、ゲームのパッケージディレクトリにセーブフォルダを作るようにする。例えばユーザーが戦国ランスをAndroid/data/io.github.kichikuou.xsystem4/files/SengokuRanceにインストールした場合、セーブデータはAndroid/data/io.github.kichikuou.xsystem4/files/SengokuRance/<SaveFolder>に保存されるようにする。

この方式には以下のような利点がある。

  • ゲームのインストールとセーブデータが一対一に対応するため、ユーザーにとってわかりやすい
  • アリスソフトのある時期までのゲームは、インストールフォルダ内のSaveDataサブフォルダにセーブデータを保存するようになっている(最近のゲームはデフォルトではマイドキュメント以下に保存する)。ユーザーがSaveDataフォルダごとゲームをxsystem4-androidにインストールするだけでセーブデータが引き継がれる

欠点としては、ゲームが複数ある場合にセーブデータのバックアップが現状に比べて面倒になる(が、ほとんどのユーザーは少数のゲームしかインストールしていないと思われる)。