3Dmigoto学习笔记(3) 资源隐藏
老样子,继续使用kena Bridge of Spirits来进行笔记记录,其它dx11游戏也是同样的原理。

在上一节内容中,配置了d3dx.ini,使其能够实现最基础的资源隐藏功能,即角色去衣功能。
在这一节的内容中,将以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默认是关闭的,如图:

默认为关闭状态,如果有需要可以解开注释来开启。
第三步:Hunting演示
首先进入到游戏中,然后要把这个角色的武器隐藏掉。

按下7和8开始寻找对应的index buffer:
以上图为例,被选中的index buffer会从场景中消失掉,同时注意右上角IB的数字变为了13/144。
这代表着当前摄像机场景下,共有144个index buffer,即144个IB,我们现在选择的是第13个IB。
左上角给出了IB的地址,这得益于之前配置的verbose_overlay = 1,否则左上角不会显示内容。
我们继续按7和8键寻找,直到角色的武器被隐藏掉:
到这里,说明找到了装载武器资源的index buffer。
然后按小键盘的9键,复制该地址,按下后左上角会有提示,如下图:
这样,这个地址就复制到了剪贴板里了,到这里已经成功90%了,然后开始的下一步行动!
这里多嘴几句,在有些游戏里,可以实现把建筑资源隐藏,从而实现透视的效果,尤其在某些FPS射击游戏中,这样的修改几乎等同于开外挂,所以不建议在多人对战游戏中使用此方法影响游戏平衡。
希望大家都能克制自己,保持良好素质,不要破坏游戏平衡,否则后果自负。
第四步:配置到Mod文件
此时得到了武器资源的IB的hash地址,接下来打开游戏目录:

还记得之前创建的Mods目录吗,我要在Mods目录下创建一个.ini类型的配置文件,例如:

打开这个配置文件,然后输入以下内容:

保存后打开游戏界面,按下F10重新加载资源:
可以看到此时武器变成黑的了,在部分游戏中,隐藏资源后会导致资源变成黑色。
在另一部分游戏中,隐藏资源会让资源直接消失。
这取决于游戏开发时的模型设计逻辑。
你只需要知道,在大部分游戏中,完成上述步骤后,对应的资源会被隐藏,Kena这款游戏属于极少数类型,此时我们需要找到代表这个黑底的地址,并进行隐藏。
我们在VS中寻找,,如上图我们找到之后,在刚才的配置文件中新加一行:

返回游戏,F10重新加载
可以看到,黑底被成功去除了。
这里需要注意,如果要隐藏VB和IB这种Buffer类型,要用TextureOverride。
如果要隐藏Shader类型,则要使用ShaderOverride。
值得一提的是,目前配置的F3无法实现Shader隐藏的开关,只能实现Buffer隐藏的开关。
大功告成!
到此,我已经学会了游戏中资源的隐藏,可以实现人物隐藏衣物,隐藏建筑物实现透视等等效果了!
下节内容会记录资源替换!