• <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++博客 :: 首頁 :: 新隨筆 :: 聯(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 飯中淹 閱讀(1468) 評(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   管理


            日本精品一区二区久久久| 久久久久久免费一区二区三区 | 日本精品久久久中文字幕| 亚洲午夜久久久影院| 精品久久一区二区三区| 国产精品日韩欧美久久综合| 久久精品国产亚洲5555| 99精品久久久久久久婷婷| 蜜桃麻豆www久久| 国产精品久久婷婷六月丁香| 久久国产乱子伦免费精品| 久久丝袜精品中文字幕| 2021少妇久久久久久久久久| 欧美亚洲另类久久综合婷婷| 丰满少妇人妻久久久久久| 伊人色综合九久久天天蜜桃| 久久精品国产一区| 色欲久久久天天天综合网精品| 久久国产高清一区二区三区| 日韩人妻无码精品久久免费一 | 久久综合色之久久综合| 国产99久久精品一区二区| 久久久久青草线蕉综合超碰| 久久精品国产只有精品66| 久久精品草草草| 97热久久免费频精品99| 久久综合噜噜激激的五月天| 中文字幕无码久久精品青草| 久久久久国产亚洲AV麻豆| 国产精品日韩欧美久久综合| 久久精品中文字幕久久| 国内精品久久久久影院免费| 欧美丰满熟妇BBB久久久| 久久精品中文无码资源站| 亚洲国产日韩综合久久精品| 久久久久亚洲AV成人网人人网站 | 亚洲精品乱码久久久久久蜜桃图片 | 久久九九亚洲精品| 三级韩国一区久久二区综合| 国产精品热久久无码av| 亚洲精品美女久久777777|