1. 程式人生 > >商業化遊戲伺服器引擎自定義框架設計思路

商業化遊戲伺服器引擎自定義框架設計思路

Matchvs作為國內首款落地的商業化遊戲伺服器引擎,本文將以它的GameServer”的自定義服務端框架作為例子進行分享。

與skynet等遊戲伺服器開源框架不同,作為一款商業版的遊戲伺服器引擎,由於Matchvs本質上是將一整套聯網功能整合為一個高可用的SDK,開發者只需根據遊戲邏輯,通過SDK提供的API介面來調整所需要的引數即可。但封裝的API也帶來了拓展性不足的侷限性。為此,Matchvs除了提供SDK基礎聯網服務外,還提供一套名為“GameServer”的自定義服務端框架,以滿足更為複雜的聯網需求。

GameServer架構

GameServer和引擎的高互動性,以及遊戲低延遲的要求,決定了GS和引擎最好物理上接近。Matchvs遊戲雲提供的GS託管服務實際是一個PaaS服務(提供了應用程式的開發、執行環境),作為一個服務眾多CP的PaaS平臺,在Matchvs引擎引入GS需要解決如下幾個關鍵問題:

(1)不同語言、框架依賴、執行環境如何滿足?

(2)多個CP的GS如何管控,資源如何限制和分配?

(3)自動化的縮、擴容、監控、高可用如何保證?

針對上述問題,我們將CP開發的GS容器化,通過基礎映象來解決框架、依賴等環境差異的問題;將GS統一納入K8S叢集,使用namespace隔離不同CP資源排程、分配;GS被抽象成service形式存在,使用K8S的對應擴容、高可用機制。

GameServer SDK框架與介面

gameServer 與Matchvs server之間使用基於長連線、二進位制協議的高效能RPC元件通訊,能很好地支援 Matchvs 全雙工低延遲通訊、驗證授權等功能要求。 gameServer framework 主要提供了以下功能: 1. 接收並處理房間匹配、對戰資料等訊息; 2. 為gameServer SDK提供主動推送資料的能力; 3. 在獨立部署方案下,向Matchvs註冊gameServer。 gameServer SDK提供面向開發者的房間、玩家、對戰資料等API介面。開發者能夠以此獲取並控制每一個房間和玩家的狀態,從而實現更豐富的遊戲功能。 自定義服務端邏輯。開發者基於gameServer SDK實現定製化的功能,例如控制遊戲程序、仲裁、資料持久化等等。

gameServer 與Matchvs server之間使用基於長連線、二進位制協議的高效能RPC元件通訊,能很好地支援 Matchvs 全雙工低延遲通訊、驗證授權等功能要求。  

gameServer framework 主要提供了以下功能:1. 接收並處理房間匹配、對戰資料等訊息;2. 為gameServer SDK提供主動推送資料的能力;3. 在獨立部署方案下,向Matchvs註冊gameServer。gameServer SDK提供面向開發者的房間、玩家、對戰資料等API介面。開發者能夠以此獲取並控制每一個房間和玩家的狀態,從而實現更豐富的遊戲功能。自定義服務端邏輯。開發者基於gameServer SDK實現定製化的功能,例如控制遊戲程序、仲裁、資料持久化等等。