青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 311, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

Mangos有13個(gè)工程。

使用了4個(gè)外部工具庫,分別是:

  1. 跨平臺(tái)的網(wǎng)絡(luò)通訊框架The ADAPTIVE Communication Environment (ACE)
  2. 壓縮庫zlib
  3. Socket通信庫 C++ Sockets Library (使用在realmd工程中,和使用在Mangosd工程中的RASocket,負(fù)責(zé)處理Remote Administration。其他地方?jīng)]有使用到這個(gè)C++ Sockets Library )。發(fā)現(xiàn)在C++ Sockets Library的TcpSocket::Open中存在一個(gè)問題,在n = connect(s, ad, ad);語句執(zhí)行后,如果n=-1,C++ Sockets Library會(huì)檢測是否ERR為WSAEWOULDBLOCK,否則表示成功,但在動(dòng)態(tài)庫中使用TcpSocket的時(shí)候,我發(fā)現(xiàn)n = connect(s, ad, ad);語句執(zhí)行后,n=-1,ERR會(huì)為0,這個(gè)時(shí)候連接也是成功了,但TcpSocket::Open會(huì)當(dāng)做不成功處理。我發(fā)現(xiàn)這個(gè)問題,但沒有時(shí)間去探究原因,也許并不是一個(gè)問題。
  4. C++的并行編程模板庫Threading Building Blocks (tbb 和 tbbmalloc)

Mangos的實(shí)現(xiàn)分為:登錄服務(wù)器(realmd)和世界服務(wù)器(mangosd+game)。realmd和mangos共用了Mangos公共庫(shared)。

工程shared

提供了通用功能,包括了數(shù)據(jù)庫的封裝類,實(shí)現(xiàn)了對MySql的訪問,同樣,我們可以編寫派生類來支持其他的數(shù)據(jù)庫。

工程script

提供了腳本接口,并實(shí)現(xiàn)了簡單的幾個(gè)腳本,封裝為DLL,提供給game使用,具體可參考:MaNGOS腳本接口

通過使用不同的腳本DLL來替換Mangos中的AI實(shí)現(xiàn),可以讓game具有更強(qiáng)的AI。ScriptDev2 就是一個(gè)這樣的庫。ScriptDev2 is a replacement for the Script Library that comes with MaNGOS( http://www.getmangos.com ) written in C++ and is compatible with Windows and Linux. It provides scripts for NPCs, Boss events, and Items currently. Once ScriptDev2 is compiled it is automatically run by MaNGOS on server startup.

image

工程mangosd

mangos是世界服務(wù)器的管理器,負(fù)責(zé)初始化工作和啟動(dòng)世界服務(wù)器各層的線程,這些工作主要是由類Master來實(shí)現(xiàn)。具體是:

  1. 使用三個(gè)數(shù)據(jù)庫對象WorldDatabase和CharacterDatabase和loginDatabase,初始化三大數(shù)據(jù)庫:World Database和Character Database和login Database,并為每個(gè)數(shù)據(jù)庫的訪問都啟動(dòng)一個(gè)DB delay threads。具體的數(shù)據(jù)庫操作功能都是由Mangos公共庫shared來提供。
  2. 調(diào)用sWorld.SetInitialWorldSettings,對World進(jìn)行初始化,包括加載所有的游戲數(shù)據(jù)和初始化各種更新定時(shí)器和郵件定時(shí)器,還有些其他的初始化工作。類World的成員函數(shù)SetInitialWorldSettings調(diào)用成員函數(shù)LoadConfigSettings解析mangosd.conf,解析后內(nèi)容放入uint32 m_configs[CONFIG_VALUE_COUNT]中。
    1. 加載的游戲數(shù)據(jù)有:
      1. DBC數(shù)據(jù)
      2. Objects數(shù)據(jù)
      3. Spells數(shù)據(jù)
      4. Pooling數(shù)據(jù)
      5. Game Event數(shù)據(jù)
      6. loot數(shù)據(jù)
      7. 技能數(shù)據(jù)
      8. 所有其他的游戲數(shù)據(jù),包括Waypoints和Trainers等等等。
      9. 腳本數(shù)據(jù)
    2. 初始化的更新定時(shí)器有:
      1. WUPDATE_OBJECTS
      2. WUPDATE_SESSIONS
      3. WUPDATE_AUCTIONS
      4. WUPDATE_WEATHERS
      5. WUPDATE_UPTIME
      6. WUPDATE_CORPSES
      7. WUPDATE_EVENTS
    3. 其他的初始化工作有:
      1. 初始化MapManager,啟動(dòng)Map System
      2. 初始化Battlegrounds,啟動(dòng)BattleGround System
      3. 初始化DailyQuestResetTime
      4. 初始化sGameEventMgr,Starting Game Event system
  3. 類Master還實(shí)現(xiàn)了mangos server的退出管理
  4. 類Master啟動(dòng)WorldRunnable,開始游戲邏輯。Heartbeat for the World,由Master創(chuàng)建,并設(shè)置線程為最高優(yōu)先級(jí)。
  5. 類Master啟動(dòng)CliRunnable:Command Line Interface handling thread,由Master創(chuàng)建。CliRunnable運(yùn)行時(shí)候會(huì)生成一個(gè)WorldDatabase線程,在接收到輸入后會(huì)調(diào)用sWorld.QueueCliCommand把Cmd放入到World::cliCmdQueue中。
  6. 類Master啟動(dòng)RARunnable:Remote Administration,由Master創(chuàng)建
  7. 如果配置要求,類Master還會(huì)啟動(dòng)一個(gè)freeze catcher thread
  8. 類Master啟動(dòng)2個(gè)網(wǎng)絡(luò)線程ReactorRunnable(可配置數(shù)目)

mangosd的線程總共有(1+3+1+1+1+2 +1 =10)10個(gè)線程。

  1. 主線程Master
  2. 2個(gè)網(wǎng)絡(luò)線程ReactorRunnable(可配置數(shù)目)(網(wǎng)絡(luò)層)
  3. 一個(gè)World線程(邏輯層)
  4. 三個(gè)DB線程(數(shù)據(jù)層)
  5. 一個(gè)CLI線程(輸入層),運(yùn)行時(shí)候會(huì)生成一個(gè)WorldDatabase線程
  6. 一個(gè)RA線程(管理層)
  7. 一個(gè)freeze catcher 線程(可選)

工程g3dlite:游戲邏輯層的底層庫

工程framework:系統(tǒng)框架

工程realm

負(fù)責(zé)登陸和選擇游戲服務(wù)器,進(jìn)行負(fù)載均衡。用到了C++ Sockets Library進(jìn)行登錄處理,采用select I/O模型。實(shí)現(xiàn)了Wow, Mangos登錄時(shí)的SRP6認(rèn)證。客戶端作為它的client連接到realm server認(rèn)證和選擇了mangos server就斷開。 而mangos server和realm server則不進(jìn)行連接,只是通過數(shù)據(jù)庫交互數(shù)據(jù):mangos server把自己的狀態(tài)和擁有的角色數(shù)放入庫中。realm server會(huì)讀取數(shù)據(jù)庫中的這些信息來獲知mangos server的狀態(tài)。

  1. 數(shù)據(jù)庫realm的realmlist表保存了realm的列表
  2. realm通過如下事件處理函數(shù)來負(fù)責(zé)登陸和選擇游戲服務(wù)器。

    const AuthHandler table[] =
    {
        { AUTH_LOGON_CHALLENGE,     STATUS_CONNECTED, &AuthSocket::_HandleLogonChallenge    },
        { AUTH_LOGON_PROOF,         STATUS_CONNECTED, &AuthSocket::_HandleLogonProof        },
        { AUTH_RECONNECT_CHALLENGE, STATUS_CONNECTED, &AuthSocket::_HandleReconnectChallenge},
        { AUTH_RECONNECT_PROOF,     STATUS_CONNECTED, &AuthSocket::_HandleReconnectProof    },
        { REALM_LIST,               STATUS_AUTHED,    &AuthSocket::_HandleRealmList         },
        { XFER_ACCEPT,              STATUS_CONNECTED, &AuthSocket::_HandleXferAccept        },
        { XFER_RESUME,              STATUS_CONNECTED, &AuthSocket::_HandleXferResume        },
        { XFER_CANCEL,              STATUS_CONNECTED, &AuthSocket::_HandleXferCancel        }
    };

登錄處理:

user登錄到realm server進(jìn)行身份認(rèn)證,并選擇登錄上哪個(gè)mangos server。user登錄到mangos server后,將不再和realm server交互。

參考: Wow 服務(wù)器解析

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美精品三级| 亚洲电影免费观看高清完整版在线观看 | 亚洲欧美一区二区在线观看| 亚洲欧美国产另类| 亚洲国产精品成人一区二区| 国产精品久久久久77777| 久久亚洲不卡| 欧美xxxx在线观看| 欧美激情一区二区三区在线视频 | 亚洲国产精品一区| 国产区二精品视| 国产精品视频999| 国产精品欧美风情| 国产精品毛片在线看| 国产精品国产三级国产普通话蜜臀 | 国产在线精品成人一区二区三区 | 欧美一区二区三区日韩| 亚洲欧美色一区| 亚洲综合日本| 午夜亚洲影视| 一区二区三区波多野结衣在线观看| 欧美成人a∨高清免费观看| 麻豆成人在线| 99re国产精品| 欧美一区=区| 久久亚洲精品网站| 欧美日韩第一页| 国产精品久久久久久亚洲毛片| 欧美日韩性生活视频| 亚洲黄色免费网站| 一区二区激情| 久久深夜福利| 国产精品久久91| 精品电影在线观看| 一本色道久久88综合亚洲精品ⅰ| 欧美一区二区三区四区高清 | 国产免费成人av| 亚洲精品日本| 免费成人美女女| 中日韩男男gay无套| 亚洲精美视频| 久久天堂精品| 久久国产主播| 一区二区三区在线看| 久久精品国产免费| 日韩亚洲一区二区| 美女精品在线| 亚洲人成在线播放网站岛国| 亚洲一区二区三区四区在线观看| 久久精品国产69国产精品亚洲 | 欧美mv日韩mv国产网站| 99re在线精品| 欧美大片18| 怡红院精品视频| 久久亚洲国产成人| 国产精品久久久久久影院8一贰佰| 国产精品每日更新在线播放网址| 久久一区二区视频| 久久综合九九| 欧美一区二区三区四区高清 | 欧美日韩国产首页在线观看| 久久久精品日韩欧美| 国产精品久久久久久久免费软件 | 亚洲视频电影图片偷拍一区| 欧美大片免费久久精品三p| 亚洲国产毛片完整版| 91久久精品国产| 欧美日韩99| 午夜精品视频在线| 久久久久久9999| 亚洲视频999| 午夜伦理片一区| 欧美日韩精品一区二区天天拍小说| 亚洲第一福利视频| 国产精品久久久久9999吃药| 欧美视频免费在线| 日韩一级大片在线| 欧美粗暴jizz性欧美20| 欧美激情2020午夜免费观看| 一区二区av在线| 性欧美8khd高清极品| 国产精品美女久久久免费| 美女免费视频一区| 欧美午夜一区二区福利视频| 久久婷婷蜜乳一本欲蜜臀| 欧美日韩亚洲免费| 欧美电影电视剧在线观看| 国产精品专区第二| 亚洲日本中文字幕| 亚洲高清视频在线| 亚洲欧洲日韩在线| 亚洲激情在线视频| 伊人婷婷欧美激情| 亚洲一区二区三区中文字幕在线 | 99成人在线| 久久久国产成人精品| 亚洲黑丝一区二区| 制服丝袜激情欧洲亚洲| 久久裸体艺术| 久久亚洲私人国产精品va| 国产精品日韩在线一区| 欧美国产精品日韩| 亚洲三级免费| 国产精品成人aaaaa网站| 久久久999精品| 国产精品成人在线观看| 欧美一区二区三区另类| 久久一区二区三区四区| 在线看国产日韩| 欧美激情一区二区三级高清视频| 久久国产欧美| 亚洲国产精品久久91精品| 久久综合九色综合久99| 亚洲人成精品久久久久| 亚洲一区二区少妇| 欧美成人久久| 久久电影一区| 国产亚洲欧美激情| 久久精品水蜜桃av综合天堂| 亚洲激情专区| 久久在线精品| 香蕉av福利精品导航| 亚洲国产精品第一区二区| 国产小视频国产精品| 欧美激情综合色综合啪啪| 国产精品午夜电影| 久久久精品一品道一区| 99视频精品在线| 亚洲激情专区| 亚洲片区在线| 男同欧美伦乱| 久久成人精品| 久久黄色级2电影| 午夜精品视频网站| 亚洲一区二区在线播放| 尤物九九久久国产精品的分类| 久久久av水蜜桃| 久久精品欧美日韩| 久久aⅴ国产欧美74aaa| 亚洲一区二区精品| 亚洲精品小视频在线观看| 亚洲第一福利在线观看| 亚洲日本欧美| 亚洲男女毛片无遮挡| 久久精品一区| 欧美激情一二三区| 亚洲精品1区| 亚洲一级电影| 久久aⅴ国产紧身牛仔裤| 欧美夜福利tv在线| 一区二区三区福利| 午夜视黄欧洲亚洲| 欧美高清一区| 国产日韩久久| 亚洲精品一区二区三区婷婷月| 亚洲精品视频在线观看免费| 午夜精品视频网站| 亚洲国产经典视频| 久久国产一二区| 欧美午夜精品久久久| 欧美性jizz18性欧美| 国模私拍一区二区三区| 欧美网站在线观看| 精品盗摄一区二区三区| 亚洲一级网站| 国产精品久久久久久久久久免费看| 久久一二三国产| 91久久国产综合久久蜜月精品| 午夜精品久久久久久99热软件| 狂野欧美激情性xxxx欧美| 国产精品入口麻豆原神| 亚洲视屏在线播放| 亚洲黄一区二区| 久久免费高清视频| 国外视频精品毛片| 欧美在线free| 欧美电影在线播放| 久久午夜激情| 亚洲精品一区二区三区福利| 欧美成人四级电影| 欧美a一区二区| 91久久精品国产91久久性色| 久热精品视频在线| 久久一区二区三区四区| 亚洲精品在线电影| 亚洲人体1000| 欧美另类人妖| 亚洲综合欧美日韩| 久久超碰97人人做人人爱| 国产综合一区二区| 久久成人资源| 欧美jizzhd精品欧美喷水| 亚洲最新在线| 欧美精品videossex性护士| 99re6热在线精品视频播放速度| 欧美一区二区视频观看视频| 夜夜精品视频| 欧美破处大片在线视频| 亚洲国产欧美国产综合一区| 永久555www成人免费|