游戲服務器菜鳥之C#初探一游戲服務


      本人80后程序猿一枚,原來搞過C++/Java/C#,因為工作原因最后選擇一直從事C#開發,因為讀書時候對游戲一直比較感興趣,機緣巧合公司做一個手游的項目,我就開始游戲服務器的折騰之旅。

      游戲的構架是前端unity3d,服務端C#,數據庫用SqlService。基礎工作做完,就開始動工,因為前期考慮不周,所以暫定使用Http短鏈接進行,這也是導致后面服務器失敗的根本原因之一,下面就說說前期最基礎的構架:

      就是最基礎的構架,但是接下來由於游戲的細化,一些列的問題就出現了:

      1.賬號登陸的頂號問題如何處理,我們采用的每個用戶登錄之后生成sessionID,然后在客戶端心跳包(輪訓)請求服務器,匹配用戶ID和SessionID的匹配進行用戶時候重復登錄;

      2.在游戲戰斗過程中,會涉及服務器對客戶進行廣播數據,因為采用HTTP請求,所以就只有使用心跳包進行處理;

      3.服務器很多配置文件都采用cspbuf進行配置使用,因為擔心每次加載數據過多,所以采用的依賴緩存進行加載和處理;

      貌似所以的問題都處理好了,接下來就是測試了,開始進行小數量的測試,游戲還可以勉強的運行,但是隨后隨着游戲玩家數量的增加,服務器慢慢的支撐不住,出現CUP和內存消耗過高,導致游戲經常卡段的情況,最后經過分析,導致的原因可能如下:

      1.客戶端采用過多的輪訓服務器,導致IIS壓力過大,CUP和內存增加;

      2.配置緩存文件過多,導致服務器內存消耗;

      3.游戲過程中很多數據都直接讀取數據庫操作,導致了IO過多,所以CUP和內存消耗過大;

      4.傳輸過程中大部分數據使用正常的JSON數據沒有進過壓縮和處理,也導致傳輸通道消息資源的浪費;

      5.程序中的部分優化沒有做到;

     反正等等原因導致了第一次游戲服務器的開發,出現各種問題,現在表面解決了問題,能夠在小數量范圍運行,但是數據大就出現問題,所以就開始考慮下一個版本的重構;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM