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

            飯中淹的避難所~~~~~

            偶爾來避難的地方~

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              94 隨筆 :: 0 文章 :: 257 評(píng)論 :: 0 Trackbacks

            (1)- 歷史
                  六年前,我剛剛踏入網(wǎng)絡(luò)游戲開發(fā)這個(gè)新奇的領(lǐng)域,在完全沒有經(jīng)驗(yàn)的情況下,產(chǎn)生了不少亂七八糟的想法。寫下這些隨筆,只是為了保存下這份記憶。這些方法有些幼稚不堪,有些很無厘頭,雖然用處不大,不過寫出來,可能會(huì)對(duì)有些人有點(diǎn)作用吧。

            (2)- 要解決的問題
                  因?yàn)槭蔷W(wǎng)絡(luò)MMORPG游戲,所以需要將一個(gè)角色的動(dòng)作告訴周圍他看到的,也是能看到他其他角色知道。這個(gè)方法,就是用來解決將動(dòng)作告訴其他角色知道這個(gè)問題的。

            (3)- 工作原理
                  這個(gè)想法的工作原理,包括以下幾個(gè)要點(diǎn):
                  A,每個(gè)角色從他站得位置開始,螺旋形的遍歷所有格子,直到遍歷夠 M x N 大小的網(wǎng)格,或者找到滿 X  個(gè)可視角色之后,將這 X 個(gè)可視角色的信息(一般是對(duì)象指針,或者ID)緩存到這個(gè)角色的服務(wù)器對(duì)象中。
                  B,當(dāng)一個(gè)動(dòng)作產(chǎn)生的時(shí)候,遍歷這 X 個(gè)其他可視角色的緩存,把這個(gè)動(dòng)作告訴他們(發(fā)送網(wǎng)絡(luò)封包給他們對(duì)應(yīng)的客戶端)。
                  C,每過一段時(shí)間,重復(fù)執(zhí)行下A操作,并向從原來的緩存中清理出去的角色發(fā)送自己消失的動(dòng)作,向新加入到緩存中的角色發(fā)送自己出現(xiàn)的動(dòng)作。

                   對(duì)螺旋形的遍歷不太明白的朋友,可以參考下面的圖示

                  
                  角色站在1號(hào)位置,沿著數(shù)字依次遍歷周圍的格子。這樣做是為了保證越靠近角色本身的可視物件擁有越高的優(yōu)先級(jí)。

            (4)- 優(yōu)點(diǎn)和缺點(diǎn)
                  這個(gè)方法的優(yōu)點(diǎn)還是有的,我總結(jié)了下,有以下幾點(diǎn):
                  A,穩(wěn)定性高,搜索的范圍固定,而且最大可視數(shù)量固定,所以基本保證穩(wěn)定,不會(huì)出現(xiàn)太大的跳躍。
                  B,自動(dòng)化程度高(^_^),算法自動(dòng)對(duì)周圍人多的情況進(jìn)行了處理,自動(dòng)縮小范圍,既不會(huì)丟失靠近自己的人的重要信息,也不會(huì)因?yàn)槿硕喽绊懶?。(看起來有點(diǎn)象3D渲染上用霧遮擋來減少繪制的多變形數(shù)量)并且自動(dòng)進(jìn)行了動(dòng)作LOD,因?yàn)槭敲窟^一段時(shí)間進(jìn)行一次遍歷,所以在這段時(shí)間內(nèi)如果有其他角色頻繁在遍歷邊緣做進(jìn)出的動(dòng)作,都不會(huì)向角色發(fā)送任何信息。

                  缺點(diǎn)也不少:
                  A,遍歷的時(shí)機(jī)無法控制,不能在有角色進(jìn)入視野的時(shí)候主動(dòng)去遍歷,缺少主動(dòng)性。
                  B,需要一定的空間來存儲(chǔ)周圍角色的信息(指針,ID等)。
                  C,當(dāng)周圍可視角色比較多時(shí),可視范圍就小了,會(huì)導(dǎo)致一些重要信息無法及時(shí)獲知。

            (5)- 后記
                  這個(gè)方法作一些優(yōu)化和修改,還是很實(shí)用的方法。最后給它命個(gè)名吧,就叫 螺旋網(wǎng)格 吧。

            posted on 2008-04-20 02:14 飯中淹 閱讀(1465) 評(píng)論(1)  編輯 收藏 引用

            評(píng)論

            # re: 塵封的卷軸(1) - 早期的基于格子的MMORPG服務(wù)器角色間可見性處理的想法 2008-10-14 16:54 路人
            不錯(cuò)~  回復(fù)  更多評(píng)論
              


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            99久久精品免费观看国产| 国产高清美女一级a毛片久久w | 国产精品亚洲综合久久| 久久久久久精品免费看SSS | 久久综合鬼色88久久精品综合自在自线噜噜| 亚洲国产精品久久久久网站| 理论片午午伦夜理片久久| 久久亚洲中文字幕精品有坂深雪 | 色偷偷偷久久伊人大杳蕉| 亚洲国产成人久久综合一| 尹人香蕉久久99天天拍| 97久久久精品综合88久久| 久久精品国产男包| 色偷偷888欧美精品久久久| 99久久精品免费看国产一区二区三区| 国产精品久久毛片完整版| 午夜精品久久久久久影视riav| 久久久久亚洲AV成人片| 亚洲欧美日韩精品久久亚洲区 | 久久久久国色AV免费看图片| 久久精品国产亚洲AV无码麻豆| 久久精品国产第一区二区| 波多野结衣中文字幕久久| 久久久久青草线蕉综合超碰| 久久精品国产色蜜蜜麻豆| 大美女久久久久久j久久| 久久久久无码精品国产| 伊人久久大香线蕉亚洲| 三级三级久久三级久久| 久久久久久国产精品美女| 国产成人久久精品麻豆一区| 韩国无遮挡三级久久| 国产精品久久久久久吹潮| 久久久久女人精品毛片| 欧美一区二区三区久久综合| 成人综合久久精品色婷婷| 久久青青草视频| 亚洲av伊人久久综合密臀性色| 亚洲中文精品久久久久久不卡| 色综合久久夜色精品国产| 久久久久精品国产亚洲AV无码|