ドキュメント › 機能
Linear 形式
ワールドを Linear 形式で保存して、ディスクの使用量をおよそ半分にする。既存のワールドは、使ったところから自動で変換します。
バージョン
Linear 形式は Storia 26.2-10 以降の機能です(26.2-9-beta で先行公開)。切り替える前に、ワールドのバックアップを取ってください。
Linear 形式は、リージョンファイル 1 つ(32 × 32 チャンク)を丸ごと Zstandard で圧縮して、r.X.Z.linear という
1 つのファイルに保存する形式です(仕様と変換ツール)。
バニラの Anvil 形式(.mca)はチャンクを 1 つずつ古い zlib で圧縮し、4 KB 単位で区切るので、すき間が多くなります。
Anvil(.mca) |
Linear(.linear) |
|
|---|---|---|
| 圧縮 | チャンクごとに zlib | リージョンごとに Zstandard |
| ディスク使用量(Storia の計測) | 100% | レベル 1:55%、レベル 6:46% |
| 1 チャンクだけの読み書き | 速い | リージョン全体をメモリに読み込む |
| 他のツールとの互換性 | ほぼすべて | Linear に対応したツールだけ |
計測:オーバーワールドの 12 リージョン(46.1 MB)を変換した結果です。エンドのようにチャンクが小さい場所ほど、差が大きくなります。
使い方#
storia.yml で切り替えて、サーバーを再起動します。
region-format:
type: linear # anvil(初期値)または linear
linear:
compression-level: 1 # 1(速い)〜 22(小さい)。6 前後で大きく縮みます
flush-seconds: 5 # 変更したリージョンをディスクに書く間隔(秒)
- 既存のワールドはそのまま使えます。
.linearがまだないリージョンは、初めて使うときに.mcaから読み込み、 次の保存から.linearに書きます。.mcaは消さずに残すので、確認できたら手で消してディスクを空けてください。 - まとめて変換したいときは、変換ツール の
convert_region_files.py mca2linearを、サーバーを止めてから使います。Storia はこのツールが作ったファイルを読めますし、 Storia が書いたファイルもこのツールで読めます。 - RAM ワールド と一緒に使えます。ファイルが小さくなるので、必要な RAM も減ります。
/storia statusで、メモリ上のリージョンの数と、書き込み待ちの数を確認できます。
気をつけること#
- 書き込みはまとめて行います。 変更したリージョンは
flush-secondsごと、save-all flushのとき、停止のときに書きます。 サーバーのプロセスが突然落ちると、最後の数秒の保存が失われることがあります(Anvil でも、OS が書き込む前なら同じです)。 - 使っているリージョンはメモリに置きます。 1 リージョンあたり数 MB〜数十 MB です。60 秒使われなかったリージョンは メモリから外します。
- 読めない
.linearファイルは上書きしません。 壊れたファイルを見つけると、そのリージョンを読み込まず、 書き込みもせずに、ファイルを残します。バックアップから戻してください。 .mcaを直接開くツールやプラグイン(一部の地図作成ツールなど)は、.linearを読めません。Chunky のように サーバーの仕組みを通すプラグインは、そのまま動きます。- Storia Cluster のワーカーでは使いません(ワールドは Storia Relay が Anvil 形式で保存します)。
Anvil に戻す#
type: anvil に戻す前に、変換ツールの linear2mca で .linear を .mca に変換してください。
.linear があるのに anvil が選ばれていると、Storia は起動を止めます。残っている古い .mca で動いてしまい、
最近の変更が消えたように見えるのを防ぐためです。