2018年4月21日土曜日

RPGツクールMVでプロジェクトが突然読み込めなくなったときの対処法

 RPGツクールMV(以下ツクールMV)でゲーム制作をしていると、突然以下のようなメッセージが表示されてプロジェクトが開けなくなる……という事案がツイッターや各種フォーラムなどでしばしば報告されています。

Error1

 本稿では、本現象について原因と対処法を紹介しています。

復旧できるのか

 一番先に結論から言うと『ファイルの一部が破損している場合があるが、部分的には復旧可能』です。主にデータベースの一部もしくは全部が破損している可能性があります。

 巻末でも改めて言及しますが、ツクールMVでゲーム制作するのなら(ツクールMVでなくても)日常的なバックアップは必須です。

 ゲーム制作は数ヶ月単位あるいは年単位の長丁場となることが多いです。膨大な作業が一瞬で水泡に帰すことのないよう、何らかの対策を必ずしましょう。それでは復旧手順について解説します。

原因

 ツクールMVは、プロジェクト保存時に編集した情報を、メモリ上から各種ファイルに書き込みます。その処理中に何らかの原因で異常終了(メモリが足りないことによるアプリやOSのクラッシュ等)すると稀に書き込んでる最中だったファイルが破損する場合があるようです。

 対象は以下のファイルです。

  • Actors.json
  • Animations.json
  • Armors.json
  • Classes.json
  • CommonEvents.json
  • Enemies.json
  • Items.json
  • MapInfos.json
  • Skills.json
  • States.json
  • System.json
  • Tilesets.json
  • Troops.json
  • Weapons.json
  • MapXXX.json
  • Game.rpgproject

 上記ファイルの全てが破損するわけではありません。保存の最中ではなかったファイルは破損しません。特に「MapXXX.json」(マップごとのデータファイル)については前回保存時から編集してなければ保存対象外なので大半は復旧可能です。

復旧手順

現在のプロジェクトのバックアップを取る

 一部ファイルの上書きや差し替えを行うので事前にバックアップを取っておきましょう。

新規プロジェクトを作る

 破損したファイルを正しいファイルに上書きするので、まず新規でプロジェクトを作成しましょう。

破損したプロジェクトの『Game.rpgproject』を新規プロジェクトの『Game.rpgproject』で上書きする

 冒頭のメッセージダイアログから当該ファイルが破損していることは確実です。とはいえこのファイル、テキストエディタで開いてみれば分かりますが、中身は単にツクールMVのバージョンが書いているだけの単純なファイルです。よって下記のテキストで上書きすることでも復旧可能です。

RPGMV 1.6.0

破損したプロジェクトを開いてみる

 正しく開ければ無傷で復旧できています。おめでとうございます!

 ですが多くの場合、代わりに以下のようなメッセージが表示されると思います。

Error2

 破損したプロジェクトのdata/Actors.json(メッセージで示されたファイル)を開いてみてください。

  1. 文字化けしている or 真っ白になっている。
  2. ファイル自体が存在しない
  3. dataフォルダ自体が存在しない

1.の場合はおそらく復旧できないので、新規プロジェクトを作ったときに作成されたdata/Actors.jsonで上書きしてください。2.の場合は復旧のしようがないので同様です。3.の場合は単にdataフォルダを名前を変えてしまったか、場所を変えてしまっただけの可能性があります。エクスプローラーの検索機能などを使って別の場所にないか探してみましょう。

Search

プロジェクトが開けるようになるまで指定されたファイルを上書きする

 多くの場合、複数のファイルが破損しているので上記の手順を繰り返す必要があります。ここで上書きしたファイルは当然、新規プロジェクト作成時のものに差し替えられるのでイチから作り直しとなります。

 とはいえ全滅するよりマシなので同じものを再度作り直すことで以前よりも質のいいものができると強く信じて頑張ってください。(わりと本当です)

予防策

 ここまで復旧方法について説明してきましたが、最善なのはプロジェクトのバックアップを日常的に取っておくことです。

DropBox等のオンラインストレージ

 もっとも手軽で効果の高い方法です。複数の端末で開発したいときにも有効です。復旧方法は各種サービスを確認してください。ただし復旧できるファイルに日数制限がある場合があるので注意してください。

 また本件とは無関係ですが、プロジェクトをオンラインストレージに置いているとセーブ時にごくごく稀にエラーが起こる場合があります。セーブ時に一瞬だけ作成・削除されるバックアップファイルをオンラインストレージの監視プロセスが掴んでしまい、削除エラーになることが原因です。テストプレー時以外は起こらないのであまり気にする必要はないですが一応。

ファイルのコピーやバックアップを行うソフトウェア(フリーソフト)

 オンラインストレージが出回る前はこれが主流でした。設定がやや煩雑なことが多いですがネットワークに繋がっていない環境下でもバックアップできます。

 ローカルに保存していた場合、PC自体が死亡するとバックアップも一緒に消えてしまうので、外付けハードディスクやNASを保存先にしましょう。

GitHub

 技術者向けのバージョン管理サービスです。使える人にとっては最良の選択肢ですが、ひとによってはハードルが高いです。

バックアッププラグインを使う

 適用するだけなんの設定もしなくてもdataフォルダおよびGame.rpgprojectのバックアップをしてくれるプラグインを作成しました。例によってMITライセンスでご自由にお使い頂けます。

  • 設定画面

Plugin

  • ダウンロード

https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/BackUpDatabase.js

まとめ

 ツクールMVで制作する以上、本現象は誰にでも起こりうる(私も一度ありました)ので必ず何らかの対策を行いましょう(大事なことなので二度言いました)。

 ここまでお読みくださり、ありがとうございました。