チャンクの事前生成

プレイヤーが来る前に、すべての CPU コアを使って地形を作っておく。再起動しても続きから。

新しい地形の生成は、Minecraft サーバーの処理の中で一番重い処理です。プレイヤーが探索すると、サーバーはその場でチャンクを 生成しなければならず、プレイヤーは待たされます。事前生成はこれを前もって済ませておくので、探索中は生成済みのチャンクを 読み込むだけになります。

使い方#

/storia pregen start <半径> [ワールド] [x z]
  • 半径:ブロック 単位。中心から −半径 〜 +半径 の正方形を生成します。
  • ワールド:ワールド名。省略するとメインのワールド(最初に読み込まれたもの。通常は world)。
  • x z:中心のブロック座標。省略するとワールドのスポーン地点。
/storia pregen start 5000                 スポーンの周り 5000 ブロック
/storia pregen start 2000 world 8000 0    x=8000 z=0 の周り
/storia pregen status                     進み具合、チャンク/秒、残り時間
/storia pregen stop                       止める(進み具合は保存)
/storia pregen resume                     続きから(再起動後も可)

チャンクは中心から外側へ渦巻き状に生成するので、スポーンに近いところから先にできあがります。

速い理由#

Folia は、リージョンのティックスレッドに余裕を残すため、初期設定ではチャンク生成に CPU コアの 4 分の 1 ほどしか使いません。 /storia pregen の実行中、Storia はこれを コア 1 つを残してすべて に増やし(pregen.worker-threads: -1)、すべてのスレッドが 休まず働けるだけのチャンクを待機させます(pregen.max-in-flight)。終わったり止めたりすると、元に戻します。

3,721 チャンク(半径 480)、6 コア 時間 チャンク/秒
Folia の初期設定(生成スレッド 1 本) 3分21秒 18.5
Storia /storia pregen(生成スレッド 5 本) 40秒 94

地形生成そのものも Storia では速くなっています(パフォーマンスと調整 を参照)。さらに 地形生成の分担 を使えば、ほかのマシンに手伝ってもらえます。

進み具合と再起動#

実行中の進み具合は、サーバーフォルダの storia-pregen.yml に保存されます。サーバーが止まったり落ちたりしても、起動し直してから /storia pregen resume を実行すれば続きから再開できます。生成済みのチャンクはすぐに飛ばされます。

コツ#

  • 事前生成は、サーバーを公開する 前 か、人が少ない時間に。実行中は CPU のほとんどを使います。
  • 同じ大きさの ワールドボーダー を設定すれば、プレイヤーは事前生成した範囲の外に出ません。
  • 半径 5,000 ブロックで約 39 万チャンク、10,000 ブロックで約 156 万チャンクです。ディスクの空き(RAM ワールド を使っているなら RAM も)を 確認してください。生成したチャンクは、ごく大まかに 1 つあたり 5〜10 KB です。
  • 普段のプレイ中(事前生成以外)も CPU に余裕があるなら、config/paper-global.yml の chunk-system.worker-threads を増やせます。