【Minecraft】バックアップ対象となるファイルの参照【バックアップツール】

バックアップツールに必須となるのは、バックアップの対象が参照できることです。まずは、バックアップ対象を参照する機能を作成します。

エンティティオブジェクト作成

エンティティオブジェクトとは

フォルダー追加

エンティティオブジェクトをまとめるためのフォルダーを作成します。

フォルダー追加方法

クラス(オブジェクト)の追加

バックアップ対象を管理するためのクラス(オブジェクト)を追加します。

 

 

 

 

 

【Minecraft】画面構成を考える【バックアップツール】

アプリケーションを作成するにあたり、画面の構成が分かりやすいのが一番よいなと考えながら作成します。まずは、「操作画面」と「設定画面」をタブ選択で切り替えができるようにします。

タブコントロールを配置

メイン操作画面と設定画面を切り替える方法としてタブ選択がよいかなと考えます。なるべく、1画面に集約した方が使いやすいと個人的には思います。

まずは、ツールボックスから「TabControl」を選択して画面へドラッグアンドドロップします。

ツールボックスの配置方法

配置された「タブコントロール」をサイズを全画面に広げます。画面の角付近になると自動的に配置位置(画面淵からの幅)を調整してくれるのでそのまま配置します。

タブの表示名称を変更

タブの表示名称を変更します。画面に配置されている「タブコントロール」の上にある「TabItem」をクリックします。クリックしたらプロパティの「Header」を編集します。

変更すると以下のようになります。

 

 

 

【Minecraft】バックアップツールの仕様を考える。

マインクラフトをプレイしていていきなりの「クラッシュ」こんな悲劇は繰り返したくないので、まじめに必要機能を考えてみます。

動作要件

WindowsでPC版をプレイしているので対象範囲は以下の通りとします。

  • OS:Windows
  • .NET framework 4.6.1

開発環境

上記、動作要件から以下の開発環境にします。

  • Visual Studio 2017
  • 言語:C# (WPFプロジェクト)
  • ターゲット:.NET framework 4.6.1

機能

実装する機能として欲しいと思うのは以下の通りです。

自動バックアップ機能

定期的なタイミングでセーブデータをバックアップする機能です。

バックアップ履歴管理

セーブデータの世代管理を行う機能です。

バックアップ復元機能

セーブデータを選択して復元する機能です。

制限事項

地形情報が破損した場合、自動バックアップで保存したファイルから復元できない場合はあきらめます。

「level.dat」ファイルが破損した場合、自動バックアップで保存したファイルから復元できない場合は初回にバックアップした状態の「level.dat」から復元することも考慮して、破損時に持っていた持ち物などはあきらめます。

 

【Minecraft】アプリケーションがいきなりクラッシュ

昨日(2018/04/08)、マインクラフトが突然「クラッシュ」しました。

再起動してみると、今まで使っていたワールドが表示されていない状態となりどうしようかと取り合えず検索してみました。

検索した結果わかったこと

マインクラフトには、重要(状態を管理する)なデータが2種類あってどちらかのエラーが発生した場合にセーブデータが利用できなくなるようです。

  • 「level.dat」ファイルのエラー(プレイヤーの状態を管理しているっぽい)
  • 地形データのエラー(フィールドの状態を管理しているっぽい)

エラーの状態

今回、僕が直面した状態は「level.dat」ファイルのエラーに該当します。ただ、復旧方法によると「level.dat」ファイルはバックアップファイルとして「level.dat_old」というファイルも存在していて、「level.dat_old」を置き換えることで直前まで復旧ができるように設計されているようです。

ただし、僕のマイクラデータは「level.dat」ファイルどころか「level.dat_old」ファイルも消失していて元の状態には戻せなくなってました。

あきらめたこと

マイクラやめようかなと思いもしましたが、大型のスライムトラップを作っていたのであきらめると二度とゲームしないかもと思い復旧を考えました。ただ、「level.dat」ファイルが消失してしまったため以下のものはあきらめることになります。

  • 装備
  • 持ち物(持って歩いているもののみ)
  • 実績
  • 初期スポーン位置
  • バイオームの配置
  • etc(正確にはわかっておりません)

復旧作業

参考サイト:マインクラフトてんやわんや開拓記

新規にワールド生成して復旧

新規にワールドを生成して、「level.dat」ファイルをコピーしてみましたが地面の中からスタートし、窒息して死んでしまいました。この時点でこの方法ないなと思いましたがとりあえずリスポーンしてからずっとマウスをクリックし続け、穴を掘って窒息から解放されました。地上に出て「どこ?」という感じで始まります。僕の場合、クラッシュ前のスポーン地点から100くらいしか離れていなかったので元の場所に戻ることができました。とりあえず、スライムトラップあるかなと思い向かってみて・・・。途中で気づく。

スライムチャンクずれたんじゃないかと・・・。案の定スライムわかなくなってました。

これは、終了です。すごくがっかりしてました。

シードが見つかった

ブラウザタブ見ていたら「Slime Finder」と記載されていて、もしやと思いクリックしてみると前回スライムチャンクを探していた時の状態が残っておりシードが見つかりました。シードを指定して再度新規ワールドを生成して復旧しました。

再認識したこと

やっぱり、PCで動作している以上安定はしていても状況により何が起こるかはわからないなと再認識しました。コンシューマーゲーム機ってやっぱりすごいなと思いました。

失ったもの

  • ダイヤ防具一式(火炎耐性Ⅲ・Ⅳ)
  • ダイヤピッケル(効率強化Ⅳ、耐久力Ⅲ、シルクタッチ、修繕)
  • ダイヤピッケル(効率強化Ⅳ、幸運Ⅲ、耐久力Ⅲ、修繕)
  • ダイヤ鉱石10個くらい
  • ほか(松明、丸石など覚えてない)
  • 毎日の時間(主に睡眠時間)を消費していた「わきつぶし」への情熱

決めたこと

セーブデータの破損を経験して、このゲームを続けるにはセーブデータを定期的にバックアップするツールを作成する必要があるなと思いました。こんなことでもないとプライベートで利用するアプリ開発なんてやらないのでよい経験だったと思います。