• <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>

            勤能補(bǔ)拙,Expter

            成都游戲Coder,記錄游戲開發(fā)過程的筆記和心得!

            一個(gè)小型的IOCP網(wǎng)絡(luò)庫

                    基本網(wǎng)絡(luò)框架基于IOCP模型,這次主要在以前寫的IPC通信的基礎(chǔ)上修改,參考了當(dāng)前項(xiàng)目網(wǎng)絡(luò)庫的設(shè)計(jì)思路。
                  
                     先介紹幾個(gè)主要的類:
                   1.CSocket重新套接字,CConnection繼承CSocket表示一個(gè)連接對(duì)象主要重寫Recv和Send接口,以及組包過程。
                   2.CAccept處理客戶端的鏈接,
                   3.Cpacket一個(gè)消息數(shù)據(jù)包頭,CMessage繼承CPacket帶數(shù)據(jù)消息包。
                   4.CConnectManger保存一個(gè)連接CConnection的內(nèi)存池對(duì)象,CAcceptManager一個(gè)接收客戶端Accept的線程,CPacketManager參考了Loki的小對(duì)象管理做的一個(gè)緩沖區(qū)數(shù)據(jù)包內(nèi)存池。
                   5.CLibObject包含上面3個(gè)Manager(Singleton),CNetWork網(wǎng)絡(luò)初始化。
                   6.CIOCP類主要IO的線程類,接收處理所有的客戶端連接CConnection。
                   7.CServer類包括一個(gè)IOCP初始化和網(wǎng)絡(luò)庫管理類,IOCP會(huì)把接收到的數(shù)據(jù)重組成數(shù)據(jù)包后保存到CServer的一個(gè)CMsgQueue中.
                   8.我們的重寫一個(gè)Server只需要繼承CServer,然后實(shí)現(xiàn)run和AccedeProcess即可。run從CMsgQueue緩沖區(qū)提取一個(gè)消息包,AccedeProcess處理消息。
                  一些細(xì)節(jié)設(shè)計(jì):
                   1.為了節(jié)約帶寬Connection這里采用了Negles算法,這里采用Negle的并沒有馬上把每一個(gè)需要發(fā)送MSG采用緩存隊(duì)列的方式保存起來,而是每一個(gè)Connection自身都保存數(shù)據(jù),CServer通過一個(gè)線程把每一個(gè)存在的Connection是否有消息緩存,然后發(fā)送。因而讓IOCP只處理接收的消息,發(fā)送消息通過CServer來處理。

                    出網(wǎng)絡(luò)庫基本框架如下:
                      
             

            網(wǎng)絡(luò)庫代碼的代碼http://code.google.com/p/tpgame/source/browse/#svn/trunk/GServerEngine/NetLibrary

            問題肯定較多,希望多多指教。


            最近一直在構(gòu)思與寫一套游戲AI系統(tǒng),主要是通過狀態(tài)機(jī)響應(yīng)事件,更多是想運(yùn)用自己學(xué)習(xí)到的一些優(yōu)秀的算法,以及一些高級(jí)

            的AI以此來鍛煉對(duì)一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的編寫和設(shè)計(jì)思維的提升。

            算法和數(shù)據(jù)結(jié)構(gòu)方面:
            1.2D和3D尋路(主要包括2D尋路的初始化條件優(yōu)化 ,3D的空間劃分以及多叉樹的劃分,以及堆維護(hù))。
            2.帶有更多思維的角色系統(tǒng)(附帶更多的數(shù)據(jù)信息)判斷。
            3.查詢線段樹和樹狀數(shù)數(shù)組的運(yùn)用。
            4.一個(gè)線性的字符串過濾程序。
            5.一個(gè)動(dòng)態(tài)基于角色的最優(yōu)二叉查找樹的動(dòng)態(tài)維護(hù)。(主要解決不同的角色AI觸發(fā)頻率建立一顆最優(yōu)二叉查找樹)
            6.追蹤算法以及游戲的群集算法都會(huì)整合到現(xiàn)在的AI系統(tǒng)中。

            設(shè)計(jì)方面:
            1.盡量讓類之間耦合性更小,復(fù)雜度更低,淺顯明確。

            注:Ai系統(tǒng)寫完會(huì)把代碼和網(wǎng)絡(luò)庫的最新代碼更新都會(huì)上傳,希望大家多多指教。




            posted on 2009-12-20 14:21 expter 閱讀(3789) 評(píng)論(5)  編輯 收藏 引用 所屬分類: 其他學(xué)習(xí)筆記 、工作筆記 、算法與數(shù)據(jù)結(jié)構(gòu) 、Ai

            評(píng)論

            # re: 一個(gè)小型的IOCP網(wǎng)絡(luò)庫 2009-12-21 01:50 Fox

            三更半夜的上來看一下,這兩天被蹂躪安逸了……  回復(fù)  更多評(píng)論   

            # re: 一個(gè)小型的IOCP網(wǎng)絡(luò)庫[未登錄] 2009-12-23 12:44 true

            友情支持  回復(fù)  更多評(píng)論   

            # re: 一個(gè)小型的IOCP網(wǎng)絡(luò)庫 2009-12-23 22:15 矩陣操作

            提供一個(gè)打包下載吧。不很想裝SVN。。。。-_-~!  回復(fù)  更多評(píng)論   

            # re: 一個(gè)小型的IOCP網(wǎng)絡(luò)庫 2010-10-07 16:02 favormm

            我也是成都coder  回復(fù)  更多評(píng)論   

            # re: 一個(gè)小型的IOCP網(wǎng)絡(luò)庫 2010-10-07 16:05 favormm

            學(xué)習(xí)了。我也是成都的  回復(fù)  更多評(píng)論   

            久久精品日日躁夜夜躁欧美| 伊人久久综在合线亚洲2019| 久久国产成人| 亚洲国产精品久久久久网站| 高清免费久久午夜精品| 日韩乱码人妻无码中文字幕久久| 久久91精品国产91| 奇米影视7777久久精品人人爽| 欧美精品一区二区久久| 午夜精品久久久久久久无码| 久久午夜无码鲁丝片秋霞| 亚洲人成网亚洲欧洲无码久久 | 久久丝袜精品中文字幕| 久久九九免费高清视频| 中文字幕日本人妻久久久免费| 久久亚洲AV无码精品色午夜麻豆 | 2020久久精品国产免费| 国产精品久久网| 久久人人爽人人爽人人片AV东京热 | 婷婷国产天堂久久综合五月| 亚洲伊人久久大香线蕉综合图片 | 久久人人超碰精品CAOPOREN| 欧美黑人激情性久久| 精品久久久噜噜噜久久久 | 97热久久免费频精品99| 91精品国产91久久久久久青草| 久久久久亚洲av成人无码电影| 久久久久久精品久久久久| 国产精品久久久久天天影视| 一本久久a久久精品综合香蕉| 久久久精品人妻一区二区三区四 | 狠狠色丁香婷婷综合久久来| 久久99精品国产麻豆婷婷| 亚洲综合伊人久久大杳蕉| 精品久久久无码中文字幕| 无码伊人66久久大杳蕉网站谷歌| 激情综合色综合久久综合| 一本色道久久综合狠狠躁| 日本精品久久久久久久久免费| 亚洲国产精品无码久久| 亚洲性久久久影院|