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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
我們人類和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
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
我們人類和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 的東西。