《我的世界》新mod將允許伺服器支持上千名玩家
《我的世界》目前情況下,僅在單個CPU上單線程處理有關伺服器的所有信息。這意味著不論你有多強的電腦,一旦遊戲中有數十甚至數百名玩家時,遊戲的運行效率性能就一定會大打折扣,伺服器的刷新率會降低到無法正常遊玩的程度。目前,《我的世界》同一世界的最多玩家世界紀錄數為 2622 名玩家,但是在這種情況下這些玩家什麽事情都做不了。
但是不用擔心,一個由程序員 Jackson Roberts 開發的 mod 可能會改變這一切!
在 2020 年時他想要一個隔離期間能做的項目,因此決定創建一個超大的《我的世界》伺服器,並且可以沒有延遲地容納數千名玩家。《我的世界》目前的單線程伺服器軟體顯然無法勝任這項工作,因此 Roberts 和合作者 Harvey298 決定它們將研究如何構建自己的伺服器軟體,並將該項目稱為 Mammoth(猛獁象)。
Roberts 解釋說,第一次嘗試是一個概念證明系統,它將《我的世界》中的世界分成 1024 個塊,每個塊都由自己的伺服器運行:邊界區域將會被同步,伺服器在彼此之間傳輸移動對象。但是,它有太多問題:玩家無法“跨”伺服器看到彼此,一台伺服器宕機導致該部分世界無法訪問,而且如果許多玩家聚集在一個小區域內,該方案根本無法解決任何問題。
在這次經歷之後,Roberts 為 Mammoth 設定了一系列目標,包括:玩家必須能夠看到彼此,即使在不同的伺服器進程中;當玩家放置方塊或更新標誌時,所有其他玩家都應該立即看到;如果一台伺服器宕機,整個世界應該仍然可以訪問;如果需要,可以隨意添加或刪除伺服器以適應玩家數量。
他提出的想法是一個集中的後端數據庫,當《我的世界》伺服器出現和消失時,它可以在它們之間進行通信,並不斷傳遞有關例如玩家移動等信息。在嘗試了一些現有軟體(例如 redis 和 SpatialOS)後,Roberts 發現它不適合他的目的,因此決定構建自己的軟體 WorldQL,他將其描述為“為多人遊戲構建的實時、可編寫腳本的空間數據庫,它可以替代傳統遊戲伺服器或用於平衡現有遊戲伺服器。”
所以,將於 9 月 8 日發布的新版 Mammoth mod 將建立在 World QL 上,它存儲“所有永久的世界變化並在伺服器之間傳遞實時玩家信息(例如位置)”。基本上,每個伺服器都在不斷地向 World QL 報告其數據,然後根據這些報告向其他伺服器提問:如果它知道一個玩家在另一個玩家附近,並且第一個玩家的伺服器說他們已經移動了,WorldQL 會詢問另一個正在做什麽。
演示視頻:
“在 Mammoth 中,沒有一個 Minecraft 伺服器負責存儲世界。來自基礎種子的所有塊更改都集中存儲在 WorldQL 中。這些更改按塊坐標和時間進行索引,因此《我的世界》伺服器只能請求它需要的更新。”
Jackson Roberts 的帖子更詳細的介紹了該 mod 其它的功能,例如“實時塊同步”、消息代理以及在 World QL 腳本環境中創建的 Minecraft 迷你遊戲的未來潛力。更多詳情可以查看 Mammoth 項目的 github 頁面。
Github頁面:點擊這裡