來說說wow魔獸地形

2021-05-24 23:33:45 字數 1219 閱讀 9054

沒有辦法wow太經典,當自己碰到問題的時候再回頭研究wow發現wow盡然沒有問題,暴雪的遊戲製作經驗讓wow一開始就設計的如此講究,不得不感嘆國內遊戲同世界設計方面的差異。

由於沒有wow的源**,所有的分析想法都來自與wowmapview這個開源的wow地圖察看器,wowmapview的**寫的很凌亂,但很容易理解,好了,我們開始吧!gogo

wow場景是由一系列maptile組成,這些maptile的大小是1600/3 ≈ 533.33m,而每個maptile又是由 16x16 個mapchunk組成,由此可以計算出每個mapchunk≈33.33m,如圖:

在wow中,乙個maptile是有由乙個adt檔案描述。

比如world/maps/ahnqiraj/ahnqiraj_29_48.adt檔案就描述在xz(29,48)位置的maptile,每個maptile都包含了該tile內使用的貼圖(引用外部)、模型(引用外部)、wmo(mapobject)、模型例項、wmo例項,所謂模型例項就是相同模型在tile內不同擺放位置、大小、角度的說明資訊,在wow引擎中的術語是doodad,即可以隨意擺放的小東西,wmo例項類似。為了節省檔案尺寸,模式例項、wmo例項是通過index模型、wmo的方式儲存的,同頂點索引類似。

每個mapchunk又由9x9+8x8個地形頂點高度,法線,若干貼圖層(一般為4層),水面,alpha貼圖層(用於控制地表貼圖的混合比例,一般為3張,尺寸64x64)和一層shadow map(64x64)組成。如圖,由此可推算出wow的地面精度≈2m

wow的地表是非常精細的,這與它使用了alpha貼圖控制地表混合比例有關,而一般的引擎則把地表貼圖的混合比例放在地表頂點中記錄,這樣地表的精度將同頂點密度保持一致。

wow使用固定方向光照,所以可以使用shadow map來模擬樹、房子等在地表透射的陰影,shadow map的尺寸也是64x64,可見陰影的精度也是非常高的。

這樣的地形頂點分布是wow在最高地表精度下的高度頂點布局,當相機原理mapchunk時,這個高度頂點的布局可能是這樣:

此時,地表的精度≈4m。

wow的地表是支援挖洞的,有意思的是為了節省空間,其標示挖洞的資訊資料就是乙個int,通過使用位運算來得到乙個4x4精度的挖洞資訊,我們不放把這種4x4的洞叫做holechunk,每個holechunk支援4種狀態來標示其內部2x2的洞分布狀況,由此可見wow在資料結構方面已經發揮到了極致:對於需要精密表現的地表好不吝嗇的使用64x64混合貼圖,而對於hole這種只需要粗略(一半還不使用的東西)的記錄乙個int。

來說說DNS解析

dns domain name system,網域名稱系統 網際網路上作為網域名稱和ip位址相互對映的乙個分布式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的ip數串。通過主機名,最終得到該主機名對應的ip位址的過程叫做網域名稱解析 或主機名解析 dns協議執行在udp協...

今天來說說ADB

簡單介紹下adb adb全稱android debug bridge,是android sdk裡的乙個工具,用這個工具可以直接操作管理android模擬器或者真實的andriod裝置 如g1手機 它的主要功能有 然後我們來配置下adb的環境變數 1 在系統變數中新建android hmoe變數,賦值...

我也來說說多核

究竟普通開發者是否需要面對多核,這個問題在很多地方都在討論。很多人都認為不需要,這樣說是基於過去幾年的經驗,認為目前的一般應用單核高速cpu已經足以應付,今後也沒有新的重要應用驅動我們使用多核cpu,多核cpu要麼是廠商狗急跳牆,要麼是僅供科研計算,謝絕參觀。看完myan的這篇,我也來說說 說多核無...