DOOM engine blockmap解析筆記

閱讀時間約 3 分鐘
blockmap是附屬在map data裡面的一個資料結構,blockmap存放的位置和長度都是紀錄在WAD最前面的lump目錄裡。他和碰撞檢測相關,概念是用grid(網格)把地圖切割成小block,只有在同一個block的物體和牆壁會進行檢測。根據1994釋出的一份unofficial doom spec文件block上限是113*113個,在遊戲的automap模式開啟grid,可以看到實際被分割的樣子。
blockmap結構分三塊:header、offset、blocklist,數值格式都是 I16 (int short),可以在doom wiki找到的表格就不放,僅紀錄我的筆記。
header是第0~7byte, 0~3紀錄的是grid起點座標,通常是負值,如果使用的系統只能繪製在第一象限就要作平移,這在所有automap繪製相關的座標都要注意。4~7是blockmap的水平和垂直格數,相乘即總block (N),所以doom1的E1M1有36*23=824個block。
Offset是第8~8+2*(N-1) byte,紀錄每個block在blockmap資料結構裡的位置(byte offset)。每兩個byte是一個block的起始位置,例如E1M1的第一個block位置(也就是blocklist的起點)在第832byte。
blocklist存放N個block的資訊,block的資料結構有兩種,Tool格式開頭是兩個0x00 (int short 0)結尾是兩個0xFF (int short -1),executable格式少了開頭兩個0x00,直接從wad解出來的是前者。所以直接搜尋blocklist資料裡-1的數量會等於block數量。0和-1之間會存放block內包含的line,並不是直接紀錄相關資訊,而是每2byte對應linedef裡的一筆資料,像E1M1最後一個linedef編號474,blocklist能找到的最大編號也是474。
#Blockmap structure#
###header###
x coordinate of grid origin
y coordinate of grid origin
Number of columns
Number of rows
###offsets###
Offset to block 0
...
Offset to block N - 1
###blocklist###
#block 0
0, line_a0, ..., line_an, -1
#block 1
0, line_b0, ..., line_bn, -1
...  ...  ...
#block n-1
0, line_x0, ..., line_xn, -1
#########
Block裡面有可能不含任何linedef,E1M1一開始的十幾個block都在地圖外,資料解出來是一串連續的0,-1,以為是blocklist資料格式弄錯,多花了好幾天查資料。所以特別把彙整所有資料的結果記錄下來。
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
6會員
59內容數
ktest
留言0
查看全部
發表第一個留言支持創作者!
hls Ding的沙龍 的其他內容
兩種在windows系統用win32 api關閉輸入法的作法
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
兩種在windows系統用win32 api關閉輸入法的作法
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
你可能也想看
Google News 追蹤
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Prompt Engineering 是一門藝術和科學,它精心設計有效的提示,以從人工智慧模型中誘發所需
Thumbnail
前一篇我們有提到「【Generative AI - Prompt篇】Ep.3 讓AI身歷其境的角色提示法」如何催眠AI成為專家,藉著該提示技巧讓AI可以針對該領域進行專業的回答,但…這還不夠,我們還希望AI可以更強大,可以根據我們設計的範本,進行相同規格的輸入與輸出。 我們在前面幾個篇章也玩過一些P
Thumbnail
前面我們有介紹「【Generative AI — Prompt篇】Ep.1 什麼是Prompt Engineering?」相信對於下指令給AI應該已經具有基本知識,那麼這一次我們來介紹Prompt技巧中的其中一環「角色提示法」,這是什麼樣的一種魔法呢? 很簡單,我們就是讓AI變身成專家,賦予特定領域
Thumbnail
前面我們有介紹「【Generative AI — Prompt篇】Ep.1 什麼是Prompt Engineering?」相信對於下指令給AI應該已經具有基本知識了吧,在進入Prompt Engineering之前有一些Guideline是我們需要知道的,就如同線上遊戲一般,我們會先進到新手村學習一
Thumbnail
「Prompt」這個詞是提示的意思,但為什麼需要提示呢? 當AI不理解我們的時候,勢必給出的回應並非準確的為我們解答,因此一個好的提示是非常重要的,就如同我們人與人之間的溝通一樣,如何將自己心裡的疑惑轉化成好的問題來提問對方,讓對方理解,進而給出一個明確的答案,這就是提示(Prompt)的重要性,對
Thumbnail
相信很多電玩迷,尤其是毀滅戰士迷 (DOOMer),看到這個標題會發出會心的一笑,因為它是個人電腦上最出色的電動遊戲。 DOOM 是由 ID Software 公司所發行的電動遊戲。它的前身是德軍總部(Wolfstein 3D),後因市場反應熱烈而出了 DOOM 這款電玩。 使用者面對一個非常立體的
本文簡單描述該如何設定UE4內的物件碰撞,以及各個選項的意義 碰撞 在Project Settings裡面,可以調整預設的碰撞設定 把大部分的物體都設上去會很方便,真的沒辦法的時候可以對物體直接調為Custom Object Channel 設定物體的類型 預設的有 Vehicle:載具,例如車輛
Thumbnail
有時候都覺得,這裡及周邊地帶都太過正向,我的心底總會想背道而馳。我的情緒天秤會自動校正,太正向我會白眼,我需要負面來平衡。我就是看到心靈雞湯會想吐。 所以我持續有在聽 doomy 的東西。
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
我們人類和ChatGPT的對話技巧也是需要學習的,有鑑於此,我想要一天分享一點「和ChatGPT對話的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Prompt Engineering 是一門藝術和科學,它精心設計有效的提示,以從人工智慧模型中誘發所需
Thumbnail
前一篇我們有提到「【Generative AI - Prompt篇】Ep.3 讓AI身歷其境的角色提示法」如何催眠AI成為專家,藉著該提示技巧讓AI可以針對該領域進行專業的回答,但…這還不夠,我們還希望AI可以更強大,可以根據我們設計的範本,進行相同規格的輸入與輸出。 我們在前面幾個篇章也玩過一些P
Thumbnail
前面我們有介紹「【Generative AI — Prompt篇】Ep.1 什麼是Prompt Engineering?」相信對於下指令給AI應該已經具有基本知識,那麼這一次我們來介紹Prompt技巧中的其中一環「角色提示法」,這是什麼樣的一種魔法呢? 很簡單,我們就是讓AI變身成專家,賦予特定領域
Thumbnail
前面我們有介紹「【Generative AI — Prompt篇】Ep.1 什麼是Prompt Engineering?」相信對於下指令給AI應該已經具有基本知識了吧,在進入Prompt Engineering之前有一些Guideline是我們需要知道的,就如同線上遊戲一般,我們會先進到新手村學習一
Thumbnail
「Prompt」這個詞是提示的意思,但為什麼需要提示呢? 當AI不理解我們的時候,勢必給出的回應並非準確的為我們解答,因此一個好的提示是非常重要的,就如同我們人與人之間的溝通一樣,如何將自己心裡的疑惑轉化成好的問題來提問對方,讓對方理解,進而給出一個明確的答案,這就是提示(Prompt)的重要性,對
Thumbnail
相信很多電玩迷,尤其是毀滅戰士迷 (DOOMer),看到這個標題會發出會心的一笑,因為它是個人電腦上最出色的電動遊戲。 DOOM 是由 ID Software 公司所發行的電動遊戲。它的前身是德軍總部(Wolfstein 3D),後因市場反應熱烈而出了 DOOM 這款電玩。 使用者面對一個非常立體的
本文簡單描述該如何設定UE4內的物件碰撞,以及各個選項的意義 碰撞 在Project Settings裡面,可以調整預設的碰撞設定 把大部分的物體都設上去會很方便,真的沒辦法的時候可以對物體直接調為Custom Object Channel 設定物體的類型 預設的有 Vehicle:載具,例如車輛
Thumbnail
有時候都覺得,這裡及周邊地帶都太過正向,我的心底總會想背道而馳。我的情緒天秤會自動校正,太正向我會白眼,我需要負面來平衡。我就是看到心靈雞湯會想吐。 所以我持續有在聽 doomy 的東西。