遊戲伺服器體繫結構

來源:互聯網
上載者:User

本文描述了一個我所設計的遊戲伺服器體繫結構,其目的是實現遊戲伺服器的動態Server Load Balancer,將對象從繁忙的伺服器轉移到相對閒置伺服器中.設計並沒有經過具體的測試與驗證,僅僅是將自己目前的一些想法記錄下來.隨著新構思的出現,可能會有所變化.

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

--------------------------------------------------------
|邏輯服務|碰撞服務|AOI服務|dateserver|AI|尋路|交易服務|
--------------------------------------------------------
    //      //        //      //      //  //     //
    ||      ||        ||      ||      ||  ||     ||
    //      //        //      //      //  //     //
---------------------------------------------------------
                  訊息轉寄層
---------------------------------------------------------
                         //
                         ||
                         //
                       ------
                       |gate|
                       ------
                         //
                         ||
                         //
                      --------
                      |client|
                      --------

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

目前在我的設計方案中,將其作為進程中的一個服務層實現.
--------------
|  應用程式層    |
-----------
|資料轉寄層| |
-----------
|  網路層    |
--------------

各層說明

應用程式層: 具體應用,例如遊戲邏輯,AI,等.

資料轉寄層:處理訊息的路由,將訊息投遞到正確的套介面發送隊列中.

網路層:收發資料.同時支援TCP,UDP等協議.

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

應用程式層中.

發送訊息時,從應用程式層將訊息傳進資料轉寄層,並且指定訊息通知方式(例如通

過TCP將訊息傳遞到某一台伺服器,還是通過udp方式將訊息廣播出去),由轉寄層將訊息投遞到正確的套介面中.

基本訊息流程如下:

1)用戶端發起操作

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

以下舉例說明幾種處理:

對於行走,AOI計算出能觀察到此玩家的所有對象然後將這些資訊一起打包,轉到3.

對於攻擊行為,AOI計算出此攻擊將影響的對象和可以觀察到此次攻擊的對象,然後將資訊打包,轉寄到3.

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

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

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

對於跨服資料的處理

伺服器的設計實現了動態Server Load Balancer,和無縫大地圖,以使得在一台伺服器上的對象,可以觀察到並影響另一台伺服器上對象的變化.以下說明跨服攻擊,

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

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.