棋牌遊戲框架解析(一)

前言

這段時間有空,正好有時間總結之前的東西。

框架

最早做棋牌,cpp的框架,後來又接觸到了nodejs的,golang的框架,也看了一些網上開源的遊戲框架,記錄總結一下。

框架圖:
在這裏插入圖片描述

  • LogicManger:這個框架是支持分區的,每個 logicManager Server管理着一組gate Server 和一組 GameLogic Server,代表一個區。LogicManager會根據遊戲類型和分發策略把不同用戶分到不同的GameLogic服務器上。

  • GameLogic:遊戲邏輯處理服務器, 一個gameLogic 可以是支持一種遊戲,也可以支持多種,logic Server啓動後連接logicManager,註冊自己的信息,包括可以支持哪種遊戲等信息。

  • Gate: 是網關,直接和client連接,長連接。屏蔽後面的GameLogic,和LogicManager等服務器,保存用戶socket等信息,根據用戶狀態和消息號區分客戶端發過來的消息,分發到不同的服務器上(GameLogic和 logicManager)。

  • login: 登錄服務器,主要處理用戶登錄,可以多個,直接連center服務器。login服務器沒有具體處理邏輯,它會把用戶登錄信息轉發給center服務器,然後再把消息回傳給client服務器。收到其他消息會直接斷開client連接。

  • center: 中心服務器,主要是管理多區manger的。保存用戶基本信息,同時同步不同區用戶信息變化。LogicManager會在center服務器註冊自己的信息,包括manager管理的gate的id,ip:port 。

  • db: db數據庫服務器,連接數據庫,賦值讀寫數據庫。

功能模塊

接下來會通過細分講解每個部分,因爲每個服務器基礎功能是通用的, 所以會先講解通用基礎模塊,然後在每個服務器依次的講解。

  • 通用基礎模塊,分爲 網絡模塊,數據庫模塊
  • 服務器模塊, login,gate,logic,manager ,center,db, 緩存模塊

通用基礎模塊

網絡模塊

網絡模塊:底層用的是boost asio 網絡模塊。LSocket 類是對asio api的封裝。
在這裏插入圖片描述
在這裏插入圖片描述

關於接收到報文以後的處理流程會在消息協議的部分分析。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章