ラズパイのでマイクラサーバーを作ったけど重くてマルチプレイができない…
そんな悩みにお答えします。
私もMinecraftをプレイしていてこのような悩みに直面したことがあります。
今回はRaspberry Pi(ラズパイ)で快適なマインクラフトサーバーを構築する方法を紹介します。
- マイクラサーバーが重い原因
- 軽いマイクラサーバーの立て方
- 動作をを軽くするポイント
マイクラサーバーが重い原因
マイクラサーバーが重い原因として考えられることは以下の通りです。
ひとつずつ改善していけばかなり軽くなると思うので、最後まで頑張りましょう!
特に一つ目の「使っているサーバーが重い」に関しては、これから紹介するPaperMCというサーバーを使うことでかなり軽くなるので、まずここから始めていきます。
重さの指標
今回は以下の項目を重さの指標として扱います。
- CPU使用率
- メモリ使用率
- 初回起動にかかった時間
+体感の重さ
動作環境は
- Raspberry Pi 4 4GBモデル
- 割り当てメモリ 2GB
- Minecraft 1.17 サバイバル
- Java17
- screen
です。
ベースとして、公式サーバーを使った場合の重さ
CPU使用率 | 98.4% |
メモリ使用率 | 68.6% |
初回起動にかかった時間 | 2分26秒 |
体感の重さ | 動物の動きもかなりカクカクしていて重く感じた |
サーバー側の設定
PaperMCを使う
「使っているサーバーが重い」の改善策として、PaperMCというサーバーを使う方法があります。
初めてマイクラサーバーを立てたときは、Minecraftの公式サイトからファイルをダウンロードし、それを実行してサーバーを起動した人が多いと思います。
そして今回は、公式サーバーより軽いPaperMCというサーバーをダウンロードして使うというわけです。
レンタルサーバーを借りて使うというわけではありません。
Twitterの声
paperMCめっちゃ軽いじゃーん最初からこれにしとけば良かった
— はぐ (@hgreus) August 29, 2022
ダウンロード
サーバーファイルはPaperMCの公式サイトからダウンロードします。
https://papermc.io/downloads
クリックすると二つの質問がされますので、一つ目はNo、二つ目はIt will be closedと答えてください。
起動
サーバーのディレクトリにダウンロードしたファイルを入れます。
今まで使っていたserver.jarファイルは削除します。
サーバーを起動。
cd サーバーのディレクトリ
java -Xmx1G -Xms1G -jar ダウンロードしたファイル.jar nogui
Xmx・Xmsの後の数値はご自身のラズパイのメモリ容量を超えない範囲で設定してください。(多い方がいいです)
エラーが出た場合、JavaのバージョンとMinecraftのバージョンが合っていない事が多いです。
(個人的な)推奨バージョン
マイクラのバージョン | Javaのバージョン |
---|---|
1.8〜1.16 | Java8かJava11 |
1.17〜 | Java17 |
古いJavaで新しいマイクラサーバーを動かそうをするとエラーが出ます。
以下のコマンドでインストールします。
sudo apt install openjdk-8-jdk #Java8
sudo apt install openjdk-11-jdk #Java11
sudo apt install openjdk-17-jdk #Java17
Java17のインストール方法はこちらの記事でも解説しています。
Java16はインストール方法が少しややこしいのでここでは説明していません。記事を投稿する予定ですのでお待ちください。
初回起動の際はeulaに同意するよう求められます。
nano eula.txt #eula.txtを編集
==eula.txt=================================
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://accou>
#You also agree that tacos are tasty, and the best food in the world.
#Sun Sep 11 19:59:38 JST 2022
eula=false # false -> true に変更
===========================================
起動します。
java -Xmx1G -Xms1G -jar ダウンロードしたファイル.jar nogui
"Timings Reset"と表示されれば完了です。
サーバーの停止
stop
サーバーを起動したままssh接続を切りたい方は、こちらの記事を参考にしてください。
負荷の比較
項目 | 公式サーバー | PaperMC |
---|---|---|
CPU使用率 | 98.4% | 31.7% |
メモリ使用率 | 68.6% | 49.0% |
初回起動にかかった時間 | 2分26秒 | 1分7秒 |
体感の重さ | 動物の動きもかなりカクカクしていて重く感じた | 動物の動きが滑らかでそこまで重くは感じなかった。 |
もう明らかに軽くなっているのがわかりますね!
起動直後はCPU使用率が90%近くまで上がりますが、その後は20%〜50%の間に収まることがほとんどでした。
サーバーの動作設定
続いては、サーバーの設定ファイルを編集して軽くします。
前述のPaperMCを使うことが前提ですので、まだの方はそちらを先に行ってください。
参考記事
「めんどくさっ!」と思うかもしてませんが5分もかからないですよ〜
設定ファイルの編集
paper.ymlを編集します。
行番号 | 項目 | 初期値 | 変更後 |
---|---|---|---|
129行目 | armor-stands-tick | true | false |
130行目 | non-player-arrow-despawn-rate | false | true |
167行目 | max-auto-save-chunks-per-tick | 24 | 8 |
169行目 | optimize-explosions | false | true |
197行目 | disable-chest-cat-detection | false | true |
328行目 | hopper: disable-move-event | false | true |
負荷の比較
項目 | 公式サーバー | PaperMC 初期設定 | PaperMC 設定後 |
---|---|---|---|
CPU使用率 | 98.4% | 31.7% | 27.9% |
メモリ使用率 | 68.6% | 49.0% | 41.1% |
初回起動にかかった時間 | 2分26秒 | 1分7秒 | ー |
体感の重さ | 動物の動きもかなりカクカクしていて重く感じた | 動物の動きが滑らかでそこまで重くは感じなかった。 | 設定前とは特に差は感じられなかった。 |
数値を見れば軽くなっていますが、体感としての変化はほぼ感じませんでした。
変更した設定の内容からして、以下のような場合に効果が現れると思います。
- サバイバルをそれなりに進めている
- 大人数(6人程度まで)でプレイしている
環境によって差が出るのでご注意ください。
余計なアプリの停止
使わないのに動いているアプリを停止します。
GPUメモリの設定
サーバーを動かす上ではGPUはほぼ使わないので割り当てメモリを減らします。
sudo raspi-config nonint do_memory_split 16
アプリの停止
(Bluetoothなど)
#Bluetooth関連
sudo systemctl stop hciuart.service
sudo systemctl stop bthelper@hci0.service
sudo systemctl stop bluetooth.service
sudo systemctl disable hciuart.service
sudo systemctl disable bthelper@hci0.service
sudo systemctl disable bluetooth.service
#キーボードショートカット
sudo systemctl stop triggerhappy.service
sudo systemctl stop triggerhappy.socket
sudo systemctl disable triggerhappy.service
設定を反映させるために再起動します。
sudo reboot
負荷の比較
結果はほぼ変わりませんでした!!
そのため、表は省略しています。
アプリの停止は、「極力無駄を省いて軽くしたい!」といった方におすすめです。
でもきっと使わないので、停止しておいても損はないと私は思います。
その他の改善点(重要)
ここまでサーバー側での改善点を紹介しましたが、ここからはそれ以外の改善点を紹介します。
盲点になりがちですか重要なのでしっかり確認しましょう。
設置環境を見直す
以下のような環境はNGです!
- 日光に直接当たる場所
- 風通しの悪い場所
できるだけラズパイが暑くならないようにすることが大切です。
冷却ファン付きのケースを使うのもかなり有効です。
私は2年近くこちらのファンケースを使い続けていますが、壊れたことはないのでおすすめです。
https://amzn.to/3RGtbH7
有線LANを使う
有線LANは速いのはもちろんのこと、通信が安定しているという特徴があるのでおすすめです。
また、有線LANを使いたくない方は、ルーターの近くにラズパイを置くと良いです。
こちらの有線LANがおすすめです。0.5m〜10mまで長さを選べます。
https://amzn.to/3RY6M7H
マイクラ内での重さを減らす
マイクラが重くなる原因は主にこちらです。
- エンティティが多すぎる
- 初期スポーン付近にがとても発展している
エンティティが多すぎる
エンティティとは、ブロック・パーティクル以外のもののことを指します。
代表されるエンティティ
- プレイヤー
- モブ・動物
- ドロップしたアイテム
- トロッコや防具立て
エンティティは動きますし、それぞれ挙動が違うので多いとかなり重くなります。
そのため、村人増殖や大量の動物を飼うことはできるだけ控えた方が良いです。
どうしても作りたい場合は、次にも説明しますが初期スポーンから離れた位置、またはネザーに作ることをおすすめします。
初期スポーン付近がとても発展している
初期スポーン地点を中心とした23×23チャンクの範囲はスポーンチャンクと呼ばれていて、常に読み込まれる仕様になっています。(詳しくはMinecraft Wikiをご覧ください)
つまりワールドのどこにいてもそのチャンクは処理され続けるので、
スポーンチャンクが重い = ワールドが常に重い
ということになってしまいます。
この仕様は大きなメリットでもありますが、やりすぎには注意が必要です。
対策としては、以下のようなものがあります。
- スポーンチャンクではないところに拠点を作る
- 装置やトラップはネザーに作る
チャンクローダーという装置を使えば好きなチャンクを常に読み込むことができるので、気になった方は使ってみてはいかがでしょうか。
Googleで検索「Minecraft チャンクローダー」
最後に
最後にマイクラサーバーが重い原因とその解決策を載せておきます。
- PaperMCを使う
- サーバーの設定ファイルを編集して無駄な機能を省く
- 余計なアプリの停止(Bluetoothなど)
- 直射日光・風通しの悪い場所は避ける
- 初期スポーン付近のエンティティの数を見直す
お疲れ様でした。
ご感想・質問等あればコメント欄までよろしくお願いします。
コメント