創造建築伺服器使用手冊
FastAsyncWorldEdit
FastAsyncWorldEdit
  • README
  • 快速開始
    • 安裝
  • 功能
    • 指令總覽
    • 工具物品
  • 指令工具
    • 畫筆
    • 遮罩
    • 圖案
    • 變換
  • API
    • API 使用方式
  • 自訂化
    • 設定
    • 權限
Powered by GitBook
On this page
  • Introduction
  • Asynchronous Operation
  • Limits Settings
  • Queue Settings
  • Local Queues
  • Global Queues
  • Efficiency Improvements

Was this helpful?

  1. 自訂化

設定

Introduction

FAWE 開箱即用就能正常運作,但可以透過 Limits 和 Queue Operation 這兩個部分的設定,來微調 FAWE 以符合你的伺服器需求。請參考以下說明以及下面預設設定檔中的註解。

如果你修改了設定後,編輯操作出現問題,請先回復到預設值再進行其他微調。要重設 config.yml 檔案,可以刪除它並重新啟動伺服器,或使用 /fawe 指令重新載入 FAWE。

Asynchronous Operation

WorldEdit 本身會嘗試在記憶體中完全完成每個編輯操作後才放置方塊。WorldEdit 也會將復原(歷史)方塊存放在記憶體中,這會增加記憶體需求,且在大型編輯時,可能導致伺服器記憶體耗盡崩潰,或編輯失敗。

FAWE 的大部分速度提升來自於將每個編輯操作放在獨立的非同步執行緒中執行。它會在方塊可用時立即開始放置方塊,而不是等待整個操作完成。這讓整體編輯完成得更快。而且,由於方塊是可用時就放置,不會佔用過多記憶體。

FAWE 也可以設定將復原(歷史)方塊存放在硬碟上,搭配其他改進,讓 FAWE 能進行無限制大小的編輯,且影響極小。

Limits Settings

這些設定讓你可以控制不同使用者群組的最大 WorldEdit 方塊編輯大小。default 部分適用於沒有啟用繞過限制的非管理員使用者。更多資訊請參考 fawe.bypass 和 fawe.admin 權限。

你也可以為特定群組定義限制,並用權限節點啟用。請參考下面預設設定檔的註解說明。

Queue Settings

這部分的設定讓你能微調非同步佇列的運作,以影響記憶體使用和編輯速度。

Local Queues

FAWE 將每個編輯指令放在獨立的非同步執行緒,與主伺服器執行緒分開,並將編輯處理的方塊放入每位玩家的本地佇列。

在佇列中,方塊會依區塊(chunk)排序,這讓 FAWE 能使用更有效率的區塊優化演算法,將方塊最終放置到世界中。例如,WorldEdit 自身會對每個變更的方塊執行光照、物理和封包發送。FAWE 則利用依區塊分組的方塊佇列,使用更高效的區塊演算法放置方塊。

當編輯開始時,本地佇列會處於未完成狀態。當簡單的 //set 或 //copy 類指令將方塊加入佇列時,方塊就準備好被放置。當其他指令(例如 //smooth 和 //deform)編輯方塊時,變更的方塊會依據世界中其他方塊的位置而定,相關方塊可能會被多次變更。(通常,所有局部變更會在約 64 個區塊的方塊變更範圍內完成。)

編輯完成後,本地佇列會變為完成狀態。

Global Queues

FAWE 使用全域佇列來實際放置所有活動中本地佇列編輯的方塊。全域佇列會依插入順序優先處理,較舊的本地佇列會先放置方塊。全域佇列的方塊會在主伺服器執行緒中放置。

FAWE 總是先放置完成狀態的本地佇列方塊,且必須在完成的本地佇列清空後,才會放置未完成本地佇列的方塊。

全域佇列會連結到進行中的本地佇列。(內部實作為兩個佇列——一個存放完成的本地佇列,另一個存放未完成的本地佇列。)

Efficiency Improvements

FAWE 也嘗試提升效率,在沒有完成的佇列可用時,從未完成佇列放置方塊。

  • target-size

FAWE 利用 target-size 來調節從未完成佇列放置方塊,確保方塊有合理的穩定性,不太可能再被修改。

像 //smooth 和 //deform 這類指令,如果在執行過程中就派送方塊,可能不會順利平滑或變形(不過這些通常不會修改到接近 64 個區塊的範圍)。變更的方塊會依據世界中其他方塊的位置而定,相關方塊可能會多次被變更。在這種情況下,大約在排入 64 個區塊的方塊後,再次修改方塊的可能性會降低。這種情況不會發生在簡單操作如 //copy 和 //set,因為這些方塊不會被多次修改。

如果沒有等待完成的本地佇列等待放置,且未完成的編輯佇列排入的區塊數達到 target-size 或更多,全域佇列會開始處理可用方塊。

這設定確保像 //smooth 和 //deform 這類指令的方塊是穩定的,也有助於全域佇列持續放置可用方塊,而不會閒置。

預設的 target-size 值是 64。

如果沒有 target-size,像 /fastmode 這種大型編輯,未完成佇列通常會比 max-wait-ms 設定清空的速度還快。

降低 target-size 可能會降低 //smooth 和 //deform 這類操作的效能,因為可能會浪費時間反覆修改已放置的方塊。此外,這些指令依賴其他方塊的位置,如果 target-size 不夠大,未完成佇列的方塊被放置後可能還會被改動,最終結果可能會和完成前放置的結果不同,導致指令無法正常運作。因此,適當大的 target-size 可以避免這種問題。

增加 target-size 沒有太大幫助,因為大部分相關變更都會在少於 64 個區塊的處理時間內完成。且如果設定過大,會降低 FAWE 從極大型編輯中恢復的能力,可能導致伺服器記憶體耗盡。

  • max-wait-ms

FAWE 在放置已完成處理的編輯方塊時效率最高。但等到完成會浪費時間並佔用記憶體,因此此設定用來嘗試讓全域佇列持續派送方塊,而不是在編輯尚未完成但方塊已可放置時閒置。

當沒有完成的本地佇列方塊等待放置,且全域佇列閒置達 max-wait-ms 毫秒或以上時,全域佇列會開始放置仍在處理中的編輯方塊。

max-wait-ms 也作為區塊載入問題的逾時設定。區塊通常在不到一秒內載入完成,因此預設的 1000 毫秒可避免編輯因區塊載入錯誤而凍結。

若區塊無法及時載入,可增加此值。

PreviousAPI 使用方式Next權限

Last updated 10 days ago

Was this helpful?

免責聲明: 本文件係使用 AI 翻譯服務 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件之母語版本應視為權威資料。對於重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而產生之任何誤解或誤譯負責。

Co-op Translator