效能優化

提升伺服器 TPS,減少延遲,打造流暢的遊戲體驗

為什麼需要效能優化?

當伺服器的 TPS(Ticks Per Second)低於 20 時,玩家會感受到明顯的延遲。透過正確的設定,可以在不犧牲太多遊戲體驗的情況下大幅提升效能!

了解伺服器效能

TPS 是什麼?

TPS(Ticks Per Second)代表伺服器每秒處理的遊戲刻數:

TPS狀態玩家感受
20✅ 完美流暢無延遲
18-19⚠️ 輕微掉幀幾乎無感
15-17⚠️ 中等延遲輕微卡頓
10-14❌ 嚴重延遲明顯延遲
<10❌ 極度延遲幾乎無法遊玩

查看 TPS

/tps          (Paper/Spigot)
/spark tps    (使用 Spark 插件)

常見效能問題來源

效能消耗排名(通常情況):

1. 🏷️ 實體(Entity)     ████████████████████  40%
   - 怪物、動物、掉落物、船、礦車等

2. 🧩 紅石 / 漏斗        ██████████████        28%
   - 紅石機器、大量漏斗

3. 🌍 區塊載入           ████████████          24%
   - 玩家移動時載入新區塊

4. 🔌 插件               ████                   8%
   - 效能差的插件

使用 Spark 分析

Spark 是最好用的效能分析插件,可以找出導致延遲的原因。

安裝 Spark

下載 Spark 並放入 plugins 資料夾。

開始分析

當伺服器卡頓時,執行:

/spark profiler start

約 30 分鐘後:

/spark profiler stop

查看報告

Spark 會生成一個網址,開啟後可以看到:

  • 什麼東西佔用最多 CPU
  • 哪些插件效能最差
  • 實體數量統計

報告

Paper 效能設定

Paper 提供許多效能優化選項,位於 config/paper-world-defaults.yml

實體優化

entities:
  spawning:
    # 減少怪物生成數量(預設為 70)
    monster-spawn-limit: 50
 
    # 減少動物生成數量(預設為 10)
    creature-spawn-limit: 8
 
    # 減少水生生物
    water-animal-spawn-limit: 3
    water-ambient-spawn-limit: 10
 
    # 減少環境生物(蝙蝠等)
    ambient-spawn-limit: 1
 
  behavior:
    # 停用不必要的 AI(可能影響遊戲體驗)
    disable-chest-cat-detection: true
 
    # 村民優化
    tick-inactive-villagers: false
 
  tracking-range-y:
    enabled: true

區塊優化

chunks:
  # 減少實體啟用範圍(預設 32)
  entity-per-chunk-save-limit:
    experience_orb: 16
    arrow: 8
    ender_pearl: 8
 
  # 自動儲存間隔(tick)
  auto-save-interval: 6000

漏斗優化

hopper:
  # 禁用漏斗移動事件(大幅提升效能)
  disable-move-event: true
 
  # 漏斗檢測間隔(tick)
  cooldown-when-full: true
注意

disable-move-event: true 可能會導致部分保護插件的漏斗保護失效。

Spigot 效能設定

編輯 spigot.yml

world-settings:
  default:
    # 怪物合併範圍(合併後只計算一個實體)
    merge-radius:
      exp: 6.0      # 經驗球
      item: 4.0     # 掉落物
 
    # 怪物生成範圍(較低 = 較少怪物)
    mob-spawn-range: 6
 
    # 實體啟用範圍(方塊)
    entity-activation-range:
      animals: 16      # 動物
      monsters: 24     # 怪物
      raiders: 48      # 掠奪者
      misc: 8          # 其他
      water: 8         # 水生
      villagers: 16    # 村民
      flying-monsters: 32  # 飛行怪物
 
    # 村民工作站檢測間隔
    entity-tracking-range:
      players: 48
      animals: 48
      monsters: 48
      misc: 32
      other: 64
 
    # 每 tick 最大生成數量
    ticks-per:
      animal-spawns: 400
      monster-spawns: 1
      autosave: 6000

Bukkit 效能設定

編輯 bukkit.yml

spawn-limits:
  monsters: 50      # 預設 70
  animals: 8        # 預設 10
  water-animals: 3  # 預設 5
  water-ambient: 10 # 預設 20
  ambient: 1        # 預設 15
 
chunk-gc:
  period-in-ticks: 600
 
ticks-per:
  animal-spawns: 400
  monster-spawns: 1
  autosave: 6000

實體清理

使用插件定期清理實體可以有效降低負載。

ClearLagg

ClearLagg 可以定期清理掉落物和實體。

# plugins/ClearLagg/config.yml
auto-removal:
  enabled: true
  interval: 300    # 每 300 秒(5 分鐘)清理一次
 
  broadcast:
    enabled: true
    message: "&c[系統] 將在 60 秒後清理掉落物..."
 
  remove:
    items: true      # 清理掉落物
    primed-tnt: true # 清理 TNT
    falling-blocks: false

CMI 清理功能

如果使用 CMI,可以使用內建的清理功能:

/cmi clear

或設定自動清理排程。

視距優化

視距(View Distance)對效能影響很大。

# server.properties
view-distance=8        # 預設 10,建議 6-8
 
# spigot.yml(可以分世界設定)
world-settings:
  default:
    view-distance: 8
  world_nether:
    view-distance: 6
  world_the_end:
    view-distance: 6

模擬距離

模擬距離控制區塊內實體的運算範圍:

# server.properties
simulation-distance=6   # 預設 10,建議 4-6

預生成世界

新區塊的生成非常消耗效能。預先生成世界可以避免這個問題。

使用 Chunky

Chunky 可以預生成區塊。

# 預生成半徑 5000 方塊
/chunky radius 5000

# 開始生成
/chunky start

# 暫停生成
/chunky pause

預生成過程中伺服器可能會卡頓,建議在沒有玩家時進行。

效能優化檢查清單

項目狀態影響程度
☐ 安裝 Spark 分析⭐⭐⭐⭐⭐
☐ 調整生怪數量限制⭐⭐⭐⭐⭐
☐ 設定實體啟用範圍⭐⭐⭐⭐
☐ 優化漏斗設定⭐⭐⭐⭐
☐ 調整視距⭐⭐⭐⭐
☐ 設定掉落物合併⭐⭐⭐
☐ 預生成世界⭐⭐⭐
☐ 定期清理實體⭐⭐⭐
平衡效能與體驗

效能優化可能會影響遊戲體驗(例如怪物變少、視距變短)。請根據實際情況找到適合您伺服器的平衡點。

最後更新於

目錄

在 GitHub 上編輯