1. 程式人生 > >H5鬥地主×××開發淺談(一)

H5鬥地主×××開發淺談(一)

日誌服務器 登錄 serve server lds 因此 的人 意義 運營

h5鬥地主遊戲開發
Q1446595067 官網:h5.haozibbs.com
去年從傳統軟件公司辭職,下定決心轉互聯網,由於對遊戲的熱愛,去了一家遊戲公司,待了將近10個月,參與開發了一款動作卡牌手遊,遊戲最終也上線了。最近抽空寫寫過去對遊戲後端的一些感想吧。最近又去另外一家遊戲公司,參與開發一款MMO手遊。準備開始從動作卡牌手遊談到MMO手遊,也算是對遊戲開發的一些感悟。
動作卡牌遊戲,相對而言,時延性要求沒有那麽高,所以架構沒有那麽復雜,不過也是值得學習的。本文重點介紹卡牌遊戲的架構。
整個後端架構分成5個主要模塊,後面新增2個模塊,主要用於跨服對戰。

整個遊戲的架構如上圖所示。
每個區服對應這樣一組進程:

loginserver、dbserver、gameserver、worldserver,gmserver,然後matchserver和pvpserver用於跨服系統。
各個進程間通信使用socket,通信協議采用protobuf,對消息包進行序列化和反序列化。賬號數據以及打點日誌信息存放在mysql,角色數據存放在redis中。這邊這樣設計的原因是,角色數據要求時延性高,並且是經常寫入,因此采用redis可以提高吞吐量,而賬號數據以及日誌信息是基本不變動的,而且采用mysql基本滿足需求,並且穩定性比較高,還方便運營後臺維護。這邊可以優化的地方是可以把日誌單獨拎出來,做成一個日誌服務器。
下面簡單介紹下各個模塊功能,後續會繼續分析這樣設計的意義,以及實現的功能。
loginserver:登錄服務器,主要有二種,第一種是中心登錄服,所有的客戶端連接這個服務器獲取服務器列表信息,第二種是普通登錄服,用於選擇區服之後的登錄驗證。
gameserver:邏輯服務器,管理遊戲的基本邏輯,包括各個基本系統。
worldserver:世界服務器,管理遊戲的一些數據,包括門派數據,競技場,世界boss等數據。
dbserver:數據庫服務器,主要管理mysql,包括登錄驗證以及日誌打點入庫。
gmserver: GM服務器,一般只有一個(可做成多節點),主要用於運營後臺的管理,包括郵件的發送,道具發
送等等功能。
matchserver:一般只有一個(可做成多節點),主要用於跨服系統的匹配,以及監控pvpserver服務器。
pvpserver:用於管理跨服戰場,和gameserver采用同樣的代碼,只是初始化不一樣。
這個動作卡牌遊戲的架構基本上是這樣,主要是單服的人數不會太高,所以這樣的架構基本上能滿足實際需求。
這個遊戲單區服最高在線人數一般不會超過5000,所以這樣的設計完全合理。如果是MMO遊戲,架構上將會有很大
的不同。後面將會對一些比較重要的地方如登錄流程、網絡底層、戰鬥系統、跨服系統等進行重點分析,並且給出
一些優化方案。

H5鬥地主×××開發淺談(一)