メインコンテンツまでスキップ

「Minecraft」タグの記事が6件件あります

全てのタグを見る

snake

このガイドはYouHaveTrouble/minecraft-optimizationの日本語訳です。日本語訳は適当であるため、適時原文を確認することを推奨します。

本ガイドによって生じたあらゆる問題について責任を負いません。


Vanilla、Fabric、Spigot(またはPaperより下流のバージョン)をお使いの方は、server.propertiesを開き、sync-chunk-writesfalseに変更してください。このオプションはPaperとそのforkでは強制的に無効化されますが、それ以前のサーバー実装では、手動でこのオプションをオフにする必要があります。これにより、サーバーはメインスレッドからチャンクを保存し、メインtickの負荷を軽減することができます。

このガイドは、バージョン1.17のガイドです。一部の項目のみ1.15~1.16にも適用されます。

このガイドと他の情報源に基づいています(これらの情報源は、関連する場合、ガイド全体にリンクされています)。

導入

完璧な結果を得る事のできるガイドは存在しません。それぞれのサーバーには独自のニーズが存在しており、どれだけの犠牲を払うことができるのか、あるいは払うことができるかには限界があります。オプションを変更することで、サーバーのニーズを合わせて微調整することが、全てです。このガイドは、どのオプションがパフォーマンスに影響を与えているのか、何を変更しているのかを理解することを目的としています。

準備

サーバーJar

サーバーソフトウェアの選択によっては、パフォーマンスとAPIの可能性に大きな違いが現れます。現在、複数の有力なサーバーJARがありますが、様々な理由により使用を控えたほうが良いものもいくつかあります。

おすすめのサーバーJar:

Paper  - ゲームプレイやメカニックの不整合を修正しながら、パフォーマンス向上を目的とした最も人気のあるサーバーソフトウェアです。

Airplane - サーバーのパフォーマンスをさらに向上させることを目的とした Paper forkです。

Purpur - 機能とカスタマイズの自由に焦点を当てたAirplane forkです。

推奨されないサーバーJar:

Yatopia - "Paper forkの総力を結集し、最大限の不安定さとメンテナンス性を実現!" - KennyTV's list of shame これ以上何も言うことはありません。(このプロジェクトは中止されています)

Sugarcane - Yatopia 2.0

Mohist - "Mohistは悪意があり、ゲームを壊し、非常に不安定であるようにプログラムされています" - 使うべきではない理由

非同期を謳った有料サーバーjar - 99.99%の確率で詐欺です。

Bukkit/CraftBukkit/Spigot - 利用できる他のサーバーソフトウェアと比較して、パフォーマンスの点で非常に時代遅れです。

AirplaneやPurpurよりもさらに下流にある多くのforkでは、不安定さやその他の問題が発生します。より多くのパフォーマンス向上を求めるのであれば、サーバーを最適化するか、個人的なプライベートforkに時間を投資してください。

ワールドの事前生成

ワールドの事前生成は、低予算のサーバーを改善するために、最も重要なステップの1つです。共有CPUやシングルコアのノードでホストされているサーバーでは、非同期のチャンク読み込みを十分に活用できないため、この方法が最も友好です。Chunkyなどのプラグインを使うことで、ワールドを事前に生成することができます。プレイヤーが新しいチャンクを生成しないように必ずワールドの境界線を設定してください。プラグインで自動生成をする場合、設定した範囲によっては数時間かかる場合があるので注意してください。

オーバーワールド、ネザー、エンドにはそれぞれ別のワールドの境界線を設定する必要があります。ネザーのディメンションはオーバーワールドの8倍小さいので(データパックで変更されていない場合)、サイズ設定を間違えるとプレイヤーがワールドの境界線の外へと出てしまうかもしれません。

宝の地図の探索範囲のような一部の機能がラグの原因となる為、必ずバニラのワールドの境界線を設定してください。(/worldborder set [距離]

設定

ネットワーク

server.propaties

network-compression-threshold

値: 256

この値により、サーバーが圧縮を試みる前のパケットサイズの上限を設定できます。この値を高く設定すると、帯域幅を犠牲にしてCPUを節約することができ、-1に設定するとこの機能が無効になります。この値を高く設定すると、ネットワーク接続の遅いクライアントに悪影響を及ぼす可能性があります。サーバーがプロキシのネットワーク上に存在する場合や、同じコンピュータ上に存在する場合(Pingが2ms以下の場合)は、内部のネットワークの速度が通常、追加の非圧縮トラフィックを処理可能であるため、この機能を無効(-1)にすることができます。

purpur.yml

use-alternate-keepalive

値: true

Purpurのalternate keepaliveを有効にすることで,接続状態の悪いプレイヤーがタイムアウトになることが少なくなります。TCPShieldとの互換性はありません。

これを有効にすると、1秒に1回keepaliveパケットがプレイヤーに送信され、30秒以内にどれも応答されなかった場合のみタイムアウトになります。つまり、1つのパケットがどこかでドロップしたからといって、プレイヤーがキックされることはありません。

Purpur Documentation - Configuration

チャンク

spigot.yml

view-distance

値: 4

view-distanceは、プレイヤー周りのチャンクの距離です。基本的には、プレイヤーから何かが起こるまでの距離です。これには炉の精錬、作物や苗木の成長などが含まれます。この値は、server.propatiesの値を上書きし、ワールドごとに設定可能であるため、spigot.ymlで設定する必要があります。これはno-tick-view-distanceの存在を考慮して、意図的に低く設定したいオプションであるため、3~4あたりに設定します。no-tickは、プレイヤーがtickすることなく、より多くのチャンクをロードする事を可能にします。これにより、プレイヤーはパフォーマンスに影響を与えること無く、より遠くまで見ることができます。

paper.yml

no-tick-view-distance

値: 7

このオプションでは、プレイヤーが見ることのできる最大距離をチャンク単位で設定することができます。これによりview-distanceを短くしてもプレイヤーにより遠くのチャンクを表示することができます。view-distanceを超えるチャンクはチェックされませんが、ストレージから読み込まれるため、やりすぎないようにすることが重要です。基本的には10が最大値となります。今の所、チャンクはview-distanceの設定に関係なくクライアントに送信されるので、このオプションの値を高くすると、接続速度の遅いプレイヤーに問題が生じる可能性があります。

delay-chunk-unloads-by

値: 10

このオプションでは、プレイヤーがいなくなった後のチャンクがロードされ続ける時間を設定できます。これにより、プレイヤーが前後に移動しても、同じチャンクを常にロードしたりアンロードしたりしないようになります。値が高すぎると、一度に多くのチャンクがロードされてしまいます。頻繁にテレポートされてロードされるエリアでは、そのエリアを恒久的にロードすることを検討してください。常にチャンクをロードしたりアンロードしたりするよりも、サーバーの負担が軽くなります。

max-auto-save-chunks-per-tick

値: 8

ワールドセーブの増分を遅くし、タスクの時間を分散させることで、平均的なパフォーマンスを向上させることができます。20~30人以上のプレイヤーがいる場合は、この値を8よりも高く設定するとよいでしょう。増分保存が間に合わなかった場合、bukkitは自動的に残りのチャンクを一度に保存し、再度プロセスを開始します。

prevent-moving-into-unloaded-chunks

値: true

この機能を有効にすると、プレイヤーが読み込みされていないチャンクに入り込み、メインスレッドに負担をかけるような同期読み込みが発生し、ラグの発生を防ぎます。プレイヤーが読み込まれていないチャンクに遭遇する確率は、no-tick-view-distanceが低いほど高くなります。

entity-per-chunk-save-limit

値:

experience_orb: 16 arrow: 16 dragon_fireball: 3 egg: 8 ender_pearl: 8 eye_of_ender: 8 fireball: 8 small_fireball: 8 firework_rocket: 8 potion: 8 llama_spit: 3 shulker_bullet: 8 snowball: 8 spectral_arrow: 16 experience_bottle: 3 trident: 16 wither_skull: 4 area_effect_cloud: 8

この項目では、指定した種類のエンティティを保存できる数に制限を設けることができます。大量のエンてィィが保存され、それを読み込む際にサーバーがクラッシュするという問題を避けるために、少なくとも各エンティティに制限を設けるべきです。エンティティのIDはMinecraft wikiで確認できます。制限はお好みで調整してください。すべてのエンティティの推奨値は10前後です。IDで他のエンティティをこのリストに追加することもできます。この設定オプションは、プレイヤーが大規模なMobファームを作るのを防ぐためのものではありません。

seed-based-feature-search-loads-chunks

値: true

これをfalseに設定すると、treasure-maps-return-already-discoveredfalseになっている場合のパフォーマンスが向上しますが、構造物が実際にはマップ上でマークされた場所にないなど、予期しない動作が発生する可能性があります。問題がないようであれば、これを変更してください。

Mobs

bukkit.yml

spawn-limits

値:

monsters: 20 animals: 5 water-animals: 2 water-ambient: 2 water-underground-creature: 3 ambient: 1

Mobを制限する計算は、[プレイヤー数] * [制限]です。「プレイヤー数」はサーバー上の現在のプレイヤー数です。論理的には、数字が小さいほど、Mobの数は少なくなります。per-player-mob-spawnは、Mobがプレイヤー間で均等に分配されるように、これに追加の制限を加えます。これを減らすことは両刃の剣です。確かにサーバーの仕事は減りますが、ゲームモードによっては自然にスポーンするMobがゲームプレイの大きな部分を占めています。mob-spawn-rangeを適切に調整すれば、20以下にすることもできます。mob-spawn-rangeを低く設定すると、各プレイヤーの周りに多くのMobがいるようになります。Paperを使用している場合は、paper.ymlでワールドごとのMob制限を設定できます。

ticks-per

値:

monster-spawn: 10 animal-spawns: 400 water-spawns: 400 water-ambient-spawns: 400 water-underground-creature-spawns: 400 ambient-spawns: 400

このオプションは、サーバーが特定のMobをスポーンしようとする頻度(tick)を設定します。water/ambientは、通常そんなに早く殺されることはないので、1tickごとにスポーンする必要はありません。モンスターの場合、スポーン間の時間をわずかに長くしても、スポーン率に影響はありません。ほとんどの場合、このオプションのすべての値を1より高くする必要があります。この値を高くすることで、Mobのスポーンが無効になっているエリアにサーバーがうまく対応できるようになります。

Spigot.yml

mob-spawn-range

値: 2

プレイヤーの周りでMobがスポーンする範囲を(チャンク単位で)狭めることができます。サーバーのゲームモードやプレイヤー数によっては、bukkit.ymlのspawn-limitsと一緒にこの値を下げた方がいいかもしれません。この値を小さくすると、多くのモブがプレイヤーの周りにいるようになります。この値はview distanceと同じかそれ以下で、ハードデスポーン範囲/16より大きくしてはいけません。

entity-activation-range

値:

animals: 16 monsters: 24 raiders: 48 misc: 8 water: 8 villagers: 16 flying-monsters: 48

エンティティがtick(何かをする)のために、プレイヤーからどのくらいの距離が必要かを設定できます。この値を下げるとパフォーマンスが向上しますが、プレイヤーが近づかないと反応しないMobが出てきます。この値を下げすぎると、一部のトラップが壊れる可能性があります。

entity-tracking-range

値:

players: 48 animals: 48 monsters: 48 misc: 32 other: 64

これはエンティティが見えるようになるまでのブロック距離です。プレイヤーには送信されません。この値が低すぎると、プレイヤーの近くに突然Mobが現れることがあります。ほとんどの場合、この値はentity-activation-rangeよりも高く設定する必要があります。

tick-inactive-villagers

値: false

activation range外でも村人をtickするかどうかを制御できます。これにより村人は通常通り進行し、activation rangeを無視します。これを無効にすると、パフォーマンスが向上しますが、一部の状況ではプレイヤーが混乱する可能性があります。これにより鉄トラップや貿易の補充に問題が生じる可能性があります。

nerf-spawner-mobs

値: true

スポナーによってスポーンされたMobがAIを持たないようにできます。ナーフされたMobは何もしません。spawner-nerfed-mobs-should-jumppaper.ymltrueに変更することで、水の中でジャンプするようになります。

paper.yml

despawn-ranges

値:

soft: 30 hard: 56

エンティティのデスポーン範囲(ブロック単位)を調整できます。これらの値を低くすると、プレイヤーから遠くにいるMobをより早く消すことができます。softは30程度にして、hardはview-distanceより少し大きめに調整すると、チャンクが読み込まれているポイントをプレイヤーが超えたときに、Mobがすぐにデスポーンしないようになります(paper.ymldelay-chunk-unloads-byでうまくいきます)。Mobがhardから外れると、即座にデスポーンされます。softとhardの間にいるときは、ランダムな確率でデスポーンされます。hardはsoftよりも大きくする必要があります。view-distanceに応じて、(view-distance * 16) + 8で調整してください。これは、プレイヤーが訪れた後にまだアンロードされていないチャンクを部分的に考慮しています。

per-player-mob-spawns

値: true

このオプションは、プレイヤーの周りにいるMobの数をスポーンに考慮するかどうかを決定します。Mob制限全体を占めるトラップを作っているプレイヤーのせいで、Mobのスポーンが安定しないという問題を回避することができます。これにより、シングルプレイヤーのようなスポーンが可能になり、spawn-limitsを低く設定することができます。これを有効にすると、パフォーマンスにごくわずかな影響がありますが、その影響はspawn-limitsの改善によって相殺されます。

max-entity-collisions

値: 2

spigot.ymlの同名オプションを上書きします。1つのエンティティが一度に処理できる衝突の数を決定します。0を指定すると、プレイヤーを含む他のエンティティを押すことができなくなります。ほとんどの場合、2で十分です。ゲームルールのmaxEntityCrammingの値がこの設定オプションの値を超えている場合、この設定は無意味になることに注意してください。

update-pathfinding-on-block-update

値: false

これを無効にすると、経路探索の回数が減り、パフォーマンスが向上します。Mobは5tick(0.25秒)ごとにパスを更新します。

fix-climbing-bypassing-cramming-rule

値: true

これを有効にするとエンティティが登っているときにcrammingの影響を受けないように修正されます。これにより登っていても狭い場所に無茶苦茶な量のMobが積まれることがなくなります。

armor-stands-tick

値: true

ほとんどの場合、これはfalseにしておけば安全です。アーマースタンドやその動作を変更するプラグインを使用していて問題が発生した場合は、再度有効にしてください。これにより、アーマースタンドが水に押されたり、重力の影響を受けたりしなくなります。

armor-stands-do-collision-entity-lookups

値: false

ここではアーマースタンドの衝突を無効にすることができます。これは、アーマースタンドがたくさんあって、何かと衝突する必要がない場合に役立ちます。

tick-rates

値:

sensor: villager: secondarypoisensor: 80 nearestbedsensor: 80 villagerbabiessensor: 40 playersensor: 40 nearestlivingentitysensor: 40 behavior: villager: validatenearbypoi: 60 acquirepoi: 120

これは指定された行動やセンサーがどのくらいの頻度で実行されるかをtick単位で決定します。村人が道に迷うなどの問題がある場合は減らしてください。

airplane.yml

max-loads-per-projectile

値: 8

プロジェクタイルがそのライフタイム中に読み込みできるチャンクの最大量を指定します。減らすと、エンティティプロジェクタイルによるチャンクの読み込みが減りますが、トライデントやエンダーパールなどで問題が発生する可能性があります。

max-tick-freq

値: 20

このオプションはプレイヤーから最も遠い場所にあるエンティティがtickされる最も遅い時間を定義します。この値を大きくすると、視界から遠いエンティティのパフォーマンスが向上しますが、トラップが壊れたり、Mobの動作が大幅に遅くなる可能性があります。

activation-dist-mod

値: 7

Mobがtickされる際のグラデーションをコントロールします。DABはEARのようなハードカットオフではなく、グラデーションで動作します。DABは、近くのエンティティを完全にtickし、遠くのエンティティをほとんどtickしない代わりに、この計算結果に基づいてエンティティがtickされる量を減らします。これを減少させると、DABはプレイヤーの近くで起動し、DABのパフォーマンスが向上しますが、エンティティが周囲とどのように相互作用するかに影響し、トラップが壊れる可能性があります。

purpur.yml

dont-send-useless-entity-packets

値: true

このオプションを有効にすると、サーバーが空の位置変更パケットを送信するのを防ぐことで、帯域幅を節約できます(デフォルトでは、サーバーはエンティティが移動していなくても、各エンティティに対してこのパケットを送信します)。クライアント側のエンティティを使用するプラグインで問題が発生する可能性があります。

aggressive-towards-villager-when-lagging

値: false

これを有効にすると、サーバーがpurpur.ymllagging-thresholdで設定されたTPSのしきい値を下回った場合、ゾンビは村人をターゲットにしなくなります。

entities-can-use-portals

値: false

このオプションはプレイヤー以外のすべてのエンティティのポータル使用を無効にすることができます。これによりメインスレッドで処理されるワールドの変更によってエンティティがチャンクを読み込むことを防ぎます。これはエンティティがポータルを通過できなくなるという副作用があります。

villager.brain-ticks

値: 2

このオプションでは村人がどのくらいの頻度(tick)で処理するかを設定できます。3以上にすると、村人の動きが安定しなくなったり、バグったりすることが確認されています。

villager.lobotomize

値: true

ロボトミー化した村人はAIが剥奪され、たまにしか取引を補充しません。これを有効にすると、目的地までの経路探索ができない村人をロボトミー化します。解放するとロボトミー化が解除されます。

その他

spigot.yml

merge-radius

値:

item: 3.5 exp: 4.0

マージするアイテムとexpオーブの間の距離を決定し、地面に落ちるアイテムの量が減少します。これを高く設定しすぎると、アイテムやexpオーブが一緒にマージされると消えてしまうような錯覚につながります。この値を大きくしすぎると、一部のファームが破壊され、アイテムがブロックを介してテレポートできるようになります。アイテムが壁を通ってマージされないようにするためのチェックは行われません。exp は作成時にのみマージされます。

hopper-transfer

値: 8

ホッパーがアイテムが移動するのを待機する時間(tick)。これを増やすと、サーバー上にホッパーが多い場合はパフォーマンスが向上しますが、設定値が大きすぎると、ホッパーベースのクロックやアイテムソートシステムが壊れる可能性があります。

hopper-check

値: 8

ホッパーが上のアイテムや上のインベントリにあるアイテムをチェックするまでの時間(tick)です。この値を大きくすると、サーバーに多くのホッパーがある場合はパフォーマンスが向上しますが、ホッパーベースのクロックや水流に依存したアイテムソートシステムが壊れる可能性があります。

Paper.yml

alt-item-despawn-rate

値:

enabled: true items: COBBLESTONE: 300 NETHERRACK: 300 SAND: 300 RED_SAND: 300 GRAVEL: 300 DIRT: 300 GRASS: 300 PUMPKIN: 300 MELON_SLICE: 300 KELP: 300 BAMBOO: 300 SUGAR_CANE: 300 TWISTING_VINES: 300 WEEPING_VINES: 300 OAK_LEAVES: 300 SPRUCE_LEAVES: 300 BIRCH_LEAVES: 300 JUNGLE_LEAVES: 300 ACACIA_LEAVES: 300 DARK_OAK_LEAVES: 300 CACTUS: 300 DIORITE: 300 GRANITE: 300 ANDESITE: 300 SCAFFOLDING: 600

このリストでは、特定の落ちているアイテムのデスポーンにかかる時間(tick)を、デフォルトよりも速くまたは遅く設定できます。このオプションは、アイテム消去系のプラグインの代わりにmerge-radiusと一緒に使用すると、パフォーマンスが向上します。

use-faster-eigencraft-redstone

値: true

これを有効にすると、レッドストーンが冗長なブロック更新を減らす、より高速な代替バージョンに置き換えられ、サーバーの作業量が減少します。これを有効にすると、ゲームプレイの不整合を引き起こすことなく、パフォーマンスを大幅に向上させることができます。これを有効にすると、craftbukkitからのいくつかのレッドストーンの不整合も修正されます。

disable-move-event

値: false

InventoryMoveItemEventは、そのイベントをアクティブにリッスンしているプラグインがない限り、発火しません。つまり、そのようなプラグインがあり、そのプラグインがこのイベントに対応できなくても気にしない場合にのみ、これをtrueに設定する必要があります。保護プラグインなど、このイベントをリッスンするプラグインを使用したい場合は、trueに設定しないでください。

mob-spawner-tick-rate

値: 2

このオプションでは、スポナーがtickされる頻度を設定できます。高い値を設定すると、多くのスポナーがある場合にラグが少なくなりますが、(スポナーの遅延と比較して)高すぎる値を設定すると、Mobのスポーン率が低下します。

optimize-explosions

値: true

これをtrueに設定すると、バニラの爆発アルゴリズムがより高速なものに置き換えられますが、爆発ダメージを計算する際に若干の不正確さが生じます。これは通常は目立ちません。

enable-treasure-maps

値: false

宝の地図を生成するのは非常にコストがかかり、探し出そうとする構造物が事前に生成されたワールドの外にある場合、サーバーがハングアップする可能性があります。事前にワールドを生成し、バニラのワールドボーダーを設定している場合にのみ、この機能を有効にすることができます。

treasure-maps-return-already-discovered

値: true

このオプションのデフォルト値は、新しく生成されたマップに未探索の構造物を探させるもので、通常は事前に生成された地形の外にあります。このオプションを rueに設定すると、マップは以前に発見された構造物につながるようになります。このオプションをtrueに変更しないと、新しい宝の地図を生成するときにサーバーがハングアップしたり、クラッシュしたりすることがあります。

grass-spread-tick-rate

値: 4

サーバーが草や菌糸を広げようとするまでの時間(tick)です。これにより、広い範囲の土が草や菌糸に変わるまでに少し時間がかかるようになります。拡散率の低下を目立たせずに減らしたい場合は、4程度に設定するとうまくいきます。

container-update-tick-rate

値: 1

コンテナの更新間隔をtickで表した時間。これを増やす事でコンテナの更新で問題が発生した場合には助けになるかもしれませんが(滅多にありません)、プレイヤーがインベントリを操作したときにデシンクが発生しやすくなります。

non-player-arrow-despawn-rate

値: 20

Mobが放った矢が何かに当たった後に消えるまでの時間をtickで指定します。プレイヤーは矢を拾うことができないので、20(1秒)のように設定するとよいでしょう。

creative-arrow-despawn-rate

値: 20

クリエイティブモードでプレイヤーが放った矢が何かに当たった後に消えるまでの時間をtickで指定します。プレイヤーは矢を拾うことができないので、20(1秒)のように設定するとよいでしょう。

Purpur.yml

disable-treasure-searching

値: true

イルカが宝の地図のような構造検索をするのを防ぎます。

teleport-if-outside-border

値: true

プレイヤーがワールドボーダーの外にいた場合、ワールドスポーンにテレポートできるようにします。バニラのワールド・ボーダーは迂回可能で、プレイヤーに与えるダメージを軽減することができるので便利です。

ヘルパー

ani-xray

値: true

これを有効にすると、X-rayから鉱石を隠すことができます。この機能の詳細な設定については、Stonar96の推奨設定を参照してください。この機能を有効にすると、実際にはパフォーマンスが低下しますが、他のX線対策プラグインよりもはるかに効率的です。ほとんどの場合、パフォーマンスへの影響はごくわずかです。

remove-corrupt-tile-entities

値: true

タイルの実体に関するエラーがコンソールに押し寄せている場合、これをtrueに変更します。これにより、エラーの原因となっているタイルの実体が無視されずに削除されます。タイルエンティティに関する警告が頻繁に出る場合は、なぜ壊れているのかを調査してください。これは根本的な問題を解決するものではありません。

nether-ceiling-void-damage-height

値: 127

このオプションが0より大きい場合、設定されたyレベル以上のプレイヤーは、あたかも奈落にいるかのようなダメージを受けます。これによりプレイヤーはネザーの屋根を使えなくなります。バニラのネザーの高さは128ブロックなので、127に設定した方がいいでしょう。何らかの方法でネザーの高さを変更した場合は、[ネザーの高さ] - 1に設定してください。

Java スタートアップフラグ

バージョン1.17のバニラMinecraftとMinecraftサーバーソフトウェアは、Java 16以上が必要です。Oracleはライセンスを変更しており、もはやOracleからJavaを入手する説得力のある理由はありません。推奨されるベンダーはAmazon CorrettoAdoptiumです。OpenJ9やGraalVMなどの代替JVMも動作しますが、これらはPaper媒体ではサポートされておらず、問題が発生することが知られているため、現在は推奨されていません。

ガベージコレクタは、大きなガベージコレクタタスクによって引き起こされるラグスパイクを減らすように設定することができます。Minecraft サーバー用に最適化されたスタートアップフラグはSOGで見つけることができます。この推奨事項は他のjvmでは機能しないことに注意してください。

Linux CPU スケーリング

ホストによっては、「PowerSave」モードで動作するマシンを使用している場合があります。この場合、クロック速度が25%近く低下し、シングルスレッドのパフォーマンスが大幅に低下します。これは、CPUスケーリングをパフォーマンスモードに設定するよりも、はるかに悪いパフォーマンスにつながる可能性があります。VPSでは利用できない場合がありますのでご注意ください。

Debian / Ubuntuの場合

cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor CPUのパフォーマンスプロファイルを表示します。

echo "performance" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governorプロファイルを performance に設定します。

"Too good to be true "なプラグイン

地面に落ちてるアイテムを消すプラグイン

merge radiusやalt-item-despawn-rateで代用できますし、正直、基本的なサーバー設定よりも設定範囲が狭いので、絶対に不要です。アイテムを削除しないよりも、アイテムをスキャンして削除する方がリソースを消費する傾向があります。

モブスタッカープラグイン

使うことを正当化するのはとても難しいです。自然に発生したエンティティをスタックすると、サーバーが常により多くのmobを発生させようとするため、スタックしない場合よりもラグが発生します。唯一の「許容できる」使用例は、大量のスポナーがあるサーバーのスポナー用です。

プラグインによる他のプラグインの有効化/無効化

実行時にプラグインを有効にしたり無効にしたりするものは非常に危険です。そのようなプラグインを読み込むと、トラッキングデータに関する致命的なエラーが発生する可能性があり、プラグインを無効にすると、依存関係がなくなることによるエラーが発生する可能性があります。/reloadコマンドにも全く同じ問題があります。

何が遅れているのか?- 性能測定

mspt

Paperには/msptコマンドがあり、サーバーが最近のtickを計算するのにかかった時間を知ることができます。最初の値と2番目の値が50より小さければ、おめでとうございます。あなたのサーバーは遅れていません。3つ目の値が50を超えていれば、少なくとも1回は時間のかかったtickがあったことを意味します。これは全く普通のことで、時々起こることですので、慌てないでください。

timings

サーバーが遅延しているときに何が起こっているかを確認するには、Timingsが最適です。timingsは、どのタスクに最も時間がかかっているかを正確に把握するためのツールです。これは最も基本的なトラブルシューティングツールであり、ラグに関してヘルプを求めたら、ほとんどの場合にtimingsを求められるでしょう。

サーバーのtimingsを取得するには、/timings pasteコマンドを実行し、表示されたリンクをクリックするだけです。このリンクを他の人と共有すれば、助けてもらうことができます。また、何をしているのかわからないと、誤読してしまいがちです。読み方については、Aikar氏による詳細なビデオチュートリアルがあります。

Spark

Sparkは、サーバーのCPUやメモリの使用状況をプロファイリングすることができるプラグインです。使い方はwikiに載っています。また、ラグスパイクの原因を見つける方法については、こちらのガイドがあります。

snake

SpigotはCraftBukkitのforkであり、追加の最適化とより多くの機能があります。CraftBukkitJARのドロップイン代替品であるため、インストールは簡単です。

既にCraftBukkitが正常にインストールされている場合、Spigotのインストールは通常、サーバーJARを新しいものと交換するのと同じくらい簡単です。

また、Minecraftサーバの為の大規模な脆弱性が悪意のある、または古いSpigotを避けるために、インターネット上で見つけたSpigotのjarファイルをダウンロードしてはいけません。それは古いかもしれませんし、時にはトロイの木馬の可能性もあります。

目次

  • 前提条件

  • インストール

  • Windows

  • Linux

  • Screen

  • Mac OS X

  • Multicraft

  • インストール後

  • プラグイン

前提条件

  1. Java 8 以降 Windows, Ubuntu, CentOS, OS X]
  2. BuildTools wikiページに従ってコンパイルされたサーバーjar(BuildToolsを実行した後、同じディレクトリにSpigot / CraftBukkitサーバーのjarがあります)
  3. Spigot / CraftBukkitサーバーのjarをサーバー専用の新しいディレクトリにコピーする(BuildToolsと同じフォルダーではありません!)

インストール

Windows

  1. 次のテキストをテキストドキュメントに貼り付けます。spigot.jarと同じディレクトリにstart.batとして保存します。

    @echo off java -Xms#G -Xmx#G -XX:+ UseG1GC -jar spigot.jar nogui pause

(#は割り当てられたサーバーメモリ(GB)です)

  1. パッチファイルをダブルクリックします。

Linux

  1. サーバーディレクトリに新しい起動スクリプト(start.sh)を作成して、JARを起動します。

    #!/bin/sh

    java -Xms#G -Xmx#G -XX:+UseG1GC -jar spigot.jar nogui

(#は割り当てられたサーバーメモリ(GB)です)

  1. ターミナルで開き、ディレクトリで以下を実行します。

    chmod +x start.sh

  2. 起動スクリプトを実行します。

    ./start.sh

Screen

screenを使用してサーバーを起動し、/restartコマンドもサポートする場合は、次のスクリプト(start.sh)を使用できます。

#!/bin/sh

screen -d -m -S "screen名" java [スタートアップフラグ] -jar spigot.jar nogui

/restartを機能させるには、-d -mオプションが必要であることに注意してください。

Mac OS X

  1. 新しい起動スクリプト(start.command)を作成して、サーバーディレクトリでJARを起動します。

    #!/bin/sh

    cd "$( dirname "$0" )" java -Xms#G -Xmx#G -XX:+UseG1GC -jar spigot.jar nogui

(#は割り当てられたサーバーメモリ(GB)です)

  1. ターミナルを開いて入力します:(Enterキーを押さないでください!)

    chmod a+x

  2. 起動スクリプトファイルをターミナルウィンドウにドラッグします。(chmod a+xと起動スクリプトの間に必ずスペースを入れてください!)

  3. 起動スクリプトをダブルクリックします。

Multicraft

Minecraftホストの設定に応じて、Multicraftを介してSpigotを有効にする2つの方法があります。

  • 既にJARファイル選択メニューにSpigotのオプションがある場合、それを選択して保存時にサーバーを再起動するだけです。ただし、ホストが最新のSpigotビルドに対応していない場合、これは推奨されない場合があります。
  • カスタムサーバーJAR(FTP)をアップロードするアクセス権がある場合は、Spigot JARをダウンロードし、パネルのインデックスにあるJARファイル入力ボックスからファイル名を入力します。一部ホストでは、JARの名前を特定の名前(Custom.jarなど)に変更してから、ドロップダウンメニューで選択する必要がある場合があります。
  • ルートを設定しているパーソナルサーバーの場合は、spigot.jar.confをデーモンのjarディレクトリに配置し、管理パネルを使用してjarを更新します。これで、jarがクライアントのjar選択になります。

インストール後

Spigot.jarが最初に実行された後、フォルダーと構成ファイルが作成されます。ご利用の環境でサーバーが正しく機能するようにするには、これらの構成ファイルを編集する必要があります。 これらのファイルの詳細な手順には、次の場所からアクセスできます。

サーバーが正しく機能していない場合は、ポート転送が行われていることと、手順に厳密に従っていることを確認してください。問題が発生した場合は、Spigotフォーラムでヘルプスレッドを作成するか、DiscordまたはIRCでチャットしてください。

WindowsやMac OS Xのカーネルは効率が悪いため(オーバーヘッドが大きい、リソースの割当が悪いなど)、これらのプラットフォームでのホスティングは、本格的な/専用のサーバーとしてはお勧めできません。

プラグイン

あなたのBukkitプラグインの作者がCraftBukkit/Minecraftの内部コードを使用していない限り、ほぼ全ての場合において、あなたのBukkitプラグインはSpigotで動作するでしょう。

私達のリソースセクションBukkitDevを確認すると、管理の手助けから全く新しいゲームモードの追加まで、様々なプラグインを見つけることができます。もしここで見つからないものがあれば、SpigotのService & RecruitmentフォーラムBukkitのPlugin Requestsフォーラムでプラグインの作成を依頼することもできます。リクエストの設定方法はガイドラインに沿って行ってください。

JARファイルをサーバーディレクトリ内のpluginsフォルダにドロップし、サーバーを再起動することでプラグインを追加することができます。動作しない場合やエラーが発生した場合は、Spigotフォーラムでヘルプを求めてください。


本投稿は公式wikiの日本語訳です。翻訳精度及び内容については一切保証しません。

元ページ:https://www.spigotmc.org/wiki/spigot-installation/

snake

SpigotMCとは?

2012年に設立されたSpigotMC.orgは、世界最大規模のMinecraftサーバソフトウェアプロジェクトを支えるコミュニティです。Minecraftサーバーに携わる全ての人が助けやサポートを求めたり、自身の作品を共有、紹介して、お互いに繋がる場所を提供しています。サポートを提供するためのウェブ掲示板、チャットルーム、wiki、コンテンツ製作者のためのプロジェクトホスティングを提供しており、あなたもこの300,000人以上のメンバーからなる広範で成長中のコミュニティに参加することができます。

どのようなソフトウェアを提供していますか?

SpigotMCチームは、Minecraftサーバーを運営または開発する際に使用するいくつかの主要なソフトウェアのサポートとメンテナンスに努めています。私達のソフトウェアは全て完全に無料のオープンソースであり、私達のStashまたはGitHubから入手できます。私達は自発的な寄付によって支えられており、いつか皆さんにも貢献していただきたいと思っています。

Spigot

名前からも分かるように、Spigotは私達のソフトウェアの中で最もオリジナルで、最も広く使われているソフトウェアです。SpigotはCraftBukkitをベースとした改良型のMinecraftサーバーで、既存のプラグインとの互換性を保ちつつ、パフォーマンスの最適化や設定オプション、機能追加をし、バニラMinecraftのゲームメカニクスにも対応しています。

BungeeCordのサポート、作物の成長率、空腹感、エンティティのトラッキング、マップシード、多くのサーバー内部の設定値、プラグインの問題検出のために強化されたWatchdog、Taimingプロファイリング、エンティティアクティベーションやホッパーなどの重い要素のさらなる設定、チャンク書き換えのロード・アンロード・セーブ、開発者向けの便利なAPIの追加など、Spigotだけで150以上の改善が行われています。

どうしても気になる方は、パッチの一覧をこちらで確認できますが、Spigotの全てを知るには実際に使ってみるのが一番です。

BungeeCord

BungeeCordは完全にオリジナルなSpigotMCの作品です。プロキシとして機能し、様々なMinecraftサーバーをリンクして、コマンド、ポータル、インベントリメニュー、またはあなた自身が作成したユニークなものなど、好きな方法でそれらの間をテレポートすることができます。BungeeCordを使えば、1つのサーバーに限定する必要はなく、世界中の異なるゲームモードの何十、何百ものサーバーを組み合わせることができます。BungeeCordは、40,000人以上のプレイヤーのスケーラビリティが証明されているトップのMinecraftネットワークの全てに対応しており、サーバーリソースを最大限に活用することができます。また、開発者がネットワーク全体で機能するチャットやパーティーなどのプラグインを書くために使える完全なプラグインAPIを備えています。

CraftBukkit

2014年第3四半期にBukkit.orgプロジェクトが停止した際に、SpigotMCチームが引き継いで、豊かな資産を持つこの重要なソフトウェアの継続的なサポートとアップデートを提供しました。CraftBukkitは、Bukkitプラグインを実行できるようにしたバニラMinecraftサーバーの修正版です。このプロジェクトの主な目的は、プラグインのサポートを覗いて、可能な限りバニラに近いサーバーを作ることです。CraftBukkitは、いくつかの便利な設定機能や、非同期チャンクロードなどの最適化を保持しており、いくつかの重要なバニラバグやエクスプロイトも修正しています。BuildTools経由でSpigotをインストールすると、SpigotよりもCraftbukkitを使いたい場合に備えて、CraftBukkitのjarファイルも生成されます(使う理由がないことを願っていますが)。

Bukkit

CraftBukkitに加えて、開発者がサーバープラグインを作るためのAPIであるBukkitも管理しています。長年に渡り、私達は多くの新機能を追加し、Minecraftの新しいバージョンをサポートするために変更を加えてきましたが、プラグインチュートリアルのような古いBukkitドキュメントの多くは、これから始める開発者にとって今でも非常に重要です。APIの使用に関する詳しい情報は、Spigot wikiセクションにもあります。

まとめ

SpigotMC.orgと私達のソフトウェアについて少しはご理解頂けたでしょうか。もし、サポートが必要な場合は、適切なセクションで質問してください。私達の多くのメンバーが喜んでサポートします。

パンフレット/インフォグラフィックス

以下のパンフレットは、MINECON 2015のブース用に制作したものです。数値は少し古くなっていますが(今は全ての数値が大きくなっています!)、SpigotとBungeeCordの優れた参考資料となっています。


本投稿は公式wikiの日本語訳です。翻訳精度及び内容については一切保証しません。

元ページ:https://www.spigotmc.org/wiki/about-spigot/

snake

10割メモであり、あまり事細かに説明する目的で書いていません。

サーバーソフトウェアは1.6.x頃からのものしか記述していません。また記述されていないものもあります。

Vanilla

Mojangが提供する公式のサーバーソフトウェア

ダウンロード

CraftBukkit

2014年まで最も主流だったサーバーソフトウェア

現在はSpigotMCチームによって維持されているが、新しい機能の追加などは行われていない。バニラの重大なバグや脆弱性の修正を中心に行っている。

公式ウェブサイト

ソースコード Browse Spigot / CraftBukkit - SpigotMC Stashhub.spigotmc.org

Spigot

現時点で最も大きいコミュニティであり、一番使われているサーバーソフトウェア

CraftBukkitに基づいて修正、追加の設定などを提供している。CraftBukkitのパフォーマンスを改善し、カスタマイズ性を追加したサーバーソフトウェア バニラの動作を完全に再現し、安定してマルチプレイでできるようにする事及び完全に全ての設定をできるようにすることを目的としている。

公式ウェブサイト

ソースコード

Paper

Spigotに更に追加パッチを適用したサーバーソフトウェア

バニラやSpigotのサーバーパフォーマンスを改善することを目的としている。

過去にPaperSpigot、PaperClipという名称でしたが、名称が変わり現在はPaperです。間違えないであげて下さい。

公式ウェブサイト

ソースコード

TacoSpigot

PaperSpigotのforkで更なるパッチを適用したサーバーソフトウェア

PaperSpigotでパフォーマンスが改善されているが、それよりも更なるパフォーマンスを追い求めている。

公式ページ

ソースコード

Akarin

かつてTorchとして知られていたサーバーソフトウェア

Paperのforkであり、可能な限り多くのゲームメカニズムを設定可能にする/サーバーの安全性と安定性を高める/マルチスレッドに対応させることを目標としている。

公式ウェブサイト

ソースコード

Torch

現在はAkarinになった。TorchSpigotなんて呼ばれ方もしていた気がする。

基本的な目標などはAkarinと同じだったと記憶している。

ソースコード

HOSE

Spigotをベースに作られたマルチスレッド対応サーバーソフトウェア

ソースコード

Sponge Vanilla

権利関係の問題が発生しないように完全にオープンな開発をすることを目的としているサーバーソフトウェア

過去にDMCAでBukkitが使えなくなるとか色々問題発生したときに作られたプロジェクトで

公式ウェブサイト

ソースコード

Sponge Forge

Minecraft ForgeにクロスバージョンAPIが存在しないことを解消するために作られたサーバーソフトウェア

SpongeAPIで作られたサーバープラグインとMinecraft ForgeのMODをサーバーで共存させることができる。

公式ウェブサイト

ソースコード

Cleanstone

Minecraftで作成されたコードを利用することなく一から完全に適切に作ることを目標としたサーバーソフトウェア

1つのワールドに対して複数のサーバーを利用することで負荷をそれらに分散することができる。また、組み込みでマルチバージョンをサポートしている。

ソースコード

Glowstone

Mojangコードに依存せず、完全にオープンソースで独自に開発されたサーバーソフトウェア

CraftBukkitやその他のサーバーよりもパフォーマンスが良い(らしい)

Bukkit/Spigot/Paper APIとの互換性が保証されているため、Bukkit/Spigot/Paperプラグインが使用でき、SpongeプラグインもBukkit2Spongeを使用しロードさせることが可能。

公式ウェブサイト

ソースコード

Cuberite

C++で記述された高速なサーバーソフトウェア

MCServerという名前で2010年に開発が開始され、その後オープンソースになり名称が変更されている。

Minecraftの機能の全てを再現することを目的として開発されており、Luaを利用してプラグインを作ることが可能

公式ウェブサイト

ソースコード

Kettle

Contigo、Thermos、Cauldron、MCPC+から派生したサーバーソフトウェア

ForgeとPaperのビルドに基づいて依存しているため、CraftBukkit/Spigotベースのプラグイン及びForgeベースのmodを共存させることができる。

ソースコード

Atom

Minecraft 1.12.2バージョンのMinecraftForge及びCraftBukkitに基づいて作られているサーバーソフトウェア

Bukkitプラグイン及びMinecraftForgeModの安定したサポート及び、可能な限りの高パフォーマンスを目標としている。

ソースコード

CatServer

オープンソース無料でForge/Bukkit/Spigotとの互換性を意識したサーバーソフトウェア

ソースコード

Lava

最適化と多くのmodとの互換性を目標とするサーバーソフトウェア

ソースコード

Magma

Cauldronの派生であり、MinecraftForge及びPaperをベースとしたサーバーソフトウェア

MinecraftForgeMod及びCraftbukkit/Spigot/Paperプラグインとの互換性を目標としている。

公式ウェブサイト

ソースコード

Uranium

KCauldronのforkであり、KCauldronの不具合の修正と新機能の追加を目的としたサーバーソフトウェア

本とペンの問題の修正、PING/MOTDパッチの適用、新しいAPIバージョンの適用、Title/Actionbarの対応などが含まれている。

公式ウェブサイト

ソースコード

Mohist

Thermos/Cauldron/MCPC+からの派生、Paper/Spigot/Bukkit APIの実装を行っているサーバーソフトウェア

全てのmod、Paper/Spigot/Bukkitプラグインとの互換性及び複数バージョンとの互換性を目標としている。

公式ウェブサイト

ソースコード

Thermos

Cauldron/MCPCの派生、MinecraftForgeにSpigot/Bukkit APIを実装することを目標としたサーバーソフトウェア

KCauldronからforkし、最適化/Spigotパッチの適用/グリッチの修正を行った。

公式ウェブサイト

ソースコード

MCPC/MCPC+/Cauldron

サイトなどが消失していて情報追うのが面倒くさかったので記憶の範疇で書きます。

MCPCが作られてから開発が止まり、派生のMCPC+が生まれ、そこから更に派生してCauldronができた。

記憶が正しければ、CauldronはBukkitAPIのサポートをしていた気がします。そのため、Modとプラグインの共存が可能です。

snake

End distribution of exe and distribute with python file

Thanks to all those who wrote the review.

As mentioned in the review, my distributed exe was diagnosed by some security software as a possible virus.

So I decided to delete the exe and distribute it as a python file.

If you use this, you need Python 2.7 or Python 3. Then install the Python library Quarry. Ask questions or ask on GitHub. Support as much as possible.