DOOM engine linedefs, vertexes解析筆記

閱讀時間約 3 分鐘
Vertexes和linedefs是構成doom關卡地圖的主要參數,所以放同一篇,(另外blockmap也很重要,沒啟用會造成穿牆)。在WAD的每個地圖區塊都會存放屬於該地圖的vertexes和linedefs。
Vertexes很單純就是頂點座標,用來決定line (LINEDEFS)和segment (SEGS)的起點終點,以(x0, y0, x1, y1, .......xn, yn)的順序排列資料,每個資料2 byte。
Linedefs lump用來紀錄每條線的設定資料,每條線由兩個頂點組成,渲染成3D地形時會在這條線前後貼材質變成一個或兩個牆面,每個牆面又分成最多三個貼圖區域(參照sidedefs)。如果想變更下列三項就必須把line設成雙面:改變地板和天花板的高度或貼圖,光線亮度,sector tag和sector type。
在doom1 doom2每個linedef占14byte,每個參數都是int16_t各2byte。七個參數簡述如下:
  • Start Vertex: 起點座標
  • End Vertex: 終點座標
  • Flags: 16個bit,控制這條線的某些屬性,可同時開啟複數flag。
  • Special Type: 門、電梯、傳送點等等依附在line(牆)上的可觸發特效設定。
  • Sector Tag: 大概是type的特效會影響到哪個sector,像E1M1的line308和sector59都一樣是tag1,line195和sector70都一樣是tag2。
  • Front Sidedef: 正面貼圖要用的sidedef編號,-1代表不貼圖。正面是在起點面向終點的右手邊那一面。
  • Back Sidedef: 背面貼圖要用的sidedef編號,-1代表不貼圖。
#Linedef type (或special type)種類繁多近千種,需要查表才知道細節。觸發效果的方法有三種(1)推-push(2)通過線-walkover(3)用武器攻擊-gun shoot,第一種依作用方式再分為manual和switched,manual只影響線對面的sector,switched影響和這條線有一樣tag的sector (待細查)。四種觸發方式各有一個英文字母為代號,又根據可否重複觸發給予1或R的代號,所以觸發代號總共有P1 PR S1 SR W1 WR G1 GR。
#要讀取Flag內容在labview還要把int16_t轉換成boolean array,doom1用到的flags列出如下
  • Bit 0  怪物和玩家都不能通過
  • Bit 1 僅怪物不能通過
  • Bit 2 雙面貼圖(在小地圖顯示的顏色跟單面不一樣)
  • Bit 3 上1/3貼圖材質unpegged (要再研究關於貼圖的說明)
  • Bit 4 下1/3貼圖材質unpegged
  • Bit 5 祕密地點(在小地圖顯示單面),如果special_type是1(即門)則怪物不能通過
  • Bit 6 blocks sound
  • Bit 7 永遠不在小地圖顯示
  • Bit 8 總是在小地圖顯示
Reference:
為什麼會看到廣告
avatar-img
6會員
63內容數
ktest
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
hls Ding的沙龍 的其他內容
Reject是附屬在map data裡面的一個表格,用來設定放在某個sector的怪物的視線有機會看到哪幾個sector的玩家。觸發使用查表的條件尚待確認。
blockmap是附屬在map data裡面的一個資料結構,說明blockmap的結構
兩種在windows系統用win32 api關閉輸入法的作法
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
Reject是附屬在map data裡面的一個表格,用來設定放在某個sector的怪物的視線有機會看到哪幾個sector的玩家。觸發使用查表的條件尚待確認。
blockmap是附屬在map data裡面的一個資料結構,說明blockmap的結構
兩種在windows系統用win32 api關閉輸入法的作法
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
Minimum Path Sum 給定一個矩陣,每個格子點代表經過的對應成本。 每回合可以往右移動一格或往下移動一格。 請問從起點左上角 走到 終點右下角的最小路徑成本總和是多少?
Thumbnail
這篇文章,會帶大家快速回顧DFS+回溯法框架(還沒看過或想複習的可以點連結進去)。 用DFS+回溯法框架,解開 直線排列Permutations 的全系列題目。 幫助讀者鞏固DFS+回溯法框架這個重要的知識點。 回顧 DFS+回溯法框架 白話的意思 # 列舉所有可能的情況,遞迴展開所有分
Thumbnail
這篇文章,會帶著大家複習以前學過的二進位DP框架, 並且以0~N的整數有幾個bit1,有幾個bit0的概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 常見的考法 請問整數k有幾個bit1? 有幾個bit0? 請問整數0到整數N分別各有幾個bit1? 有幾個
Thumbnail
這篇文章,會帶著大家複習以前學過的 區間DP框架, 並且以回文子字串、回文子序列的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 回文字串的基本定義 s = s[::-1] 也就是說字串s的正序 和 逆序完全相同。 回文字串的基本結構 空字串"
Thumbnail
這篇文章,會帶著大家複習以前學過的DFS框架, 並且以圖論的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 DFS 深度優先搜索框架 def dfs( parameter ): # 邊界條件 if base case or stop cond
Thumbnail
這篇文章,會帶著大家複習以前學過的格子點DP框架, 並且以移動路徑Unique Path的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 格子點DP框架 依循題目的定義和規則,找出格子點移動的共同模式。 以本篇文章的例題為例,每一步可以選擇往右走一個
Thumbnail
這篇文章,會帶著大家複習以前學過的DFS框架 結合樹型DP, 並且以路徑和Path Sum的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 DFS 深度優先搜索框架 def dfs( parameter ): if base case or sto
Thumbnail
Q:甚麼是關鍵買,關鍵賣? A:對於該檔股票長期低買高賣的分點就可以列入該檔股票關鍵分點。 Q:甚麼是地緣分點? A:地緣分點位於該公司附近的分點我們可以稱為地緣分點。 Q:關鍵分點與地緣分點的差異? A:名稱叫法不一樣,但都是低買高賣。 Q:一檔股票只有一個關鍵分點嗎? A:不一
Thumbnail
「說出城堡的守衛配置,否則,我會把你的手指一根一根剁掉…慢慢地。」 在跑團過程中,"蒐集情報"是很常遇到的環節,特別是DND的戰鬥規則相對封閉(相對於敘事型系統),所以事前知道越多資訊,戰鬥起來就越有利。蒐集情報的方式有很多,而"拷問",正是一個玩家很可能採取的手段…
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇內容,將會講解什麼是變數,以及與變數相關的知識。包括變數、資料型態、變數賦值、變數的命名規則、變數的作用區域、變數的可重複性、內建變數。
Thumbnail
Minimum Path Sum 給定一個矩陣,每個格子點代表經過的對應成本。 每回合可以往右移動一格或往下移動一格。 請問從起點左上角 走到 終點右下角的最小路徑成本總和是多少?
Thumbnail
這篇文章,會帶大家快速回顧DFS+回溯法框架(還沒看過或想複習的可以點連結進去)。 用DFS+回溯法框架,解開 直線排列Permutations 的全系列題目。 幫助讀者鞏固DFS+回溯法框架這個重要的知識點。 回顧 DFS+回溯法框架 白話的意思 # 列舉所有可能的情況,遞迴展開所有分
Thumbnail
這篇文章,會帶著大家複習以前學過的二進位DP框架, 並且以0~N的整數有幾個bit1,有幾個bit0的概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 常見的考法 請問整數k有幾個bit1? 有幾個bit0? 請問整數0到整數N分別各有幾個bit1? 有幾個
Thumbnail
這篇文章,會帶著大家複習以前學過的 區間DP框架, 並且以回文子字串、回文子序列的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 回文字串的基本定義 s = s[::-1] 也就是說字串s的正序 和 逆序完全相同。 回文字串的基本結構 空字串"
Thumbnail
這篇文章,會帶著大家複習以前學過的DFS框架, 並且以圖論的應用題與概念為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 DFS 深度優先搜索框架 def dfs( parameter ): # 邊界條件 if base case or stop cond
Thumbnail
這篇文章,會帶著大家複習以前學過的格子點DP框架, 並且以移動路徑Unique Path的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 格子點DP框架 依循題目的定義和規則,找出格子點移動的共同模式。 以本篇文章的例題為例,每一步可以選擇往右走一個
Thumbnail
這篇文章,會帶著大家複習以前學過的DFS框架 結合樹型DP, 並且以路徑和Path Sum的概念與應用為核心, 貫穿一些相關聯的題目,透過框架複現來幫助讀者理解這個演算法框架。 DFS 深度優先搜索框架 def dfs( parameter ): if base case or sto
Thumbnail
Q:甚麼是關鍵買,關鍵賣? A:對於該檔股票長期低買高賣的分點就可以列入該檔股票關鍵分點。 Q:甚麼是地緣分點? A:地緣分點位於該公司附近的分點我們可以稱為地緣分點。 Q:關鍵分點與地緣分點的差異? A:名稱叫法不一樣,但都是低買高賣。 Q:一檔股票只有一個關鍵分點嗎? A:不一
Thumbnail
「說出城堡的守衛配置,否則,我會把你的手指一根一根剁掉…慢慢地。」 在跑團過程中,"蒐集情報"是很常遇到的環節,特別是DND的戰鬥規則相對封閉(相對於敘事型系統),所以事前知道越多資訊,戰鬥起來就越有利。蒐集情報的方式有很多,而"拷問",正是一個玩家很可能採取的手段…