• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              94 隨筆 :: 0 文章 :: 257 評論 :: 0 Trackbacks
            對于基于格子的mmorpg來說,按照格子來存儲周圍所見的物件,是一個比較好的選擇。

            但是,由于主角的移動,常常要對格子里的物件進行搬移,這大大影響了處理效率。

            今天介紹一種方法來優化這個搬移操作。


            (1)-  名字
                  偏移網格,從字面上來講,就是使用偏移量來進行處理和計算的網格。實際上,也是這么做的。這個方法保存了角色看得到的格子里的所有物件,并且確保離開視野的物件被及時地清理出去,以及在這個視野切換過程中不動的物件牢牢地呆在原地,而不用對他們進行搬移。

            (2)-  原理
                  首先,讓我們先來看看下面這張圖示(簡單起見,只假設玩家能看到1格的范圍):



                  一開始,我們的主角在 5 號位置,他能看到 1 2 3 4 5 6 7 8 9 這9個格子的物件。接下來,他移動到了9號位置,他現在看不到1,2,3,4,7格內的物件了,而他又看到了 A,B,C,D,E 格內的東西。
                 這個過程中,如果用老方法,我們需要把一個 3 x 3 的格子數組中的 5,6,8,9 格子內的物件搬移到原來 1,2,4,5 的格子內,同時還要清理那里原來的物件。然后清理 3,6,9,8,7格子,把 A, B, C, D, E 格子中的物件丟到原來 3, 6, 9, 8, 7 的格子內。
                  現在,我們換一種思路,原來1號格子,做為數組的原點,而現在,我們分離出兩個原點:一個物理原點,也就是格子數組的起始點;另一個是邏輯原點,也就是當前主角的可是范圍的原點。在從 5 到 9 的移動完成之后,5 就變成了主角的邏輯原點了,那么這個邏輯原點記作(1,1),也就是表示,主角可視范圍的原點是在物理數組的 (1,1)位置上。這時候,我們就不用去進行 5,6,8,9 到 1,2,4,5 的搬移了,因為他們在邏輯原點所確定的視覺范圍內的位置已經隨著邏輯原點從位置1(0,0)到位置5(1,1)的更新而更新了。那么,接下來,就是去安排新看到的 A,B,C,D,E了。這里用的是一個循環計數,也就是當物理格子數組越界之后,把他們折到數組界內,比如字節范圍內的 254+2 之后,會被折返成 254+2-255 = 1。這里,他們被折返到原來 1,2,3,4,7 的位置。
                  經過這樣一個過程之后,我們看到,新的思路下,我們會減少4次搬移的操作,這擴展到正常數量的格子之后,我們可以消減掉很大的一個雙重循環和搬移操作。

            (3)- 總結
                  從圖上可以看出,這個算法的精髓就是用兩個網格數組和一個偏移進行工作,從而減少一些實際的操作。也正是因為如此,所以,我才叫這個方法是偏移網格。
            posted on 2008-04-20 01:28 飯中淹 閱讀(1547) 評論(2)  編輯 收藏 引用

            評論

            # re: MMORPG客戶端技巧(1) - 偏移網格[未登錄] 2008-04-21 09:02 christanxw
            只是主角移動而已,為什么要搬移對周圍的固定物件?  回復  更多評論
              

            # re: MMORPG客戶端技巧(1) - 偏移網格 2010-04-06 10:22 wangwan
            是啊,不解,不解,搬移周圍的是因為周圍的景物不在當前屏幕范圍之內,要卷屏  回復  更多評論
              

            久久婷婷五月综合色高清| 久久精品www| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 国产精品欧美久久久天天影视| 久久99精品国产麻豆宅宅| 国产精品伦理久久久久久| 久久午夜无码鲁丝片秋霞| 国产三级久久久精品麻豆三级| 91精品国产色综久久 | 亚洲国产成人久久综合一区77| 中文字幕久久波多野结衣av| 久久狠狠色狠狠色综合| 亚洲伊人久久成综合人影院 | 久久人人爽人人爽人人片AV东京热 | 久久毛片免费看一区二区三区| 久久精品国产亚洲AV久| 国产精品久久久久一区二区三区| 狠狠精品久久久无码中文字幕| 91精品久久久久久无码| 国内精品久久久久久99蜜桃| 伊人久久综合成人网| 欧美与黑人午夜性猛交久久久 | 久久午夜夜伦鲁鲁片免费无码影视| 色偷偷888欧美精品久久久| 少妇精品久久久一区二区三区| 亚洲午夜精品久久久久久app| 国产亚州精品女人久久久久久| 国产精品久久成人影院| 精品久久久久久无码专区| 97精品伊人久久大香线蕉| 亚洲国产成人久久综合区| 久久久久黑人强伦姧人妻| 国产免费福利体检区久久 | 亚洲国产精品高清久久久| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 欧美亚洲色综久久精品国产| 国产亚洲精久久久久久无码77777| 无码八A片人妻少妇久久| 无码人妻少妇久久中文字幕| 精品久久久一二三区| 久久99这里只有精品国产|