3Dmigoto學習筆記(3) 資源隱藏
老樣子,繼續(xù)使用kena Bridge of Spirits來進行筆記記錄,其它dx11游戲也是同樣的原理。

在上一節(jié)內容中,配置了d3dx.ini,使其能夠實現最基礎的資源隱藏功能,即角色去衣功能。
在這一節(jié)的內容中,將以kena Bridge of Spirits游戲為例,一步一步記錄如何實現這個效果,其它dx11游戲也是同樣的原理。
第一步:打開游戲,開啟Hunting
在之前的教程中,設置了d3dx.ini,使其能夠實現最基礎的去衣效果,接下來打開游戲:

當修改了d3dx.ini后,打開游戲后按F10鍵重新加載所有資源,這樣會重新讀取d3dx.ini中的配置。
每次修改配置后,都需要按F10來重新讀取配置內容,這樣就不用重啟游戲了。
當你按下F10后,左上角會顯示資源重新加載:
然后現在開啟你鍵盤上的小鍵盤,然后按下小鍵盤上的0,即可進入Hunting模式,如下圖:
第二步:Hunting快捷鍵學習
小鍵盤上的鍵位分別代表對VS PS CS GS DS HS 等等Shader以及IB VB等Buffer的切換與地址復制。
總之,小鍵盤的每一個按鍵都非常有用,接下來記錄一些常用按鍵的作用:
(其實在d3dx.ini中有英文注釋已經講解清楚了,這里為了方便我自己學習,記錄了中文版本)
(下面的. + 1 代表小鍵盤的.鍵和1鍵一起按下,以此類推)


基本上調試Hunting時,所需要用到的按鍵就這么多了,值得注意的是,RT默認是關閉的,如圖:

默認為關閉狀態(tài),如果有需要可以解開注釋來開啟。
第三步:Hunting演示
首先進入到游戲中,然后要把這個角色的武器隱藏掉。

按下7和8開始尋找對應的index buffer:
以上圖為例,被選中的index buffer會從場景中消失掉,同時注意右上角IB的數字變?yōu)榱?3/144。
這代表著當前攝像機場景下,共有144個index buffer,即144個IB,我們現在選擇的是第13個IB。
左上角給出了IB的地址,這得益于之前配置的verbose_overlay = 1,否則左上角不會顯示內容。
我們繼續(xù)按7和8鍵尋找,直到角色的武器被隱藏掉:
到這里,說明找到了裝載武器資源的index buffer。
然后按小鍵盤的9鍵,復制該地址,按下后左上角會有提示,如下圖:
這樣,這個地址就復制到了剪貼板里了,到這里已經成功90%了,然后開始的下一步行動!
這里多嘴幾句,在有些游戲里,可以實現把建筑資源隱藏,從而實現透視的效果,尤其在某些FPS射擊游戲中,這樣的修改幾乎等同于開外掛,所以不建議在多人對戰(zhàn)游戲中使用此方法影響游戲平衡。
希望大家都能克制自己,保持良好素質,不要破壞游戲平衡,否則后果自負。
第四步:配置到Mod文件
此時得到了武器資源的IB的hash地址,接下來打開游戲目錄:

還記得之前創(chuàng)建的Mods目錄嗎,我要在Mods目錄下創(chuàng)建一個.ini類型的配置文件,例如:

打開這個配置文件,然后輸入以下內容:

保存后打開游戲界面,按下F10重新加載資源:
可以看到此時武器變成黑的了,在部分游戲中,隱藏資源后會導致資源變成黑色。
在另一部分游戲中,隱藏資源會讓資源直接消失。
這取決于游戲開發(fā)時的模型設計邏輯。
你只需要知道,在大部分游戲中,完成上述步驟后,對應的資源會被隱藏,Kena這款游戲屬于極少數類型,此時我們需要找到代表這個黑底的地址,并進行隱藏。
我們在VS中尋找,,如上圖我們找到之后,在剛才的配置文件中新加一行:

返回游戲,F10重新加載
可以看到,黑底被成功去除了。
這里需要注意,如果要隱藏VB和IB這種Buffer類型,要用TextureOverride。
如果要隱藏Shader類型,則要使用ShaderOverride。
值得一提的是,目前配置的F3無法實現Shader隱藏的開關,只能實現Buffer隱藏的開關。
大功告成!
到此,我已經學會了游戲中資源的隱藏,可以實現人物隱藏衣物,隱藏建筑物實現透視等等效果了!
下節(jié)內容會記錄資源替換!