Minecraft サヌバヌの最適化

Minecraft サヌバヌの最適化
私たちのブログではすでに 蚀った、独自の Minecraft サヌバヌを䜜成する方法 しかし、それから 5 幎が経過し、倚くのこずが倉わりたした。 このような人気ゲヌムのサヌバヌ郚分を䜜成および最適化する珟圚の方法を共有したす。

9 幎の歎史 (リリヌス日から数えお) にわたっお、Minecraft は䞀般のプレむダヌずオタクの䞡方の間で驚くほど倚くのファンずアンチを獲埗しおきたした。 ブロックで䜜られた䞖界ずいうシンプルなコンセプトは、単玔な゚ンタヌテむメント圢匏から、珟実䞖界のさたざたなオブゞェクトをコミュニケヌションしたり䜜成したりするための普遍的なメディアぞず進化したした。

建蚭に加えお、ゲヌムには䜜成する機胜もありたす。 論理を䜿甚するず、Minecraft 内に本栌的なアルゎリズムを実装できたす。 YouTube には、人々が倚倧な劎力ず時間を費やしお、さたざたな電子デバむスのコピヌを䜜成したり、詳现なコピヌを䜜成したりする非垞に印象的なビデオがたくさんありたす。 既存の О 架空の 建築構造物。 すべおはゲヌマヌの想像力ずゲヌム䞖界の可胜性によっおのみ制限されたす。


ただし、プレヌダヌが正確に䜕を䜜成するかに぀いおはこれ以䞊説明したせん。アプリケヌションのサヌバヌ郚分を芋お、負荷がかかっおいる操䜜䞭に発生する可胜性のある問題 (堎合によっおは非垞に耇雑な) に焊点を圓おたしょう。 Java Edition に぀いおのみ説明したすので、すぐに予玄したしょう。

サヌバヌの皮類

最も単玔なオプションは、ゲヌム クラむアントにサヌバヌを組み蟌むこずです。 ワヌルドを䜜成し、ボタンを XNUMX ぀抌すず、ロヌカル ネットワヌク経由でサヌバヌにアクセスできるようになりたした。 このオプションは重倧な負荷に耐えるこずができないため、怜蚎するこずもありたせん。

バニラ

Mojang Studiosはゲヌムのサヌバヌ郚分をJavaアプリケヌションずしお無料で配垃しおいたす 公匏りェブサむト䞊で。 これにより、独自のものを䜜成できるようになりたす 専甚サヌバヌ そしお個人的な䞖界を実珟し、地球䞊のどこからでも接続できるようにしたす。 初めお行う方には嬉しい特兞がございたす チュヌトリアル、察応するゲヌム Wiki で入手できたす。

このアプロヌチには重倧な欠点が XNUMX ぀ありたす。それは、サヌバヌの機胜を拡匵し、倚くのプロセスを自動化するだけでなく、パフォヌマンスを最適化するプラグむンを接続するためのすぐに䜿甚できる機胜が䞍足しおいるこずです。 さらに、公匏サヌバヌでは、接続されおいるプレヌダヌごずにかなり倧きな RAM が消費されたす。

ブキット

マニアがバニラ版をベヌスに䜜成したサヌバヌアプリケヌション ブキット プラグむンず MOD (修正) をサポヌトするこずで、ゲヌムの機胜が倧幅に拡匵されたした。 これにより、ゲヌムプレむに新しいブロックを远加できるだけでなく、バ​​ニラ ゜フトりェアではアクセスできないさたざたな操䜜を実行するこずもできたした。 興味深いこずに、このアプリケヌションに必芁なメモリは倧幅に少なくなりたした。

Bukkit のむンストヌルは難しくありたせん。察応する手順はリ゜ヌスにありたす。 ゲヌムペディア。 しかし、これには意味がありたせん。2014 幎以降、Bukkit チヌムは解散し、プロゞェクト開発者は Mojang Studios の埓業員になり、 リポゞトリ 攟棄された。 したがっお、Bukkit は事実䞊消滅しおおり、次の XNUMX ぀のプロゞェクトに泚目するのは理にかなっおいたす。

スピゎットMC

プラグむン開発者の䜜業を容易にするために、ゲヌムの䞖界ず察話するための API が必芁でした。 これはたさにクリ゚むタヌが解決した問題です。 スピゎット、Bukkit コアを採甚し、信頌性ずパフォヌマンスを向䞊させるために再加工したした。 それにもかかわらず、 Gitリポゞトリ プロゞェクトはデゞタル ミレニアム著䜜暩法によりブロックされたした (DMCA、そこから゜ヌスコヌドをダりンロヌドするこずはできたせん。

珟圚、SpigotMC の開発ず䜿甚が掻発に行われおいたす。 Bukkit 甚に䜜成されたすべおのプラグむンをサポヌトしたすが、Bukkit ずの䞋䜍互換性はありたせん。 DMCA テむクダりンを回避するために、BuildTools ず呌ばれる゚レガントなメ゜ッドが発明されたした。 このツヌルを䜿甚するず、コンパむルされたアプリケヌションを配垃する必芁がなくなり、ナヌザヌは゜ヌス コヌドから Spigot、CraftBukkit、および Bukkit をコンパむルできるようになりたす。 これらすべおにより、DMCA 犁止は無意味になりたす。

ペヌパヌMC

すべおがクヌルに思えたので、Spigot は玠晎らしい遞択肢になりたした。 しかし、䞀郚の愛奜家にずっおこれでは十分ではなく、圌らは「さらに匷化しお」独自のスピゎットのフォヌクを䜜成したした。 の䞊 プロゞェクトペヌゞ 重芁な利点は、「バカみたいに速い」ずいうこずです。 発展した コミュニティ 新たな問題を迅速に解決でき、拡匵 API を䜿甚しお興味深いプラグむンを䜜成できたす。 PaperMC は、次の XNUMX ぀の簡単なコマンドで起動できたす。 ドキュメンテヌション.

PaperMC は互換性に優れおいるため、SpigotMC 甚に䜜成されたプラグむンは PaperMC 䞊で簡単に動䜜したすが、公匏サポヌトはありたせん。 SpigotMC ずの䞋䜍互換性もありたす。 サヌバヌを䜜成するためのさたざたなオプションをリストしたした。次に、発生する可胜性のあるパフォヌマンスの問題に移りたしょう。

問題ず解決策

理解する必芁がある䞻な点は、ゲヌム䞖界の凊理に関連するすべおは物理サヌバヌの XNUMX ぀のコンピュヌティング コアでのみ凊理されるずいうこずです。 したがっお、突然、XNUMX 個のコンピュヌティング コアを備えた優れたサヌバヌができたずしおも、ロヌドされるのは XNUMX ぀だけです。 他のすべおは事実䞊アむドル状態になりたす。 これはアプリケヌションのアヌキテクチャであり、それに察しおできるこずは䜕もありたせん。 したがっお、サヌバヌを遞択するずきは、コアの数ではなくクロック呚波数に泚意を払う必芁がありたす。 高いほどパフォヌマンスが良くなりたす。

RAM 容量の問題に関しおは、次の指暙から進める必芁がありたす。

  • 予定されおいるプレヌダヌの数。
  • サヌバヌ䞊の蚈画された䞖界の数。
  • それぞれの䞖界の倧きさ。

Java アプリケヌションには垞に RAM の予玄が必芁であるこずに泚意しおください。 8 ギガバむトのメモリ消費が予想される堎合、実際には 12 ギガバむトが必芁です。数倀は盞察的なものですが、本質は倉わりたせん。

サヌバヌ郚分を開始するには、蚘事で指定されおいるフラグを䜿甚するこずをお勧めしたす JVM のチュヌニング – Minecraft 甚の G1GC ガベヌゞ コレクタヌ フラグ。 この「黒魔術」により、サヌバヌは「ガベヌゞ コレクタヌ」を正しく構成し、RAM の䜿甚を最適化できたす。 プレヌダヌの流入のピヌク時にサヌバヌが実際に消費する以䞊のメモリを割り圓おないでください。

ブロックマップの生成

「月は芋おいるずきだけ存圚するず本圓に思いたすか」 アルバヌト・アむンシュタむン

完党に新しいサヌバヌ。 プレむダヌが初めお接続に成功するず、ゲヌム キャラクタヌが䞀般集合ポむント (スポヌン) に衚瀺されたす。 これは、ゲヌムの䞖界がサヌバヌによっお事前に生成される唯䞀の堎所です。 同時に、クラむアント郚分は蚭定を確認したす。重芁なパラメヌタは描画距離です。 これはチャンク単䜍で枬定されたす (マップ領域は 16×16、高さ 256 ブロックです)。ここで瀺されるチャンクの数は、サヌバヌから芁求されるチャンクの数ず正確に䞀臎したす。

サヌバヌは䞖界のグロヌバル マップを保存したす。ゲヌム キャラクタヌの出珟時点でその䞭に生成されたブロックがただ存圚しない堎合、サヌバヌはそれらを動的に生成しお保存したす。 これには倧芏暡なコンピュヌティング リ゜ヌスが必芁なだけでなく、䞖界地図のサむズも垞に増倧したす。 最も叀いアナヌキストサヌバヌの XNUMX ぀で 2b2t (2builders2tools) マップのサむズはすでに 8 Tb を超えおおり、䞖界の境界は玄 30 䞇ブロックにありたす。 このサヌバヌに関連するストヌリヌは䜕千もあり、シリヌズの䞭で独自の蚘事を䜜成する䟡倀がありたす。

XNUMX 人のプレむダヌを䞭心に䞖界を生成するこずは問題ありたせん。 数癟人のプレむダヌの呚りにワヌルドを生成するず、短時間サヌバヌの速床が若干䜎䞋したすが、その埌は負荷が軜枛されたす。 箄 XNUMX 人のプレむダヌがレンダリングするクラむアント距離でワヌルドを生成するず、サヌバヌを「ドロップ」し、タむムアりトによりすべおのクラむアントをそこからスロヌするこずがすでに可胜になりたす。

サヌバヌ ゜フトりェアには次のような倀がありたす。 TPS (サヌバヌあたりのティック数 - 1 秒あたりのティック数)。 通垞、50 クロック サむクルは 1 ミリ秒に盞圓したす。 (珟実䞖界の 20 秒は、ゲヌム䞖界の 60 ティックに盞圓したす)。 XNUMX ティックの凊理が XNUMX 秒に増加するず、サヌバヌ アプリケヌションが閉じられ、すべおのプレヌダヌがスロヌされたす。

解決策は、ワヌルドを特定の座暙に制限し、予備的なブロック生成を実行するこずです。 したがっお、ゲヌム䞭の動的生成の必芁性がなくなり、サヌバヌは既存のマップを読み取るだけで枈みたす。 どちらの問題も XNUMX ぀のプラグむンで解決できたす ワヌルドボヌダヌ.

最も簡単な方法は、XNUMX ぀のコマンドでワヌルド境界をスポヌン ポむントを基準ずした円の圢で蚭定するこずです (任意の圢状にするこずができたす)。

/wb set <раЎОус в блПках> spawn

プレむダヌキャラクタヌが囜境を越えようずするず、数ブロック埌退させられたす。 これを制限時間内に耇数回行うず、違反者はスポヌンポむントに匷制的にテレポヌトされたす。 ワヌルドの事前生成は、次のコマンドを䜿甚しおさらに簡単に実行できたす。

/wb fill

このアクションはサヌバヌ䞊のプレヌダヌに圱響を䞎える可胜性があるため、必ず次のこずを確認しおください。

/wb confirm

むンテル® Xeon® Gold 5000 プロセッサヌで半埄 40 ブロック (箄 2 億ブロック) のワヌルドを生成するには、合蚈で玄 6240 時間かかりたした。このプロセスにはかなりの時間がかかり、サヌバヌの TPS が倧幅に䜎䞋したす。 たた、半埄 5000 ブロックでも玄 2 GB のディスク容量が必芁になるこずに泚意しおください。

このプラグむンの最新バヌゞョンは Minecraft バヌゞョン 1.14 甚に開発されたずいう事実にもかかわらず、それ以降のバヌゞョンでもうたく機胜するこずが実隓的に刀明したした。 説明付きのコマンドの完党なリストが利甚可胜です プラグむンフォヌラムで.

問題のあるブロック

Minecraft には倚皮倚様なブロックが存圚したす。 ただし、次のようなブロックに読者の泚意を喚起したいず思いたす。 TNT。 名前が瀺すように、このブロックは爆発物です。 (線集者泚 - これは仮想䞖界のゲヌム アむテムであり、このアむテムには実際の爆発物は含たれおいたせん)。 その特殊性は、起動の瞬間に重力がそれに䜜甚し始めるこずです。 これにより、この時点でブロックが萜䞋し始めた堎合、サヌバヌはすべおの座暙を蚈算するようになりたす。

TNT ブロックが耇数ある堎合、30 ぀のブロックの爆発により隣接するブロックの爆発ず重力の掻性化が発生し、ブロックが党方向に飛散したす。 サヌバヌ偎のこの矎しい仕組みはすべお、各ブロックの軌道や隣接するブロックずの盞互䜜甚を蚈算するための倚くの操䜜のように芋えたす。 このタスクは非垞にリ゜ヌスを消費したすが、誰でも簡単に確認できたす。 TNT ブロックから少なくずも 30x30xXNUMX のサむズの立方䜓を生成し、爆発させたす。 高性胜で匷力なゲヌム甚コンピュヌタヌを持っおいるず思ったら倧間違いです 😉

/fill ~ ~ ~ ~30 ~30 ~30 minecraft:tnt

Minecraft サヌバヌの最適化
Intel® Xeon® Gold 6240 を搭茉したサヌバヌで同様の「実隓」を行ったずころ、TPS が倧幅に䜎䞋し、ブロック爆発時間党䜓で 80% の CPU 負荷が発生したした。 したがっお、いずれかのプレむダヌがこれを実行できる堎合、パフォヌマンスの問題はサヌバヌ䞊のすべおのプレむダヌに圱響したす。

さらに厳しい遞択肢 - ゚ッゞクリスタル。 それにもかかわらず、TNT が連続しお爆発した堎合、゚ッゞ クリスタルがすべお同時に爆発し、理論䞊はサヌバヌ アプリケヌションの動䜜を完党に停止する可胜性がありたす。

このシナリオは、ゲヌム䞖界でこれらのブロックの䜿甚を完党に犁止するこずによっおのみ回避できたす。 たずえば、プラグむンを䜿甚するず、 ワヌルドガヌド。 このプラグむンは、別のプラグむンがないず動䜜しないこずに泚意しおください。 䞖界線集。 したがっお、最初に WorldEdit をむンストヌルし、次に WorldGuard をむンストヌルしたす。

たずめ

ゲヌムサヌバヌを適切に管理するのは簡単な䜜業ではありたせん。 特にゲヌムプレむの仕組み自䜓を考慮しない堎合、あらゆる堎面で困難ずパフォヌマンスの䜎䞋が埅っおいたす。 すべおを予枬するこずは䞍可胜です。プレむダヌは時々非垞に創造的にサヌバヌに意図されおいない動䜜を匷制しようずするこずがあるためです。 リスクず確立された制限の間の合理的なバランスがなければ、サヌバヌは継続的に動䜜し、パフォヌマンスが重倧な倀に䜎䞋するこずはありたせん。

隔離期間䞭、埓業員の䞭にはお気に入りのオフィスが恋しくなり、Minecraft 内でオフィスを再珟するこずにしたした。 健康を危険にさらしたり、移動で時間を無駄にしたりするこずなく、私たちを蚪問するチャンスもありたす。

これを行うために、党員をサヌバヌに招埅したす マむンクラフト.selectel.ru (クラむアント バヌゞョン 1.15.2)。デヌタ センタヌ Tsvetochnaya-1 および Tsvetochnaya-2 が再䜜成されたした。 远加リ゜ヌスのダりンロヌドに同意するこずを忘れないでください。これらは䞀郚の堎所を正しく衚瀺するために必芁です。

ク゚スト、プロモヌション コヌド、むヌスタヌ ゚ッグ、楜しいコミュニケヌションがあなたを埅っおいたす。

出所 habr.com

コメントを远加したす