• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            OldJiang.com

            浩毛的博客

            OldJiang.com
            posts - 14, comments - 81, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            游戲服務器架構設計中的一些思考

            Posted on 2010-04-22 16:16 浩毛 閱讀(5600) 評論(6)  編輯 收藏 引用 所屬分類: 服務器開發
             

            1、 游戲世界由很多個游戲對象組成(游戲角色、物品、NPC、技能等);

             

            2、 一個游戲對象的有效數據主要存放在客戶端、游戲服務器和持久性數據庫中;

             

            3、 游戲對象的處理可劃分為與位置有關的和與位置無關的,如公會處理、物品處理等主要行為可以看作是與位置無關的處理,而NPCAI)、戰斗、移動這類的主要行為可以看成是與位置有關的。

             

            4、 從客戶端的角度來看,游戲行為可分為四類動作:

            a)         來自服務器端的動作,如另外一個玩家跳起來。

            b)        本地動作。僅僅發生在本地客戶端的動作,不需要與服務器端或其他客戶端通訊。

            c)         先執行后驗證的可撤銷的動作。客戶端先執行,再提交服務器端驗證,驗證不成功通知客戶端將執行的動作撤銷。比如玩家控制的游戲角色執行移動處理。

            d)        嚴格服務器端驗證的動作。客戶端執行動作前必須經過服務器端驗證后才能執行。如交易行為、攻擊其他玩家/NPC

             

            5、 客戶端和服務器,服務器進程之間的相互的通信從邏輯上看就是就是向RemoteObject 發起的遠程過程調用(RPC),RPC主要有兩種類型:

            a)         通知(Notify)。只通知對方,而不關心和需要對方返回結果。

            b)        請求(Request)。向對方發起請求,對方處理請求后返回結果,發起請求和返回結果這個過程可以是同步或異步。游戲服務器中絕大部分RPC請求都是異步的。

             

            6、 響應延遲主要是由于網絡帶寬和服務器處理效率引起的。應盡可能的通過一些技巧來隱藏和減少玩家的響應延遲。但不是所有的最新消息都能立刻發送出去(或接收處理到),因此,要在服務器端采用優先隊列來減少重要消息的響應時間。延遲也會由客戶端產生,如收到消息后的對消息的處理速度。

             

             

            7、 服務器負載,除了升級硬件設備外,可以通過一些方式來提高服務器負載。

             

            a)         保證足夠的網絡帶寬。

            b)        分布式運算,合理的集群式架構。

            c)         游戲策劃從游戲內容上避免設計高并發,高消耗的游戲行為。

             

             

             

            8、 從服務器的可伸縮性,穩定性和高效率方面來考慮,要試著避免所有事情都在一個地方處理,盡量讓系統分布式運行,但是過多的劃分功能到不同的進程/機器上運行,又會帶來數據的大量同步的問題。因此可以將游戲對象的處理主要劃分為與位置無關和有關兩種。像公會,玩家信息,物品信息,組隊,拍賣等等這類與位置無關的但是占用CPU資源較少的處理可以盡可能的放在一個進程中,避免進程間對象同步,而像NPC,尋路,AOI運算,戰斗處理等與位置有關的,處理過程中特別關心對象坐標位置的、運算量特別大的,但是進程間對象同步較少的,都可以單獨劃分成多個進程。

             

            每類進程服務的功能盡量單一。負責路由的就盡量只負責網絡包轉發,而不再承擔其他繁重的任務,負責游戲處理的就盡量讓網絡包流向簡單。

            Feedback

            # re: 游戲服務器架構設計中的一些思考  回復  更多評論   

            2010-04-22 17:49 by expter
            不錯,學習以下。

            # re: 游戲服務器架構設計中的一些思考  回復  更多評論   

            2010-04-22 23:49 by Sunshine Alike
            期待更多內容~~ 嘿嘿

            # re: 游戲服務器架構設計中的一些思考  回復  更多評論   

            2010-04-23 13:10 by 羅萊家紡
            馬薩馬上到那時

            # re: 游戲服務器架構設計中的一些思考  回復  更多評論   

            2010-04-23 17:20 by billow
            期待下文。。

            # re: 游戲服務器架構設計中的一些思考  回復  更多評論   

            2010-04-23 17:45 by k9982874
            大規模應用服務器(不只包含游戲服務器)是否成功主要看架構師對問題的解構能力。
            問題是什么?
            問題的邊界在哪里?
            功能粒度劃分多細?
            解決這些問題都需要經驗。

            # re: 游戲服務器架構設計中的一些思考  回復  更多評論   

            2010-04-24 09:14 by 99書城官方網站
            交換機按時到那時
            OldJiang.com
            久久综合九色综合精品| 天堂久久天堂AV色综合| 99久久成人18免费网站| 亚洲国产成人久久精品99 | 久久国产成人午夜aⅴ影院 | 99久久精品影院老鸭窝| 91久久成人免费| 亚洲AV日韩精品久久久久| yellow中文字幕久久网| 久久亚洲私人国产精品| 91久久成人免费| 久久久一本精品99久久精品88| 国产成人精品久久一区二区三区av | 一本久久a久久精品亚洲| 久久久久国产一级毛片高清版| 奇米影视7777久久精品人人爽| 国产成人99久久亚洲综合精品| 久久久亚洲欧洲日产国码二区| 日韩中文久久| 久久99精品国产麻豆婷婷| 91精品国产乱码久久久久久| 亚洲精品无码久久不卡| 精品久久久无码中文字幕| 国产精品久久午夜夜伦鲁鲁| 精品国产乱码久久久久久人妻 | 国产精品对白刺激久久久| 久久精品青青草原伊人| 久久国产欧美日韩精品免费| 久久久久99精品成人片三人毛片 | 久久精品国产亚洲av瑜伽| 久久综合久久久| 免费国产99久久久香蕉| 久久香蕉国产线看观看99| 久久久亚洲欧洲日产国码aⅴ | 一本一本久久A久久综合精品 | 国产精品青草久久久久婷婷| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 国产69精品久久久久观看软件| 亚洲国产成人精品无码久久久久久综合 | 蜜臀久久99精品久久久久久小说| 国产激情久久久久久熟女老人|