[Folia]MinecraftServerをマルチコアで動かす

Share
[Folia]MinecraftServerをマルチコアで動かす

Foliaとは

Minecraftサーバーの一種で、プレイヤーの負荷分散と並列処理を最適化することを目的としている。PaperMCの一部ではなく独立したプロジェクトとして開発されている。

Foliaの特徴

独立した領域の形成

近くのロードされたチャンクをグループ化し、独立した領域を作る。各領域には独自のティックループがあり、20TPSで実行される。全チャンクをシングルスレッドで処理するのではなく、複数チャンクをグループ化してグループごとに並列処理することでマルチコアで動かせるようにしている。

ティックループってなに

Minecraftのゲームエンジンが一定の間隔で実行する処理サイクル。ゲームのロジックや状態更新を管理する。エンティティやブロック、物理演算の更新、レンダリングの更新、ネットワークの同期など。マイクラは20TPS(50ms/1TPS)で実行する。

ティックループを独立した領域ごとに分割し、並列処理することで、サーバーのパフォーマンスを向上している。

並列処理

各領域のティックループはスレッドプールで並列して実行される。大規模なプレイヤーがいるサーバーやプレイヤーが広範囲に散らばっているサーバーに対して効果的。

恩恵を受けるサーバー

Skyblockやサバイバルマルチサーバーは、プレイヤーが広範囲に散らばるので恩恵を受けやすい。人がたくさんいる大規模なサーバーも。

Foliaに最適なハードウェア

理想的には16コア以上(スレッドではなくコア)が適切。つまりたくさんコアを積んでいるマシン(Xeonなど)で動かすのに最適。

Spigotやpaperはシングルスレッドで動作するため、サーバーに求められるのはコア数ではなく動作周波数。なのでXeonのような多コア低動作周波数のようなマシンではパフォーマンスが落ちる。Foliaは各領域は独自のスレッドで処理されるため、メインスレッドのボトルネックが解消される。あとプラグインも別スレッドで動作するっぽいのでマップ系プラグインをフル稼働させてもゲーム自体は重くならない。。。はず。

実行環境

今回用意した環境

マシン NEC Express5800/R120g-1E N8100-2428Y(ヤフオクにて落札)
CPU E5-2630 V4 ×2基 (ベース2.20GHz, ターボ3.20GHz,10C20T ×2基 = 20C40T)
メモリ 64GB DDR4
SSD 240G SATA
HDD 1TB SATA
ネットワーク 宅内1G
Internet フレッツ光 1G

基盤 Proxmox
実際に生活サーバーを運営しているVMの割当
OS Ubuntu server
コア割当 26core(13c26t)
メモリ割当 35GB
SSD OS他 キャッシュ有
HDD マップ保存用 キャッシュ有

今回ブログ記事で動かす環境
OS Ubuntu
コア 20c(10c20t)
メモリ 24GB
HDD キャッシュwrite back

構築

注記 このやり方は2024年5月時点でのやり方です。

javaインストール

sudo apt install openjdk-17-jre-headless

Foliaをダウンロード
Gitからクローンする

 git clone https://github.com/PaperMC/Folia.git

ダウンロードしたフォルダに移動

 cd Folia

起動.jarを自分でビルドする必要があるのでビルドする。
パッチ適応

./gradlew applyPatches

初回は失敗することがある。赤線で囲った文字列が出てきたら、Githubをアカウントを登録する必要がある。

以下の2つのコマンドを入力

 git config --global user.email "[email protected]メールアドレス" 
 git config --global user.name "Your Nameアカウント名"

再度./gradlew applyPatches を実行
BUILD SUCCESSFULと出れば成功

次にjarファイルを作成する。これまた時間がかかるので待機。

./gradlew createReobfBundlerJar

完成したjarファイルは、~\Folia\build\libs\にあるので実行したいフォルダに移動する。

homeディレクトリにserverフォルダを作成

cd
mkdir server

移動

cp /home/mina/Folia/build/libs/folia-bundler-1.20.4-R0.1-SNAPSHOT-reobf.jar /home/mina/server

start.shを作成。細かいことはよくわからないので最小構成で。メモリは20GB割り当てた。

java -jar -Xms20G -Xmx20G folia-bundler-1.20.4-R0.1-SNAPSHOT-reobf.jar

権限変更

sudo chmod 775 start.sh
./start.sh

Failed to load eula.txtと出るので、eula.txtのfalseをtrueに変更。再度実行。
諸事情によりサーバーポートを50000に変更しています。

マイクラでアクセスしてみて入れたら成功です。

/tpsで負荷を見れます。サバイバル1ヶ月半、同接プレイヤー3人いるサーバーの例です。
max7人いたときも快適にプレイできていました。古いCPUなので完璧ではありませんが。
エンティティが1337もいるのでMSPTが少し高めですが、TPS20で動作は快適です。

プラグインについて

spigotプラグインが全て使えるわけではないので、対応表を出しておきます。ここから、対応しているプラグイン一覧を見れます。

https://github.com/BlockhostOfficial/folia-plugins

マッププラグインについて

有名なdynmapが対応していませんが、bluemapという別のマッププラグインが対応しているのでこれを使うことをおすすめします。レンダリングがマルチコアでできるだけでなく、このプラグインで使用できるコア数を指定できるので、ゲームと使用コアを分けることができます。実際に運用しているサーバーでは、26コア(13c26t)の内10コア(5c10t)をマップレンダリングに割り当てています。

立体的に見ることもできます。

動作周波数が高いCPUを使っているのであればSpigot,Paperでいいと思いますが、たくさんコアを積んだXeonのようなCPUでサーバーを立てたいときはFoliaがいいかもしれません。

よいマインクラフトライフを。

Read more

サイトリニューアルのお知らせ&近況報告2026.10

サイトリニューアルのお知らせ&近況報告2026.10

お久しぶりです。久しぶりにサイトリニューアルして諸々ごっそり環境が変わりました。 ブログの内容自体はこれまで通りガジェットや雑記中心でやっていきます。 変更一覧 ・3年くらい使ってきたレンタルサーバーからセルフホスト環境へ移行 ・CMSをWordPress→Ghostに変更 ・昔の記事の整理・一部非公開化 ・筆者の環境も諸々変わった これからはドメイン代と安い電気代だけでサイトを運営できるようになりました。 これからもよろしくおなしゃす 作りたい記事 ・OPPO find X9レビュー ・S23 Ultra

近況報告 2026.06

久しぶりの記事投稿です。 前回よりかなり期間が空いてしまいました。ガジェットオタクはまだやめていません。 ぼちぼち記事書いていこうと思います。 世間的には動画編集の方が見てくれる人が多いとは思いますが、動画編集する時間が取れないので引き続きブログでの投稿になります。動画とか出してみたいですね。 投稿予定↓ ガジェット系 ・Xiaomi15 長期使用レビュー ・NASシリーズ 更改(済)報告 車系 新ジャンル! ・iPad カーナビ化 グッズ、アプリ等 ・Spotifyの歌詞を常時表示するアプリ 広告も載せれるよう本腰を入れていきたいですね。

画像を線画化して壁紙にする[Affinity Photo2]

画像を線画化して壁紙にする[Affinity Photo2]

今回はこの画像を使用します。 こちらの画像を使用しました。[リンク] Affinity Photo2は多分試用版だと無料で使えると思います。 線画化 レイヤーを右クリックして複製を選択して複製する。 レイヤーの調整>HSLを選択 彩度のシフトを一番左にして彩度を0にする 複製した画像を選択して、覆い焼きカラーに変更。 複製した画像を選択して、レイヤー>反転を選択する。ほとんど白いレイヤーになります。 引き続き複製した画像で、レイヤー>新規ライブフィルターレイヤー>ぼかし>ガウスぼかしを選択 半径を線が見えるように調整する。大体0.3~1.2くらいがちょうどいいですが、画像によります。 レイヤー>レベルを選択し、 黒レベルを調整します。お好みで調整してください。大体50%くらいが良いです。 線画が完成しました。 背景透過&壁紙 一旦保存します。ファイル>エクスポート>PNGでエクスポート。 新規作成から、壁紙にしたい画像を開きます。(背景透過のみしたい方は先程編集した画像を開いてください。) 今回はこちらの画像を使用します。[リンク] 先ほどエク

WordPressとCloudflareを使ってブログを始めたときに躓いたこととか

worpdressを自宅のraspberrypi4からさくらのレンタルサーバーに移行した時に躓いた点 事例 バックアップファイルをアップロードできない 移行元のデータをAll-in-One WP Migration等プラグインで移行先にインポートできない問題。ファイルをアップしようとすると、0.◯◯%で止まってそこから動かない、または途中で止まってしまう場合は、ファイルサイズがcloudflareのアップロードサイズを超えている可能性が高い。cloudflare(以後CF)の無料枠はアップロードサイズが100MBまでで、これはphp.iniのアップロードサイズを上げても関係ない。100MBを超えるファイル(バックアップや動画等)をアップしようとすると上限に引っかかりアップが拒否される。 解決策は、All in One WP Migrationのエクスポートの高度なエクスポートから、項目を分けてエクスポートするのが良い。項目を分けて分割することで、上限を避けてアップできる。メディアだけで100MBを超えてしまう場合は、AllinOneの高度なエクスポートでメディアを除外してエク