ほんのささいなこと

調べたことや思ったこと。Google先生に聞いて10分で解決できなかった問題とか。

ドラクエ4でクラウド同期ができない

概要

数年ぶりにドラクエ4がやりたくなり、Google Playストアから再ダウンロードしたのだが、クラウド同期ができず、セーブデータの復元ができない

状況

  • 以前にプレイしていたスマホと機種は異なるが、同じAndroid
  • Google Driveにセーブデータは存在している
    • My Drive > DQ4J > DQ4J_SAVEDATA.DAT
  • ローカルにセーブデータは無い
  • 起動後、通信 > セーブデータをクラウドと同期しますか? > はい > セーブデータがありません

解決策

どうやらローカルにセーブデータが存在していない場合『セーブデータがありません』と言われる仕様。
これは、ひょっとして『(ローカルに)セーブデータがありません(ので、通信は終了します)』と言っているのか?

いったん新しく冒険の所を作り、序章だけ終わらせたらセーブするかどうか聞かれるのでセーブしてアプリを終了。
アプリの再起動後、通信はできるようになった!しかし、アプリのセーブデータが最新です。アップロードして上書きしますか?と言われる。いやいや、そうじゃない。ダウンロードしたいのよ。
そのため、Google Driveのファイルの更新日時を強制的に更新する。

  1. Google DriveからMy Drive > DQ4Jフォルダに移動
  2. DQ4J_SAVEDATA.DATを右クリック > Make a copy > Copy of DQ4J_SAVEDATA.DATが作成される
  3. 元のDQ4J_SAVEDATA.DATは右クリック > Move to trash
  4. Copy of DQ4J_SAVEDATA.DATを右クリック > Rename > DQ4J_SAVEDATA.DATに変更

これで、Google Driveの更新日時が更新された。スマホ側でドラクエ4アプリを再起動し、再度通信を行うと、無事ダウンロードしてクラウドからローカルにセーブデータを復元できた。

補足

  • DQ4J_SAVEDATA.DATはバイナリなので編集はできないのだが、内部のセーブデータ日時情報などはクラウド同期には使われていない模様
    • そりゃそうか。毎回ダウンロードしてDiff取ったりしないわな。そもそもセーブ日時情報が含まれているかどうかも不明
  • Google DriveのDQ4J_SAVEDATA.DATを直接ローカルにコピーしようと思ったのだが(/Android/data/com.square_enix.android_googleplay.dqj4/files)、同名のファイルは存在せず、代わりにdata1.dat, data2.datなど、セーブデータフォーマットはローカルとクラウドで異なる模様
  • 従って、力業でローカルに復元することは難しそう。あくまでアプリの機能による復元しか方法はない
    • スマホ端末を探し出してローカル間でセーブデータを力業で復元することはできるかもしれないが、そこまでする気力も意味もない