Doom engine reject解析筆記

更新於 發佈於 閱讀時間約 1 分鐘
Reject是附屬在map data裡面的一個表格,存放的位置和長度都是紀錄在WAD最前面的lump目錄裡。Reject是一個表格,用來設定放在某個sector(地圖上的一個被圍起來的空間, 詳細說明參照sectors和linedefs)的怪物有機會看到哪幾個sector的玩家。觸發查表的條件尚待確認
所有怪物在地圖產生時都是發呆不動,直到看到或聽到玩家才被觸發,reject table用來快速判斷怪物有沒有看到玩家的"可能性",如果有玩家在怪物視線可及的地方就會進行更進一步的觸發判斷。這是在電腦算力不足的年代用來節省計算資源的手段,算力爆發年代可以忽視他。
表格由一堆布林值組成,水平軸是玩家所在sector,垂直軸是怪物所在sector。每個布林值都是1bit,會以左到右、上到下的順序封裝成byte,解開資料時會從LSB開始讀。每個map的reject table size是roundup(sector^2 / 8),以E1M1來說sector有85個,所以是904byte。
以doom wiki的範例來說明,一個有5 sector的地圖,怪物在sector3看得到在sector 2,3的玩家、看不到sector 0,1,4的玩家。這個表會被封裝成b11000101, b00111110, b00100110, b00000001,轉成hex是0xC5, 0x3E, 0x26, 0x01。轉換時表格沒有用到的位數補0補滿到8的倍數。
   p0 p1 p2 p3 p4
m0  1  0  1  0  0
m1  0  1  1  0  1
m2  1  1  1  1  0
m3  0  0  1  1  0
m4  0  1  0  0  1
真正使用時通常只讀取半個表格,因為是對稱的。
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
6會員
63內容數
ktest
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
hls Ding的沙龍 的其他內容
blockmap是附屬在map data裡面的一個資料結構,說明blockmap的結構
兩種在windows系統用win32 api關閉輸入法的作法
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
blockmap是附屬在map data裡面的一個資料結構,說明blockmap的結構
兩種在windows系統用win32 api關閉輸入法的作法
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
在處理數據時,最可能會遇到數據中含有None的時候,若沒有處理就進行運算就會造成程式崩潰或者報錯 數據中含有None input_list = [(42, 292), (28, 296), (999, 92), (993, 46), (219, 4), (279, 2), (None, None
攻擊者的目的,是發展出一種方式, 能夠可靠辨認出特定的數據點, 是否包含於目前算法的訓練數據中, 以此來窺探算法的訓練數據隱私。 有另外一類的研究,叫做數據拷貝, 則是直接觀察算法的輸出, 看看算法輸出是否有過於靠近訓練數據的情形。 這種數據拷貝的觀察, 也轉成另一種成員推論攻擊的形式。
Thumbnail
陌生的環境,撲鼻而來的血腥氣息… 為何我會在此處? 怎麼來此處的? 不…這些好像不是很重要… 求生的本能告訴我…現在……..只要逃出去…..
*BL *架空世界 “哪個倒霉鬼被封了記憶?” “噓!這不是我們能問的”一隻大鬼瞪著小鬼 大鬼,一種一種非常弱的種族;小鬼,一種很強但智商不高的種族。絕對不能把他們放在一起,除非你打的贏他們,或者大鬼也是個傻子。 “可是,已經有很多記憶在這裡了,
我不敢玩恐怖遊戲,但看別人玩倒是挺有趣的。 比如看實況。 每個實況主都有不同的風格,同款恐怖遊戲,不同人玩起來給人的感覺也不一樣。 而且現在實況主有夠多的,各類型應有盡有,總有一種類型的實況主是你會喜歡的。 我還滿喜歡看同一款恐怖遊戲,不同人的反應會是如何。 不過感覺會怕的實況主比較有趣,
Thumbnail
生命靈數動力系統識人術:不管場面多熱烈,能冷靜淡定說「不要」的會是哪一組生命靈數動力系統的靈數玩家呢? 選項A:1、4、7號人的高手組。 選項B:2、5、8號人的貼心組。 選項C:3、6、9號人的靈感組。 選好了嗎? 一起認識生命靈數動力系統說出「不要」時,到底都再想些什麼吧...
Thumbnail
「說出城堡的守衛配置,否則,我會把你的手指一根一根剁掉…慢慢地。」 在跑團過程中,"蒐集情報"是很常遇到的環節,特別是DND的戰鬥規則相對封閉(相對於敘事型系統),所以事前知道越多資訊,戰鬥起來就越有利。蒐集情報的方式有很多,而"拷問",正是一個玩家很可能採取的手段…
Thumbnail
TRPG是一種很不好推坑的遊戲,DM難找、隊友也不好找,而想找到合適的DM與隊友就更難了。許多人的TRPG體驗是從"野團"開始。受惠於網路平台的發達,現在TRPG網路團算是蓬勃,找網團跑團相比於面團簡單很多。本篇淺談一些野團時可能遇到的玩家類型,系列的第一篇,來談談野團中常遇到的一類玩家"看客"…
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表name欄位為檢查基準,刪除有缺失值None的 data rows。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ | s
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
在處理數據時,最可能會遇到數據中含有None的時候,若沒有處理就進行運算就會造成程式崩潰或者報錯 數據中含有None input_list = [(42, 292), (28, 296), (999, 92), (993, 46), (219, 4), (279, 2), (None, None
攻擊者的目的,是發展出一種方式, 能夠可靠辨認出特定的數據點, 是否包含於目前算法的訓練數據中, 以此來窺探算法的訓練數據隱私。 有另外一類的研究,叫做數據拷貝, 則是直接觀察算法的輸出, 看看算法輸出是否有過於靠近訓練數據的情形。 這種數據拷貝的觀察, 也轉成另一種成員推論攻擊的形式。
Thumbnail
陌生的環境,撲鼻而來的血腥氣息… 為何我會在此處? 怎麼來此處的? 不…這些好像不是很重要… 求生的本能告訴我…現在……..只要逃出去…..
*BL *架空世界 “哪個倒霉鬼被封了記憶?” “噓!這不是我們能問的”一隻大鬼瞪著小鬼 大鬼,一種一種非常弱的種族;小鬼,一種很強但智商不高的種族。絕對不能把他們放在一起,除非你打的贏他們,或者大鬼也是個傻子。 “可是,已經有很多記憶在這裡了,
我不敢玩恐怖遊戲,但看別人玩倒是挺有趣的。 比如看實況。 每個實況主都有不同的風格,同款恐怖遊戲,不同人玩起來給人的感覺也不一樣。 而且現在實況主有夠多的,各類型應有盡有,總有一種類型的實況主是你會喜歡的。 我還滿喜歡看同一款恐怖遊戲,不同人的反應會是如何。 不過感覺會怕的實況主比較有趣,
Thumbnail
生命靈數動力系統識人術:不管場面多熱烈,能冷靜淡定說「不要」的會是哪一組生命靈數動力系統的靈數玩家呢? 選項A:1、4、7號人的高手組。 選項B:2、5、8號人的貼心組。 選項C:3、6、9號人的靈感組。 選好了嗎? 一起認識生命靈數動力系統說出「不要」時,到底都再想些什麼吧...
Thumbnail
「說出城堡的守衛配置,否則,我會把你的手指一根一根剁掉…慢慢地。」 在跑團過程中,"蒐集情報"是很常遇到的環節,特別是DND的戰鬥規則相對封閉(相對於敘事型系統),所以事前知道越多資訊,戰鬥起來就越有利。蒐集情報的方式有很多,而"拷問",正是一個玩家很可能採取的手段…
Thumbnail
TRPG是一種很不好推坑的遊戲,DM難找、隊友也不好找,而想找到合適的DM與隊友就更難了。許多人的TRPG體驗是從"野團"開始。受惠於網路平台的發達,現在TRPG網路團算是蓬勃,找網團跑團相比於面團簡單很多。本篇淺談一些野團時可能遇到的玩家類型,系列的第一篇,來談談野團中常遇到的一類玩家"看客"…
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
題目敘述 題目會給定一個pandas DataFrame作為輸入,要求我們以原有的資料表name欄位為檢查基準,刪除有缺失值None的 data rows。 題目的原文敘述 測試範例 Example 1: Input: +------------+---------+-----+ | s