雨之核心RainCore
Minecraft 伺服器核心,開發中閱讀介紹

200 人擠在主城
依然 19.9 TPS

雨之核心 RainCore 把世界切成棋盤格,分到多個 CPU 核心同時運算。現有插件不用改,單服撐住 100 到 200 人。

基於 Leaf插件不用改1.21.11 到 26.3

26.3 實測同一台機器、同一組設定
RainCore
19.912 ms
Leaf
19.928 ms
Folia
19.052 ms
RainCore 每 tick 平均耗時
12 ms
比 Leaf 少 57%

相距 32 格。三個核心都撐得住,差在每個 tick 要花多少時間。Folia 的毫秒是單一區域的值。

19.9200 人,相距 256 格同場景 Leaf 13.0,Folia 7.2
19.7300 人,相距 256 格同場景 Folia 3.9
19.537 個外掛同時載入,200 人同一套外掛,棋盤格關閉時 14.4
運作方式

把世界切成棋盤格,四種顏色輪流運算

Folia 的區域在玩家靠近時會合併,最後只剩一條執行緒負責主城。棋盤格不看玩家遠近,人再多也拆得開。

  1. 1世界切成 64 格見方的格子,塗成四種顏色。
  2. 2同色的格子至少相隔 64 格,彼此碰不到,可以同時運算。
  3. 3四種顏色依序跑完就是一個 tick,插件仍然在主執行緒上。
看互動示意圖
1234
7 條工作執行緒分擔同一種顏色
為什麼選雨之核心

多核心的效能,單執行緒的相容性

大型伺服器通常要在效能和插件之間二選一。雨之核心把世界運算拆開,插件仍然留在主執行緒。

每個 tick 花多久

200 人擠在主城,每 tick 平均耗時

RainCore12 ms
Leaf28 ms
Folia52 ms
紅線是 50 ms 上限,超過就會掉 TPS。Folia 是單一區域的值。
相容性

插件不用改

插件永遠在主執行緒上跑。工作執行緒碰到插件或共用資料時會全部暫停,等主執行緒做完再繼續。

版本

1.21.11 到 26.3

每個 Minecraft 版本一個 jar,同版本的世界直接沿用。

1.21.1126.1.226.226.3
自動調整

每 256 次比一次,選快的方式

每個階段定期試跑平行與單執行緒兩種方式。插件監聽大量事件時平行反而要一直暫停,這時核心會自動退回單執行緒,不會比原本慢。

看它怎麼撐住 200 人

實測數據列出每個場景的 TPS 和每 tick 耗時,運作方式用互動示意圖說明棋盤格怎麼把世界拆開。