LoginSignup
1
1

More than 3 years have passed since last update.

minecraftのセーブデータを管理するPerlプログラム

Last updated at Posted at 2015-07-11

Macでのセーブデータのバックアッププログラム

Perlの勉強を兼ねながらMinecraftのセーブデータをバックアップやリストアするプログラムを作成した。
そのプログラムをGithubに公開した。
minecraftBackupRestore.pl
GithubとQiitaの両方が初めての利用のため、どのような活用をすればいいのかわからないが、せっかくなのでつたない状態ではあるが一般公開することにした。
※5年ぶりぐらいに、Go言語でセーブデータのバックアッププログラムを組み直してみた(12/10)。

免責事項

基本的にこのプログラムはMacOSで作成しているため、MacOSに依存するプログラムになった。

使い方

使い方は、2つの引数を指定すればよく、一つ目にバックアップかリストアのどちらかを指定し、二つ目にセーブデータの名前を指定する。
例)minecraftBackupRestore.pl 1 hoge.txt
当然ながら「minecraftBackupRestore.pl」がプログラム本体名になる。
第1引数:
     1.バックアップ
     2.リストア
第2引数:
     hoge.txt
     ⇒このテキストにminecraftのセーブデータ用のディレクトリを指定する。
     ファイル名はこだわらないが、記述内容を厳密にしなければ機能しないため気をつけること。名前の付け方に間違いがあればバックアップかリストアのどちらも動かないため意識すれば動いていないことに気がつくはず。どうしても名前の記述に不安があるならば直接セーブデータ用のディレクトリを開いて、ディレクトリ名をテキストに貼り付けるしかない。
minecraft.jpg
私の環境では添付写真の名前を使用することに成功した。
 一つ目:新規ワールド
 二つ目:20150703
個人的に2バイト文字の扱いは自信ない。

バックアップ:基本的にデスクトップにtar.gz形式で作成される。
リストア:第2引数のファイルと同じ階層に配置すれば、デスクトップ上に展開される。それを手動でセーブディレクトリに移動する必要がある。
第二引数のファイル:バックアップとリストアで使い回せる。バックアップ後のファイル名を変更した場合はこの限りでない。

Go言語でのプログラム

学生時代からゲームをしており、未だにゲームをしている。
そのため、勉強し始めたGo言語で今回のプログラムを書き直すことにした。

GitHubで一般公開

上記Perl言語でのプログラム同様GitHubに公開している。
当時とは違い、Gitも多少は勉強した。
そのため、勉強用のプログラムとは言え、他の勉強用プログラムと分けることができるようになった。

minecraftBackup

具体的に言えば、1つのリポジトリに、複数のプロジェクトを入れ込むことを想定しているため、個々のプロジェクト管理をブランチで分けた。
その運用が成功するか分からないが、物は試しでやってみる。

使い方

GitHubに公開しているReadmeファイルに使い方を示しているが、画像を埋め込むことが出来なかったため、今回画像付きで説明することにした。
※必要な説明はReadmeファイルを参照してもらうとして、画像が無ければ分からない部分のみに絞り込んで説明する。

任意のセーブデータのみバックアップ

backup.txtに、バックアップしたいセーブデータ名を記載する必要がある。
以下がセーブデータ用のディレクトリ(セーブデータそのものは2つ)

一部のbackup.jpg

そのうち1つだけをバックアップしたいため、バックアップテキストに、対象のディレクトリ名を記載する。

バックアップ対象.jpg

これで、バックアップするのは"新規 ワールド"だけになる。

出力結果.jpg

以上がGoプログラムになる。
今回は使い回しとはいえ、アルゴリズムもゼロから考えたため、3時間近くかけて完成した(慣れている人であれば30分もかけずに作り上げるだろうが・・・)。

懸念点

異常系は試していない。
そのため、2GB以上のセーブデータはバックアップできない可能性が高い。

本当に使う場合

セーブデータ用のPathは書き換える必要があることだろう。

感想

作成した感想:Perlの勉強のために作成したが、大して苦労しなかった。完成までに数週間要したが・・・。

今後の構想:Perl/TkでGUI操作をやりながらバックアップやリストア操作にこぎ着けたいと思っている。
さらに未来: Gitと連携したい。今のプログラムは、バックアップやリストアを実行した場合、上書きをしてしまうためローテートできず世代管理できない。

Goプログラムでの今後の構想は、Perlと同じく、GUIで操作できるようになりたい。

以上だ。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1