バックアップツールに必須となるのは、バックアップの対象が参照できることです。まずは、バックアップ対象を参照する機能を作成します。
エンティティオブジェクト作成
フォルダー追加
エンティティオブジェクトをまとめるためのフォルダーを作成します。
クラス(オブジェクト)の追加
バックアップ対象を管理するためのクラス(オブジェクト)を追加します。
あまり頑張らないで暇つぶし
バックアップツールに必須となるのは、バックアップの対象が参照できることです。まずは、バックアップ対象を参照する機能を作成します。
エンティティオブジェクトをまとめるためのフォルダーを作成します。
バックアップ対象を管理するためのクラス(オブジェクト)を追加します。
アプリケーションを作成するにあたり、画面の構成が分かりやすいのが一番よいなと考えながら作成します。まずは、「操作画面」と「設定画面」をタブ選択で切り替えができるようにします。
メイン操作画面と設定画面を切り替える方法としてタブ選択がよいかなと考えます。なるべく、1画面に集約した方が使いやすいと個人的には思います。
まずは、ツールボックスから「TabControl」を選択して画面へドラッグアンドドロップします。
配置された「タブコントロール」をサイズを全画面に広げます。画面の角付近になると自動的に配置位置(画面淵からの幅)を調整してくれるのでそのまま配置します。
タブの表示名称を変更します。画面に配置されている「タブコントロール」の上にある「TabItem」をクリックします。クリックしたらプロパティの「Header」を編集します。
変更すると以下のようになります。
マインクラフトをプレイしていていきなりの「クラッシュ」こんな悲劇は繰り返したくないので、まじめに必要機能を考えてみます。
WindowsでPC版をプレイしているので対象範囲は以下の通りとします。
上記、動作要件から以下の開発環境にします。
実装する機能として欲しいと思うのは以下の通りです。
定期的なタイミングでセーブデータをバックアップする機能です。
セーブデータの世代管理を行う機能です。
セーブデータを選択して復元する機能です。
地形情報が破損した場合、自動バックアップで保存したファイルから復元できない場合はあきらめます。
「level.dat」ファイルが破損した場合、自動バックアップで保存したファイルから復元できない場合は初回にバックアップした状態の「level.dat」から復元することも考慮して、破損時に持っていた持ち物などはあきらめます。
昨日(2018/04/08)、マインクラフトが突然「クラッシュ」しました。
再起動してみると、今まで使っていたワールドが表示されていない状態となりどうしようかと取り合えず検索してみました。
マインクラフトには、重要(状態を管理する)なデータが2種類あってどちらかのエラーが発生した場合にセーブデータが利用できなくなるようです。
今回、僕が直面した状態は「level.dat」ファイルのエラーに該当します。ただ、復旧方法によると「level.dat」ファイルはバックアップファイルとして「level.dat_old」というファイルも存在していて、「level.dat_old」を置き換えることで直前まで復旧ができるように設計されているようです。
ただし、僕のマイクラデータは「level.dat」ファイルどころか「level.dat_old」ファイルも消失していて元の状態には戻せなくなってました。
マイクラやめようかなと思いもしましたが、大型のスライムトラップを作っていたのであきらめると二度とゲームしないかもと思い復旧を考えました。ただ、「level.dat」ファイルが消失してしまったため以下のものはあきらめることになります。
参考サイト:マインクラフトてんやわんや開拓記
新規にワールドを生成して、「level.dat」ファイルをコピーしてみましたが地面の中からスタートし、窒息して死んでしまいました。この時点でこの方法ないなと思いましたがとりあえずリスポーンしてからずっとマウスをクリックし続け、穴を掘って窒息から解放されました。地上に出て「どこ?」という感じで始まります。僕の場合、クラッシュ前のスポーン地点から100くらいしか離れていなかったので元の場所に戻ることができました。とりあえず、スライムトラップあるかなと思い向かってみて・・・。途中で気づく。
スライムチャンクずれたんじゃないかと・・・。案の定スライムわかなくなってました。
これは、終了です。すごくがっかりしてました。
ブラウザタブ見ていたら「Slime Finder」と記載されていて、もしやと思いクリックしてみると前回スライムチャンクを探していた時の状態が残っておりシードが見つかりました。シードを指定して再度新規ワールドを生成して復旧しました。
やっぱり、PCで動作している以上安定はしていても状況により何が起こるかはわからないなと再認識しました。コンシューマーゲーム機ってやっぱりすごいなと思いました。
セーブデータの破損を経験して、このゲームを続けるにはセーブデータを定期的にバックアップするツールを作成する必要があるなと思いました。こんなことでもないとプライベートで利用するアプリ開発なんてやらないのでよい経験だったと思います。