• <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>
            posts - 311, comments - 0, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

              討論了這么久我們一直都還沒有進入游戲世界服務(wù)器內(nèi)部,現(xiàn)在就讓我們來窺探一下里面的結(jié)構(gòu)吧。



              對于現(xiàn)在大多數(shù)MMORPG來說,游戲服務(wù)器要處理的基本邏輯有移動、聊天、技能、物品、任務(wù)和生物等,另外還有地圖管理與消息廣播來對其他高級功能做支撐。如縱隊、好友、公會、戰(zhàn)場和副本等,這些都是通過基本邏輯功能組合或擴展而成。

              在所有這些基礎(chǔ)邏輯中,與我們要討論的服務(wù)器結(jié)構(gòu)關(guān)系最緊密的當(dāng)屬地圖管理方式。決定了地圖的管理方式也就決定了我們的服務(wù)器結(jié)構(gòu),我們?nèi)匀幌葟淖詈唵蔚膶崿F(xiàn)方式開始說起。

              回想一下我們曾戰(zhàn)斗過無數(shù)個夜晚的暗黑破壞神,整個暗黑的世界被分為了若干個獨立的小地圖,當(dāng)我們在地圖間穿越時,一般都要經(jīng)過一個叫做傳送門的裝置。世界中有些地圖間雖然在地理上是直接相連的,但我們發(fā)現(xiàn)其游戲內(nèi)部的邏輯卻是完全隔離的。可以這樣認(rèn)為,一塊地圖就是一個獨立的數(shù)據(jù)處理單元。

              既然如此,我們就把每塊地圖都當(dāng)作是一臺獨立的服務(wù)器,他提供了在這塊地圖上游戲時的所有邏輯功能,至于內(nèi)部結(jié)構(gòu)如何劃分我們暫不理會,先把他當(dāng)作一個黑盒子吧。

              當(dāng)兩個人合作做一件事時,我們可以以對等的關(guān)系相互協(xié)商著來做,而且一般也都不會有什么問題。當(dāng)人數(shù)增加到三個時,我們對等的合作關(guān)系可能會有些復(fù)雜,因為我們每個人都同時要與另兩個人合作協(xié)商。正如俗語所說的那樣,三個和尚可能會碰到?jīng)]水喝的情況。當(dāng)人數(shù)繼續(xù)增加,情況就變得不那么簡單了,我們得需要一個管理者來對我們的工作進行分工、協(xié)調(diào)。游戲的地圖服務(wù)器之間也是這么回事。

              一般來說,我們的游戲世界不可能會只有一塊或者兩塊小地圖,那順理成章的,也就需要一個地圖管理者。先稱它為游戲世界的中心服務(wù)器吧,畢竟是管理者嘛,大家都以它為中心。

              中心服務(wù)器主要維護一張地圖ID到地圖服務(wù)器地址的映射表。當(dāng)我們要進入某張地圖時,會從中心服上取得該地圖的IP和port告訴客戶端,客戶端主動去連接,這樣進入他想要去的游戲地圖。在整個游戲過程中,客戶端始終只會與一臺地圖服務(wù)器保持連接,當(dāng)要切換地圖的時候,在獲取到新地圖的地址后,會先與當(dāng)前地圖斷開連接,再進入新的地圖,這樣保證玩家數(shù)據(jù)在服務(wù)器上只有一份。

              我們來看看結(jié)構(gòu)圖是怎樣的:

                    中心服務(wù)器
                       /         \        \
                     /            \        \
                登錄服     地圖1    地圖2   地圖n
                  \            |           /           /
                    \          |         /          /
                              客戶端

              很簡單,不是嗎。但是簡單并不表示功能上會有什么損失,簡單也更不能表示游戲不能賺錢。早期不少游戲也確實采用的就是這種簡單結(jié)構(gòu)。
            色诱久久av| 亚洲欧洲日产国码无码久久99| 久久九九久精品国产免费直播| 青青热久久国产久精品| 无遮挡粉嫩小泬久久久久久久| 91精品国产高清久久久久久91| 三级韩国一区久久二区综合 | 亚洲va久久久噜噜噜久久男同 | 久久99精品国产麻豆婷婷| 亚洲欧洲中文日韩久久AV乱码| 国内精品伊人久久久久av一坑 | 久久久久一本毛久久久| 久久中文骚妇内射| 日韩久久久久中文字幕人妻 | 久久久久女人精品毛片| 久久综合视频网| 久久综合狠狠综合久久97色| 久久精品国产精品国产精品污| 综合人妻久久一区二区精品| 亚洲欧美国产日韩综合久久| 久久久久久毛片免费看 | 久久精品国产2020| 综合久久精品色| 中文字幕无码久久人妻| 日日狠狠久久偷偷色综合0| 国产精品成人精品久久久| 国产午夜久久影院| 国产精品久久亚洲不卡动漫| 久久久一本精品99久久精品88| 亚洲国产精品无码久久一区二区| 欧美亚洲国产精品久久高清| 久久AV高潮AV无码AV| 久久久久国产精品人妻| 无码精品久久一区二区三区| 久久精品中文字幕大胸| 亚洲国产一成人久久精品| 久久人人爽人人爽人人AV| 成人国内精品久久久久一区| 国产69精品久久久久99| 欧美激情精品久久久久久久| 久久精品免费全国观看国产|