【Minecraft】Yatopiaの導入と小規模サーバ向けのチューニング

5 min read読了の目安(約4700字

どうもGenbuです。マイペースにMinecraftで遊んでたりします。

さて、私は身内用の小規模なMinecraftサーバ(〜10人程度)を動かして遊んでいるのですが、それにあたって動作の軽いサーバソフトを探していたところ、非常に良いものを発見したので、今回はその紹介と導入方法の解説を行っていきます。

Yatopiaとは

今回紹介するサーバソフトは「Yatopia」という名称なのですが、このサーバソフトは動作が軽く設定項目が多いというのが大きな特徴です。

しかし、2021年2月16日現在、その知名度はあまり高くなく、日本での採用事例は私以外知らないのが現状です。なので、身内鯖を中心に採用事例が広がることを期待して、本記事を投稿する次第となりました。

次に、Yatopiaの主な機能について紹介していきます。

主な機能

  • CraftBukkit / Spigot / Paperとの高い互換性
  • 豊富な設定項目
  • 強力な最適化パッチの統合

CraftBukkit / Spigot / Paperとの高い互換性

世界的にも有名なCraftBukkit・Spigotといった有名なサーバソフトをベースに開発されており、ほとんどのプラグインをそのまま持ち込む形で導入することができます。

豊富な設定項目

Spigotをはじめて導入した人は、公式のサーバと比較して設定項目の多さに圧倒された人もいるかと思われますが、Yatopiaはそれよりも設定項目が多く、ニーズに応じてサーバを最適化することができます。

たとえば、Paper由来の

  • プレイヤーごとのMobスポーン (シングルプレイの仕様に最も近い)
  • レッドストーン処理の最適化
  • 爆発の処理の最適化

こういった機能をカバーしつつ、従来のserver.propertiesによる設定や、bukkit.ymlspigot.ymlを用いた設定もサポートしており、既存のサーバソフトからの移行も大変しやすくなっているのが特徴です。

また、SpigotやPaperから派生したTuinity、Purpurの設定項目だけでなく、Yatopia独自の設定項目もカバーしており、CraftBukkit系のサーバソフトウェアの中でも最強クラスと思われるカスタマイズ性の高さを誇ります。

強力な最適化パッチの統合

お気づきの人もいらっしゃるかもしれませんが、Spigotは公式のサーバソフトよりも動作が軽いのが特徴です。

ところが、Yatopiaはその上をいく動作の軽さを誇り、設定を駆使すればバニラらしい挙動を維持したまま、負荷のかかりやすい処理を最適化することができます。

何も設定しなくとも、ネザーの読み込みの高速化、チャンク読み込みの非同期化といった恩恵を受けることができるので、とりあえず導入するだけでも効果は抜群だと思います。

他にもCraftBukkit系のサーバソフトの中には様々な最適化パッチを施したものがありますが、Yatopiaはそれらのパッチも内包しており、その点においても最強クラスと言えるでしょう。

Yatopiaの導入

では、実際にYatopiaを導入し、動かしてみましょう。

今回使用する動作環境は下記の通りです。

  • Raspberry Pi 4B 4GB
  • Manjaro Linux Minimal 20.12.1
  • Java 11 (AdoptOpenJDK build 11.0.10+9)
  • Minecraft 1.16.5

動作させるOSを問わず、Java 11またはそれ以上のJDKを事前に導入しておいてください。

1. サーバディレクトリの作成と準備

※ 他のサーバソフトから移行する方は、事前にサーバ全体のバックアップを取ってから実施してください。

まず、サーバディレクトリを作り、そのディレクトリに入りましょう。名前は好きなディレクトリで構いませんが、今回はyatopiaというディレクトリを作成します。

既にSpigotサーバをお持ちの方は、ディレクトリの作成をスキップしていただいても構いません。

$ mkdir yatopia
$ cd yatopia

Yatopiaのダウンロードとインストール

次に、Yatopiaをダウンロードします。下記のリンクから該当するバージョンを選び、見つかったバージョンを選びます。

https://yatopiamc.org/download.html

安定版をお求めの方は、Latest stable buildをダウンロードします。

今回はMinecraft 1.16.5対応の安定版 #24 を使用します。

$ curl -Lo yatopia-1.16.5.jar "https://api.yatopiamc.org/v2/build/24/download?branch=ver/1.16.5"

Yatopiaのダウンロードが終わったら、サーバを起動するためのシェルスクリプトを作成します。
せっかくなので、JVMのチューニングもこの段階で行っておきましょう。

お好みのエディタで、下記の内容のシェルスクリプトを作成してください。ファイル名は問いませんが、ここではシェルスクリプトのファイル名をserver.shとします。

※ ParallelGCThreadsとConcGCThreadsの値は、お使いのプロセッサのコア数に応じて変更してください。

#!/bin/bash

cd `dirname %0`

java -server -Xms2560M -Xmx2560M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:ParallelGCThreads=2 -XX:ConcGCThreads=2 -XX:+DisableExplicitGC -XX:+UseStringDeduplication -XX:+DisableExplicitGC -XX:-UseBiasedLocking -XX:+UseTLAB -XX:MaxGCPauseMillis=100 -XX:TargetSurvivorRatio=90 -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -jar yatopia-1.16.5.jar

シェルスクリプトを作成したら、実行権限を付与します。

$ chmod +x server.sh

Yatopiaの起動

サーバの起動にあたり、Mojangの利用規約に同意する必要があるため、下記のリンクの利用規約を読み、同意する場合先に進みます。

https://account.mojang.com/documents/minecraft_eula

利用規約に同意する場合、下記のコマンドを実行します。

$ echo eula=true > eula.txt

それでは、一旦サーバを起動してみましょう。screenコマンドを用いてバックグラウンド実行したい方は、お好みの名前でセッションを作成し、server.shを起動してください。

$ ./server.sh

ログにDone!と表示されれば、起動完了です。

とりあえずこの段階で遊ぶことはできますが、次はサーバの設定を変更し、小規模サーバ向けのチューニングを施します。

小規模サーバ向けのチューニング

サーバが稼働中の場合、一旦stopコマンドを実行し、サーバを停止します。

お好みのテキストエディタを開き、下記のファイル名の設定ファイルに記載されている項目を変更してください。

server.properties

項目名 設定する値
allow-flight true
view-distance 8〜16の値

bukkit.yml

項目名 設定する値
period-in-chunks 400

spigot.yml

項目名 設定する値
save-user-cache-on-stop-only true
tick-inactive-villagers false

paper.yml

※ もしレッドストーンの挙動に問題が発生した場合、use-faster-eigencraft-redstoneの値をfalseに設定してください。

項目名 設定する値
max-auto-save-chunks-per-tick 6
optimize-explosions true
per-player-mob-spawns true
use-faster-eigencraft-redstone true

yatopia.yml

※ Minecraftの統合版と共にプレイすることを想定し、かつGeyserとFloodgateを導入した方は、下記の設定を変更してください。
※ 項目がない場合は読み飛ばしてください。

項目名 設定する値
using-floodgate true

以上で設定は完了です。それでは、もう一度サーバを起動してみましょう。

$ ./server.sh

ここまでの設定おつかれさまでした。

既存のCraftBukkit / Spigotプラグインはどうなるの?

ほとんどのプラグインはそのままお使いいただけますが、もし問題が発生した場合、そのプラグインの使用を停止し、開発者に問題をフィードバックするか、各自の判断で対応してください。

総括

さて、ここまでYatopiaの紹介と導入、チューニングについて解説していきました。

比較的新しいサーバソフトですが、ほとんどの場合快適にMinecraftがプレイできるようになったと思います。

また、メモリが4GBの環境でも快適にプレイできるチューニングや、快適さとバニラの挙動のいいとこ取りをした設定も紹介したため、これをベースに用途に応じたチューニングを施すことも可能です。

ご家族やお友達の方と、快適かつ楽しいMinecraftライフを送ってください。

ここまでご覧いただき、ありがとうございました。またお会いしましょう。

参考文献

  1. https://github.com/YatopiaMC/Yatopia
  2. https://www.spigotmc.org/threads/guide-server-optimization⚡.283181/