クロームの閲覧履歴データ消去を実施するとツクールMVのセーブデータが消えてしまう件の対応方法

zennkukki

ツクールMV、RPGMakerMV製のブラウザゲームが色々出てきたので遊ばせてもらっていたら1つ問題が。グーグルクロームのキャッシュクリア(閲覧履歴データ消去)を実行したらセーブデータが全て消えてしまいました

キャッシュクリアのたびにセーブデータが消えてしまうのは悲しいので何か対処方法が無いか色々調べてみました

ツクールMVのゲームをブラウザで公開した場合、セーブデータはWebStorage技術を使ってlocalStorage(ローカルストレージ)に保存されるようです

ローカルストレージというのは、自分のPC内にあります

つまり、セーブを実施した時点で、セーブファイルが作成され、自動的に自分のPC内に保存されると言うことです

ローカルストレージはクッキーと違い永続的な保存が可能で、キャッシュをクリアしても消える事は無いようです

え、じゃあなんでクロームでキャッシュをクリアしたらセーブデータも消えたの?というとどうやらクロームはクッキーを削除するときに、一緒にローカルストレージのデータも削除する仕様になっているようです

kukki

おなじみのクロームでの閲覧履歴データの消去画面です

ここの「Cookieなどのサイトデータやプラグインデータ」の項目に注目して下さい。この「サイトデータ」にローカルストレージのデータが含まれているようで、この項目にチェックを入れて「閲覧履歴データを消去する」をクリックすると、セーブデータは綺麗さっぱり消えてしまいます。逆に言うと、この項目のチェックを外せば、閲覧履歴データを消去してもセーブデータは消えません

しかしそのやり方だと、Cookieや、不要データを消してスッキリさせたい場合に困ってしまいます。なんとかセーブデータだけ残して、他のデータだけ削除する方法は無いか色々試してみた所、以下の対策を発見しました

1.セーブデータ以外のデータだけ消す

指定したセーブデータだけを保護して、他のデータを消すことが出来れば一番簡単だと思いますが、残念ながら特定のデータを保護するやり方は無いようです

逆に、特定のデータだけを消す方法はありました

クロームの設定→コンテンツの設定と進むと以下の画面が出てきます

ここで「すべてのCookieとサイトデータ」をクリックします

zennkukki

すると現在保存されている全てのCookieとサイトデータの一覧が表示されます

データはサイト毎に保存されてます。サイトのURLがサイト名として表示されます
サイトデータ私のサイトを検索してみました。私のサイトのURLはhttp://ossangame.com/です

このURLのossangame.comの部分がサイト名として表示されています

ossangame.comで検索をかけてみると

ossandate

私のサイトデータだけが表示されました

サイト名をクリックすると保存されているデータ一覧が表示されます

その中にローカルストレージという項目があります

ローカルストレージをクリックすると以下の画面が表示されます

ossandatekesi

ここで削除ボタンをクリックすると、ローカルストレージが削除され、私のサイトのセーブデータが削除されます

このように実施すれば、自分の好きなデータだけを消すことが出来るので、お目当てのセーブデータだけを残して他をひとつずつ消して行けば、一応セーブデータ以外のデータを消すことができます。しかしこの方法非常にめんどくさいです。クッキーなんかはサイト見るたびにたまっていくので、膨大な数になってしまいます。それを一個一個チマチマ消していくのはものすごく時間がかかります。あまりオススメできません

2.セーブデータを別にバックアップしておき、全てのデータを削除した後で復元させる

冒頭で解説したように、セーブデータはローカルストレージとして、パソコンの中に保存されています。このデータ保存場所を探し出して、お目当てのデータだけをコピーしてバックアップをとっておく方法です

まずデータが保存されている場所を探し出します

ファイル検索でLocalStorageで検索すると発見できます

何件かヒットした場合はそれっぽいのを見つけて下さい

ファイルのパスの語尾が

○○○\Google\Chrome\User Data\Default\Local Storage

ってフォルダがあると思います。それがセーブデータが保存されているフォルダです

フォルダを開いてみると、謎のファイルが一杯表示されていると思います

rosto

このファイル1つ1つが、ローカルストレージに保存されているサイトデータのようです

ファイルは1つのサイトで「サイトURL.localstorege」と「サイトURL.localstorege-joumal」の2つのファイルがセットで生成されているようです

ためしにグーグルクロームで「Cookieなどのサイトデータやプラグインデータ」の項目にチェックを入れて閲覧履歴データを消去を実行してみました。そして同じローカルストレージフォルダを確認してみた所、ファイルがごっそり減っていました(全部は消えないみたいです)連動しているのがわかると思います

rostodel

 

この状態で私のサイトにアップしてあるサンプルゲームをプレイし、セーブを実施してから再びローカルストレージフォルダを確認してみた所、http_ossangame.com_0.localstorageとhttp_ossangame.com_0.localstorage-journalという2つのファイルが追加されていました

rostodel2

この2つのファイルが、私のサイトのゲームのセーブデータということがわかりました。つまりローカルストレージフォルダの中に、「ゲームがアップされているサイトのURLが含まれているファイル」があれば、そのサイトのゲームのセーブデータだということです

お目当てのセーブデータファイルが見つかれば、そのファイルをコピーして、適当に別のフォルダを用意してそこにペーストしてしてバックアップをとっておきます

そして、グーグルクロームで閲覧履歴データを消去を実施した後に、先ほどバックアップをとっておいたファイルをローカルストレージフォルダにコピペすると、データを復元する事ができます。これで、セーブデータだけを残して他の不要なデータを全て消去する事が出来ます

注意点として、履歴を消去した後、ファイルをローカルストレージフォルダにコピペする前にゲームが置いてあるサイトに行ってしまうと、うまく復元されませんでした

セーブデータのバックアップを取る→閲覧データを消去する→バックアップしてあったファイルをローカルストレージフォルダにコピペする→ゲームサイトに行く

この順番で実施する必要があります

また、ローカルストレージフォルダにセーブデータファイルがある状態で、バックアップとってあったセーブデータファイルで上書きしたら、バックアップとってあったセーブデータに変換出来るのではと思いやってみましたが、何故か復元出来ませんでした。バックアップしてあるデータを使用したい場合は、一度閲覧履歴データを消去でローカルストレージフォルダ内のファイルを消去してから、バックアップデータをコピペする必要があります

 

このやり方も少しめんどくさいですが、現状このやり方しか上手い方法が見つかりませんでした。プレイヤー目線としては、この方法でバックアップとっておけば良いかなと思いますけど、開発者目線としては、ユーザーサイドに「Cookieなどのサイトデータやプラグインデータ」は消去しないようにする、または、セーブデータのバックアップを取っておく事を周知させるくらいしか方法がなさそうです。

ただ、このやり方でバックアップを取っておくと、好きな時点のセーブデータを残しておく事が出来ます。同じサイトにあるゲームのセーブデータは全部共有なので、セーブ枠が足りなくなる事が予想されるので、この方法でバックアップをとっておくとセーブ枠に悩まされる事はなさそうです

セーブデータを他のパソコンで使用する事も出来ます。実際サブのノートパソコンにセーブデータだけ移動させて、上の方法で復元させたら、ちゃんと使用する事が出来ました。このやり方を使うと、パソコンを買い換えた時でも、古いパソコンからセーブデータを移動させる事が出来ます

しかし、開発者側にたってみると、最強セーブデータが不特定多数に配布できてしまったり、強制セーブでやり直しが出来ないゲームを作っても、バックアップとられたらやり直し出来てしまうといった問題もありそうです

他に良い方法が見つかれば、また報告したいと思います

※今回のやり方はあまり知識の無い素人が色々試して思いついた方法です。このやり方が正しいのか、やって良い事なのかは分かりません。この方法を実践して何か不具合が発生してしまっても責任はとれません。実施するときは自己責任でお願いします

 

スポンサーリンク