ようこそお越しくださいました、ししゃもです。
(・∀・)ノ
みんなラズパイ余ってる?じゃあサーバーの補助に使っちゃいなよ!!今回は pi 3B+ でマップ用サーバーを建ててみたよ!!
ししゃものマップレンダリングへの思い(読まなくていいです)
クォータービューっぽいマップのレンダリングって、以前はmcmapって言うのがあって、結構手軽でした。でも、1.13以降は機能せず、他ツールも壊滅状態になっててマップのレンダリングができない状態でした。
↑はmcmapで最後にレンダリングした2019/4/19のぷっこ村。少しづつ発展するのを眺めるのが好きで、ちょくちょく書き出してました。
またこういう感じでマップを作りたい、且つサーバー用にWeb上で気軽に見れるようにならんものか……。Webなら余ってるラズパイをサーバーにできるし、観光用の地図になるしめっちゃいいよね!!
というわけで、色々探してみて「The Minecraft Overviewer」がピンと来たので使ってみました。結構つまづいたので、軌跡をまとめておきます。
実際にこうなる & 注意点
ちなみにレンダリングした結果、以下のようにブラウザで表示されます↓
後、1つ知っといてほしい点があって、ぷっこ村の規模だとpi 3B+の性能で終わるまでに約36時間かかったよ。1万タイル/1h くらいで考えとくといいかも。
The Minecraft Overviewer を選んだ理由、魅力
以下の点で探してみました。
- クォータービュー出力(カッコいいよね!!)
- 1.16.1現在でも更新されている
- ブラウザで見れる(出力のしやすさ)
の条件を基に探してみたところ、The Minecraft Overviewer 一択みたいな状況になってる気がする。レンダリング後は index.html を勝手に作ってくれるので、出力先を web 出力するディレクトリにしとけば手間がほとんどいらなくなります。もちろん cron で自動実行とかもできます。(ほかにイイのあったら教えてね)
The Minecraft Overviewer でレンダリングまでの進め方
前置き済んだんでここからやり方について、まず大まかな流れとして……、
大まかな流れ
- ラスパイのネット接続、SSH設定、DDNS の取得、とか
- The Minecraft Overviewer のビルド(apt は死んでる?) & 設定
- Nginx インストール & 設定
- レンダリング
- SSL とかの細かい設定
みたいな流れになります。なんとなく覚えといてね。
ラスパイのネット接続、SSHの設定、DDNS の取得、とか
LANケーブルで有線推奨です。(宅鯖は基本有線で)。グローバルIPだと、DDNSの設定とかもいります。この辺は今回の趣旨と外れちゃいます。別サイトで解説してるんで、そちらを読んで済ましといてもらうのが前提です。
The Minecraft Overviewer のビルド(apt は死んでる?) & 設定
ここからが今回の本番、The Minecraft Overviewer をラズパイに入れる項目です。マニュアルには apt でインストール可能とありますが、どうも死んでるようで直接インスト-ルはできませんでした。なので、自分でビルドする必要があります。そこんとこ解説しときます。
まずは必要なパッケージのインストール。git、python3 の pil、dev、numpy が必要。pip を使うとめんどくさくなるのでやめた方がいいかも。
sudo apt install git python3-pil python3-dev python3-numpy
ソースコードを git clone でダウンロード
sudo git clone git://github.com/overviewer/Minecraft-Overviewer.git
Minecraft-Overviewer ディレクトリができるので移動。中にある setup.py を実行でビルド開始
cd Minecraft-Overviewer
sudo python3 setup.py build
大体1~2分で済んだら、overviewer.py ができるよ。これが実行ファイルです。
The Minecraft Overviewer はテクスチャをマイクラから持ってくるので、ついでに用意します。
sudo wget https://overviewer.org/textures/1.16.1 -O ~/.minecraft/versions/1.16.1/1.16.1.jar
これで1.16.1のテクスチャが用意できました!!
コンフィグファイルの設定
コンフィグファイルをちゃんと設定して、overviewer.py を実行しないとエラーが出てうまく動きませんでした。Minecraft-Overviewer/config_file を編集して起動時に指定しましょう。ぷっこ村の場合↓
worlds["PukkoVillage"] = "/home/hoge/hoge/PukkoVillage"
worlds["MushroomIsland"] = "/home/moge/moge/MushroomIsland"
renders["Pukko Village"] = {
"world": "PukkoVillage",
"title": "Pukko Village Over World",
"rendermode": "normal",
"dimension": "overworld",
}
renders["Mushroom Island"] = {
"world": "MushroomIsland",
"title": "Mushroom Island Over World",
"rendermode": "normal",
"dimension": "overworld",
}
outputdir = "/var/www/html"
texturepath = "/home/hogemoge/.minecraft/versions/1.16.1/1.16.1.jar"
outputdir は後で入れる Nginx の表示用ディレクトリ。最後の textuepath でテクスチャの指定ができます。リソースパックも指定できるみたい。ぷっこ村はバニラなのでそのまま。
sudo python3 overviewer.py --config=/home/hogemoge/Minecraft-Overviewer/config_file
–config= でコンフィグファイルのパス指定。これでレンダリングが始まります。outputdir がまだないので多分エラーが出るかな? Nginx インストール時に勝手に作られるので今はいいです。
screen で起動した方がいい
長時間のレンダリングになるので、寝るときSSH切ったりします。screen で実行した方がいいと思うよ。raspi はバージョンによって screen があったりなかったりコロコロ変わる気がするので、ないときは
apt install screen
Nginx インストール & 設定
Nginx は簡単に webサーバーを構築できるソフト。/var/www/html に index.html を置くと表示してくれます。The Minecraft Overviewer はレンダリング時に index.html を出力してくれるので、さっき config_file で outputdir に指定したわけです。
sudo apt install nginx
sudo systemctl start nginx
これで、ブラウザからアクセスすると表示されるようになります。マップのレンダリングをしてみましょう。
SSL とかの細かい設定
一応外部に公開するわけですし、SSL の設定しときましょう。SSL 証明書は Let’s Encrypt の Certbot を利用すると楽で速いよ。
sudo apt install certbot
sudo certbot certonly --webroot -w /var/www/html/ -d pukkovillage.sytes.net
引き続きメールアドレスの入力とか利用規約の同意確認とかがあります。最後に長い英文と共に、キーのパスが出るのでメモしときましょう。
Nginx のコンフィグ
コンフィグファイルをいじりましょう。/etc/nginx/nginx.conf で設定できます。http {} 内に記述します。↓例
# HTTP redirect
server {
listen 80;
server_name pukkovillage.sytes.net;
return https://$host$request_uri;
}
# HTTPS server
server {
listen 443;
server_name pukkovillage.sytes.net;
ssl on;
ssl_certificate /etc/letsencrypt/live/pukkovillage.sytes.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pukkovillage.sytes.net/privkey.pem;
root /var/www/html;
index index.html;
}
こんな感じで記述しとくと、80番ポート(http)を443番(https)にリダイレクト、443番にアクセスでマップ表示にできます。書き換えたら
sudo /etc/init.d/nginx restart
で確認してみましょう。これでアクセスできるようになるはずです。お疲れさまでした~(・∀・)ノシ
コメント