• <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中文字幕| 伊人久久精品无码av一区| 亚洲午夜久久影院| 中文字幕无码久久精品青草| 无码人妻少妇久久中文字幕蜜桃| 国产精品美女久久久久av爽 | 国产一区二区精品久久凹凸 | av无码久久久久不卡免费网站| 国内精品免费久久影院| 亚洲精品蜜桃久久久久久| 久久se精品一区精品二区国产| 亚洲AV无码久久精品狠狠爱浪潮| 久久精品免费大片国产大片| 日产精品99久久久久久| 亚洲午夜福利精品久久| 亚洲国产精品热久久| 久久亚洲AV成人无码国产 | 久久99精品久久只有精品| 亚洲午夜久久久| 久久国产精品免费一区二区三区| 日韩精品久久无码中文字幕| 久久婷婷五月综合国产尤物app| 91亚洲国产成人久久精品| 国内精品久久久久| 国产精品一区二区久久不卡| 无码人妻精品一区二区三区久久久| 亚洲精品国产综合久久一线| 亚洲伊人久久综合影院| 亚洲Av无码国产情品久久| 久久精品国产亚洲精品| 99久久国产亚洲高清观看2024 | 久久精品中文字幕有码| 国产免费福利体检区久久 | 东方aⅴ免费观看久久av| 97视频久久久| 亚洲国产精品无码久久一线| 精品国际久久久久999波多野|