日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

游戏服务器体系结构

發布時間:2025/7/14 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 游戏服务器体系结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文描述了一個我所設計的游戲服務器體系結構,其目的是實現游戲服務器的動態負載平衡,將對象從繁忙的服務器轉移到相對空閑的服務器中.設計并沒有經過具體的測試與驗證,僅僅是將自己目前的一些想法記錄下來.隨著新構思的出現,可能會有所變化.

以下是服務器的邏輯視圖,其中忽略了管理和監控模塊

--------------------------------------------------------
|邏輯服務|碰撞服務|AOI服務|dateserver|AI|尋路|交易服務|
--------------------------------------------------------
??? /\????? /\??????? /\????? /\????? /\? /\???? /\
??? ||????? ||??????? ||????? ||????? ||? ||???? ||
??? \/????? \/??????? \/????? \/????? \/? \/???? \/
---------------------------------------------------------
????????????????? 消息轉發層
---------------------------------------------------------
???????????????????????? /\
???????????????????????? ||
???????????????????????? \/
?????????????????????? ------
?????????????????????? |gate|
?????????????????????? ------
???????????????????????? /\
???????????????????????? ||
???????????????????????? \/
????????????????????? --------
????????????????????? |client|
????????????????????? --------

具體實現中消息轉發層可作為單獨的一組服務運行,也可以作為單獨的服務器
進程中的單獨一層.

目前在我的設計方案中,將其作為進程中的一個服務層實現.
--------------
|? 應用層??? |
-----------
|數據轉發層| |
-----------
|? 網絡層??? |
--------------

各層說明

應用層: 具體應用,例如游戲邏輯,AI,等.

數據轉發層:處理消息的路由,將消息投遞到正確的套接口發送隊列中.

網絡層:收發數據.同時支持TCP,UDP等協議.

當接收消息時,無須通過第二層,從網絡層直接將接收到的完整消息投遞到

應用層中.

發送消息時,從應用層將消息傳進數據轉發層,并且指定消息通知方式(例如通

過TCP將消息傳遞到某一臺服務器,還是通過udp方式將消息廣播出去),由轉發層將消息投遞到正確的套接口中.

基本消息流如下:

1)客戶端發起操作

2)AOI服務,AOI處理的主要是對象的位置信息,以及各對象所關注的其它對象.

以下舉例說明幾種處理:

對于行走,AOI計算出能觀察到此玩家的所有對象然后將這些信息一起打包,轉到3.

對于攻擊行為,AOI計算出此攻擊將影響的對象和可以觀察到此次攻擊的對象,然后將信息打包,轉發到3.

對于僅僅影響自己屬性的消息,例如喝血,如果有對象關注你,例如組隊.則將關注你對象打包,轉發到4.

3)碰撞和校驗,根據地圖信息,校驗操作的合法性,并進一步計算操作所影響對的象.例如對于行走,在沒有詳細地圖信息的AOI中,無法知道玩家之間是否隔了一堵墻,在碰撞和校驗中,將把墻另一面的所有對象從可觀察對象中去除.當通過校驗后,對于行走消息,將玩家的新坐標通知給所有可以觀察到的對象,并更新AOI在的玩家坐標.如果是攻擊動作,則把所有信息打包,并送往4.

4)邏輯處理.將處理結果通知關注的對象.

對于跨服數據的處理

服務器的設計實現了動態負載平衡,和無縫大地圖,以使得在一臺服務器上的對象,可以觀察到并影響另一臺服務器上對象的變化.以下說明跨服攻擊,

假設A,與B分別處理兩臺不同的邏輯服務器SA,SB上.A向B發動進攻,并且已經通過了校驗.當B進入A可觀察范圍內的時候,SB會獲得一份A的基本數據的副本,對于這份副本在SB上是只讀的.SB計算出此次攻擊對A的影響,例如血減少多少,然后將對A的數據更改要求發送到SA.SA實際修改A的數據,并將更新廣播出去,所有關注A的服務器都會處理這個更新信息,并做出合適的處理.

對于玩家間的物品交易,買賣,贈送等操作,都將交由交易服務器處理,以實現跨服的交易.

以上僅僅是概要說明,一些詳細的設計將會在后續的文章中討論.

轉載于:https://www.cnblogs.com/steven_oyj/archive/2010/05/29/1747044.html

總結

以上是生活随笔為你收集整理的游戏服务器体系结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。