ゲーム内セーブを元に戻す方法
1.2.0から、ゲーム内セーブは最後の変更から1秒間変わらなければファイルに記録されます。誤ったセーブも前のセーブを上書きするため、1.3.0では以前のセーブを端末に残し、5分ごとに自動ステートセーブを作ります。
1.2.0で、ゲーム内セーブをプレイ中にファイルへ記録するようにしました。セーブデータが1秒間変わらなければファイルに書くため、アプリが突然終了しても最近のセーブを失うことが減りました。
しかし、誤って上書きしたセーブやチートで壊れたセーブも、同じ方法でファイルに記録されます。以前のセーブを別に残していなかったため、誤って保存すると元に戻せませんでした。
そこで、ゲームを開始するとき、コアがセーブファイルを開く前に、既存のゲーム内セーブをこの端末に別途残すようにしました。ファイル、別のエミュレーター、Drive、オフラインバックアップからセーブを取り込む前にも、既存のセーブのコピーを残します。最新の記録と同じ内容なら重複して残しません。
ゲームごとに最新5件まで、1件は32MiB、1ゲームで合計64MiBまで残し、超えると古いものから削除します。ゲーム情報の「ゲーム内セーブの履歴」から戻すと、今のセーブを先に履歴へ入れてからファイルを一度に入れ替えるので、戻した操作もさらに戻せます。ゲームの実行中は戻しません。
この履歴はDriveとオフラインバックアップには含めません。別の端末へ移すセーブではなく、この端末でミスを取り消すための記録だからです。
ゲーム内セーブのないゲームには別の問題がありました。自動セーブはバックグラウンドへの移行時やゲーム終了時にしか記録しなかったため、その間にアプリが終了すると進行を失いました。今は実際にプレイした時間が5分たまるたびに、ゲームを止めずにゲーム内セーブと自動セーブを一緒に記録します。一時停止中やメニュー、バックグラウンドの時間は数えません。
ニンテンドーDSとPSPは5分ごとの自動保存から外しました。ステートセーブ1つが数MiBから数十MiBあり、プレイ中に記録するには負担が大きいためです。2機種はこれまでどおりバックグラウンドへ移るときだけ記録します。実機でアプリを強制終了したあとに続きから遊べるかは、まだ確認していません。
あわせて読みたい開発の話
- 開発の話v1.2.0クローズドベータテスト
プレイ中にゲーム内セーブを記録する
ゲーム内のセーブは、バックグラウンドへの移行時やゲーム終了時にしかファイルへ記録されていませんでした。1.2.0からは、最後の変化から1秒間変わらなければ記録します。
- 開発の話v0.9.5アルファテスト
アカウントなしでセーブを移す
複数ゲームのセーブと設定を1つのファイルにまとめ、既存データを変更する前に確認できるようにしました。
- 開発の話v0.4.2初期開発
違うステートを読み込んだとき
古いステートを間違えて読み込んでも、直前まで遊んでいた状態に戻れるよう、読み込みの取り消しを加えました。