
前言:
潜2使用了虚幻5引擎,其资源封装程度比一代复杂了很多,也注定了需要一定计算机和命令行知识以及学习能力和态度才能搞定资源和配置的修改。以前发一代的MOD我还可以说不满意的自己动手去texts文件夹修改,以后二代的mod恐怕只能说,不满意看教程自己解包资源改完打包回去,要么就憋着。本文章只在介绍流程和各工具的使用方法和特点,对于一些基础的概念(二进制,解压,json格式,命令行使用方法,路径含义,带空格的字符串参数传递等)不做详细介绍,互联网很大可以自己搜到。如果确定要动手,需仔细认真阅读并动脑理解,这篇并不是给小白看的。

整体概念:潜二的资源是完全用虚幻5的打包格式封装的,不支持散装文件。虚幻引擎的一些资源会打包成一个pak文件或 pak ucas utoc三个文件,细节可以不用深究。目前看下来配置文件等东西一般只需要打包为pak文件,但是涉及到二进制的资产(uasset)就会需要打包成三个同名文件的类型。不过对于任何一种情况,改完资源后打包好,都需要放到{游戏目录}\{项目名}\Content\Paks\~mods文件夹里生效,对于潜二来说就是 {游戏安装目录}\Stalker2\Content\Paks\~mods , 没有的话自己按路径新建一个。
潜二有个我不认可的堪称项目管理败笔的地方就是,他把所有国家的语言翻译都放到了一个巨大的json文本里,并且没有用语言名字做key而是以数组形式存放,之后又把整个文本转换成了无法直接读取的二进制结构做成了虚幻引擎资产(uasset),导致解包了无法直接修改,还需要做二进制到文本的转换,改完了再转回来,再压成前面提到的三个文件的资源包进游戏加载,增加了巨大的工作量。而这每一步都需要单独的工具来做,并且下面提到的每个工具都要解压后运行,而不是在压缩包里运行。唯一值得欣慰的是,虚幻5作为现代游戏引擎,是真的使用了通用的字体文件定义,通过资源解包也可以看到字体文件,只要文字变更就可以显示,不用像一代Xray like引擎那样需要手工生成字库文件。
参考N网和AMK论坛的帖子(https://www.nexusmods.com/stalker2heartofchornobyl/articles/3 , https://www.amk-team.ru/forum/topic/15091-ustanovka-fmodel-i-repak-perevod-materiala-s-nexusmod/),使用FModel软件加载潜二游戏,游戏版本选择UE5_1,查看内的资源包,并写入帖子里提供的潜二的加密AES key(此处我不明确提供,不沾因果),即可查看游戏的各种资源。
打开 pakchunk29-Windows.utoc 文件(这是潜二原版的字符串文本储存包,将来其他的mod未必在此处),打开Localization文件夹就可以看到翻译文件,右键导出资产,打开 FModel\Output\Exports 就可以看到导出的资产及从 Stalker2 开始的目录结构,这个很重要,将来任何改完的封包都需要保证资产的路径正确,比如你的改完的文件在 mymod文件夹里,里面一定是这个 Stalker2 文件夹,再拿这个mymod传给封包软件去封。


参考N网帖子(https://www.nexusmods.com/stalker2heartofchornobyl/mods/90),使用里面这个工具下载下来解压。
将刚才解包出来的 LocalizationDB.ubulk(uasset先放着不动)用命令行传给该工具转换。
命令类似(替换成你自己的文件路径): .\S2HOC_LocEditor.exe -to-json .\source\LocalizationDB.ubulk
即可在你提供的文件旁边生成一个 LocalizationDB.json ,用任何你喜欢的文本编辑器打开,找到你要改的文本进行修改到满意为止,保存。
注意:经多人尝试,潜二因为某些我没兴趣深究的原因,只能修改一门语言的文本,如果修改了多个语言会导致读取错误甚至游戏崩溃。
改完后再把json用该工具转回二进制,命令类似:.\S2HOC_LocEditor.exe -to-bulk .\LocalizationDB.json
到了本文的重点,如果是改改枪械怪物属性什么的,解包出来的应该是对应的cfg文件,那么使用amk帖子提到的repak软件即可,然而就像我前面指责的那样,gsc决定把文本包装成二进制资产,那么只能使用第二段中N网帖子提到的UnrealReZen程序(https://github.com/rm-NoobInCoding/UnrealReZen)来进行打包。

必要的几个参数:
--content-path 就是你改完的文件的路径,这个文件夹里面一定是我前面说的Stalker2文件夹,并保留里面文件的完整目录结构。此处把解包出来的LocalizationDB.uasset和你在第二段改完转好的LocalizationDB.ubulk两个文件放到 {文件夹}\Stalker2\Content\_Stalker_2\Localization路径内。
--compression-format 压缩格式,目前试下来用 Oodle 才能正常生效,软件里默认的Zlib不行。
--engine-version 游戏引擎版本,涉及到资产格式,写GAME_UE5_1,可以通过查看游戏安装文件夹里Stalker2.exe的详细信息-文件版本看到5.1。
--game-dir 潜二游戏安装目录,必填,会用aes key与其他资源包进行比对
--output-path 输出路径(带有文件名utoc),且扩展名前的文件名需要用_P结尾,来获取虚幻5引擎加载资源时的最高优先级,来确保覆盖了原版的字符串资源,可以像我一样直接生成到~mods文件夹里,省事。
--aes-key 游戏资源的加密AES key,前文提到的,一样传进去。
可能有用的参数:
--mount-point 资源挂载点,不确定有没有影响,我是仿照的pak29的写的 Stalker2/Content/_Stalker_2/Localization/ ,跑出来可以用,我就带着了。
所以最后的命令应该类似于:
回车并稍作等待,提示完成后就可以进游戏查看了,可能需要切到别的语言再切回来才能看到效果,也可能不用。
多次打包同一个路径文件名的文件不会自动删除或覆盖,会报错,需要手动先删除。
效果:


————————————————
上面提到的软件都在此处有转存:
链接: https://pan.baidu.com/s/1-Gbc1iRwIbZSGaWIJVgYEw?pwd=vqtq 提取码: vqtq