運作方式
棋盤格怎麼把世界分到多個核心。
棋盤格
世界切成 64 格見方的格子,塗成四種顏色。同色的格子至少相隔 64 格,彼此碰不到,所以可以同時運算;四種顏色依序跑完,就是一個 tick。
Folia 的區域在玩家靠近時會合併,合併後只有一條執行緒負責。棋盤格不看玩家遠近,所以主城人再多也拆得開。拖動下面的滑桿可以比較兩種方式。
這是示意圖,用來說明分組方式,格子大小與合併距離都有簡化。
插件為什麼不用改
插件永遠在主執行緒上跑。工作執行緒碰到共用資料或要呼叫插件時會全部暫停,由主執行緒做完再繼續,所以插件看到的仍然是單執行緒。
村民、Boss、騎乘中的生物,以及外掛自己定義的實體,會自動留在主執行緒,不交給工作執行緒。完整清單在插件相容。
自動選擇比較快的方式
每個階段每 256 次會試跑一次平行與單執行緒兩種方式,選比較快的那個。插件監聽大量事件時,平行反而要一直暫停,核心會自動退回單執行緒,不會比原本慢。