Spigotフォークの注意点

SpigotのフォークとしてはPaperが有名で、さらにそのフォークとしてはTuinity(Paperに統一されたが)、さらにそのフォークとしてはAirplaneなど、フォークのフォークのフォークでも有名どころはたくさん存在する。
また、単にフォークしまくっているだけではなく、当たりのものでは確かに圧倒的にラグが軽減されたりするのだ。
ということで、重いサーバーにどんどん実践投入してラグを減らそうとしたくなるわけだが、安易に置き換えては問題が起こることがある。
体験した例だが紹介しよう。
以下で扱うフォークは次のようなフォーク順である。
Spigot → Paper → (Tuinity) → Airplane → Pufferfish
Spigot → Paper → SSSpigot
ちなみにPaperもSpigotのフォークだが、こちらはとてつもなくコミュニティが大きく安定しているため、Paperは今回の話の対象外とする。
起動しなくなる
SSSpigotというフォークで起こった。
これは起動方法が本家とは違ったりして起動しなくなっただけである。しかし、その時はたまたま出先からの遠隔作業だったため、適当にjarファイルを置き換えることしかできなかった当時は、数日間のサーバー停止を余儀なくされた。
完全に私がおちゃめだったわけだが、ライセンスなどがあるフォークは置き換えに注意したい。
プラグインが動かなくなる
これもSSSpigotで起こった。
プラグインの互換がなくなるというのはこれに限らずよくある話だ。Spigotと100%の互換性をウリにしているフォークもよく見かける。
私が体験したのは、互換があると書いてあるにも関わらずペットのプラグインが使えなくなってしまうという現象だ。そのフォークは一部のmobを非同期マルチスレッドで動かせる機能がついていたので、それによるものだと思われる。作成者に確認したところ、そのプラグインの対応版を作成してもらえるということになり当時は乗り切った。
このように、一部の機能が競合したり、変更があったりでうまく動かないことがある。
全mobのAIが動かなくなる
これもSSSpigotで起こった。
置き換えて安定稼働していたある日、動物が動かないという報告が入った。確認してみると、あるタイミングより前から存在しているペットを含む友好mobのAIがすべて動かなくなっていたのである。新たに出現したものは正常なので置き換えればいいわけだが、名前がついていたり懐いていたりするためそう簡単にはいかない。
先ほどと同じように、やはりmobの処理を非同期マルチスレッドで行うようにされていたもので不具合が生じたのだろう。
ここで厄介なのが、元のサーバーjarに戻しても不動のまま直らないのだ。
開発者に連絡したところ、再現できない、納得できないということでどうしようもなかった。
数年前の話なので、どうやって対応したのかは思い出せない…。
知名度が大きくないフォークの場合は、同じような状況にあるユーザーが少なく、不具合に遭った際に困る可能性がある。また、開発側のコミュニティも規模が小さければ、問題がなかなか修正されない可能性もあることに注意したい。
ライセンスが切れる
これもまたSSSpigotである。
このフォークは3,000円ほどでライセンスを購入できるのだが、そのライセンスは3ヶ月ほどしか持たないのだ。更新費用は900円ほどで、めちゃくちゃラグが減れば使用しようとしていた。
しかし実際は、不具合だらけであり、開発者の返信待ち、修正待ち、解決不可、などで結局止むを得ずPaperに戻し、そのライセンスを使い切った。
ライセンスが切れているので、とりあえず置いておいて後から活用ということも勿論できない。つまり、ほぼ無駄な買い物だったということである。
プラグインとは違い、PvP系以外のサーバーは基本アップデートし続けねばならず、コストがかかってしまうためこのような仕様になっているものも少なくないだろう。
ただ、無駄になってしまう可能性も少なからずあるということを念頭においておきたい。
クラッシュするようになる
これは2022/03/07現在も実践利用しているPufferfishで起こった。
幸いにもこの症状が起こったのはテストサーバーだけであった。
ある日アップデートをして再起動をすると、サーバーが起動しなくなってしまった。
ログを見ると、プレイヤーログイン時に読み込まれるエンティティに問題がある様子…。
調べても何も出てこず、Pufferfishのバージョンを変えても変化がないのでPaperに戻してみたところ正常に戻った。
原因はわからないが、このように開発の規模が大きく、安定しているフォークでも普段は起こり得ないようなことが起こる可能性があることを覚えておきたい。
また、エンティティの非同期マルチスレッド系は問題を起こす可能性が高い気がする。
余談
以前まで存在していた、最適化パッチ全部盛りのYatopiaというフォークがあった。色んなフォークのパッチを合体させたフォークなので、不安定だと叩かれていたが、このような挑戦的な志向のものもかなり面白い気がするので、また復活してほしい気持ちがある。
今までの最強はTuinityとAirplaneだったが、こちらは統合されたり1.17までしか開発されてなかったりするため、1.18における最強のサーバーjar、Paper、Pufferfish、Purpurの3強となっている。
PaperはTuinityと統合され、以前とは比べ物にならないほど負荷が軽減している。Airplaneとも遜色ない。
PufferfishはAirplaneの1.18版及び更なる軽量化を目指して開発されているので、こちらもまたAirplaneと同等以上のパフォーマンスを発揮する。
Purpurはこれらとは違う路線で、独自の追加要素の拡張を目的として開発が続けられているため、これもまた需要によっては強い。
とにかくこの3つのように、目的を持って大きなコミュニティで開発されているものに期待できる。