开题碎碎念
大家好啊,这里是号卧龙字孔明的诸葛不太亮。
前几天研究了下崛起的bgm替换流程,虽然与世界大体一致,但其中也有一些不相同的地方。
正好影风也想自己搞替换,所以我姑且写一个教程来说说怎么走完替换的流程。
我会以“边境村bgm替换炎火村bgm”为例,来进行教学。
下面正式开始教程吧。
注意:此教程为一般性教程,只以个例教学,在实践中遇到的各种不同和问题请自己多加思考和尝试,不要死抱理论不放。
修改bgm一共5步,音效及语音只用看前2步即可,举一反三。
点击左侧目录即可跳转至某一步骤。
第一步:找到你想替换掉的bgm
一.使用工具:
1.RETool(下载:https://puu.sh/IIlmU/3ac6338a52.zip)
解包游戏文件用,使用方法不在这里赘述,请参考版内零酱的教学贴:
https://www.caimogu.cc/post/77016.html
2.mhrisePC.list(下载:https://github.com/mhvuze/MonsterHunterRiseModding/tree/main/files)
配合RETool使用的文件清单,使用方法同上。
3.RingingBloom(下载:https://github.com/Silvris/RingingBloom)
专门为修改Capcom游戏中的Wwise音频而制作的一个小工具,支持怪物猎人世界、生化危机23重制版、生化危机8、鬼泣5以及怪物猎人崛起等游戏。
而用在崛起上主要是为了拆解bnk和pck文件,编辑它们,再组合回去。
具体说明和用法可以移步工具作者的GitHub Wiki页面:
https://github.com/Silvris/RingingBloom/wiki
4.foobar2000(下载:百度)
一款轻量级播放音频的软件,可以直接播放wem文件而不用转换格式,但可能需要额外安装一个适配wem文件的插件“foo_input_vgmstream”才行。
二.操作步骤
1.首先解包游戏文件(略),然后定位bgm文件所在的路径。
一般来说,普通音效、武器音效以及打击音效文件会放在re_chunk_000\natives\STM\Sound\Wwise\路径下,而语音以及bgm文件会放在另一个路径re_chunk_000\natives\STM\streaming\Sound\Wwise\下,所以我们这次要找的当然是后者。
其次,音效可能含在bnk文件内也可能含在pck文件内,具体要看文件的大小和拆解后的内容。
这里直接给结论,bgm对应的几个pck文件如下:
文件名带版本号或者文件太小的我们先不管它,当然如果你有兴趣可以自己拆开看看。
2.使用RingingBloom拆解pck并导出wem集。
启动RingingBloom,首先在左上角的Mode中选择RE8。对,你没看错,就是RE8,不要选MHRise!如果选择MHRise,那么工具并不能读取扩展名为X64的文件,原因未知。
我们要编辑pck文件,那么就点击PCK Editor,会弹出一个新界面,功能如下:
我们以替换炎火村bgm为例,炎火村bgm对应的pck文件为bgm_lb_ev_str.pck.3.X64,在上图中点击Import导入该pck,你会看到pck被拆解成了按序排列的wem集。然后点击Export Wems导出wem集,随便导出到一个空文件夹内即可。
然后会提示你是否按名字导出,选是则文件名是上图的Wem Name,选否则文件名是Wem ID。个人更推荐选否,这样以Wem ID命名文件更直观。
这样该pck内包含的wem集就都导出到文件夹内了。
3.使用foobar2000找到要替换的bgm对应的wem。
先说在前面,wem文件需要手动添加foobar2000启动才能打开,也就是在右键-打开方式里选择foobar2000。
其次需要额外安装一个名为“foo_input_vgmstream”的插件后,foobar2000才能播放wem。
(当然,这里如果你将wem转ogg,再用其他的软件播放也可以。)
启动foobar2000,将导出的wem集拖进去,界面如下:
然后点击播放按钮,将wem集从上到下全都听一遍。当然并不是让你把时长听完,如果没听到炎火村bgm的要素就立马下一首。
最终我们将炎火村bgm锁定在以下两个wem之中,Wem ID分别为543220623和575635346,请记住它们。
为什么会有两首曲子?这是因为炎火村bgm是由纯音乐轨和纯人声轨两个音轨合成而来的,其中前者是纯音乐轨,而后者是纯人声轨。那么替换的思路就是换掉纯音乐那一轨,然后将纯人声轨静音(也就是换一个无声轨)。
到此第一步流程结束。
顺便补充一句,如果有多个pck文件都包含某一首bgm,那么这些pck内的wem都要替换,它们的loop也都要修改(后面再说)。比较典型的就是任务完成的bgm,以下4个pck都包含这首曲子。
第二步:替换bgm并导出替换后的pck
一.使用工具:
1.Wwise(下载:https://www.audiokinetic.com/zh/products/wwise/)
很多游戏开发都在使用的一款音频编辑软件,性能十分强大。下载方法比较特殊,需要先注册账号,然后下载它的launcher,最后通过launcher安装Wwise软件本体。
2.随便一个音频剪辑or视频剪辑软件
诸如PR、AU、Camtasia 9、会声会影、必剪之类的自己去找。
3.RingingBloom(同上)
二.操作步骤
1.将你准备的bgm导入到任意的剪辑软件中,并适当地进行剪辑。
首先要调整它的音量,不然替换后会把耳朵震碎。
其次最重要的,将它剪辑成和要替换掉的bgm一样的时长(或差不多一样的时长),这会方便我们后面修改它的loop。
剪到差不多的时长只是为了方便修改loop数据,实际上长度不匹配也没关系的,只要曲子至少包含一个循环节即可。
通常来说,游戏的bgm都会自带循环节,所以你不用担心剪过头的问题。
这里以边境村bgm为例,炎火村bgm时长为2分13秒,所以我们也将边境村bgm剪辑成差不多的时长,从0开始剪到2分12秒差不多了。(另外别忘了再准备一条无声轨也剪到差不多的时长)
剪辑完成就导出bgm,最好导出为wav格式的音频文件,待会儿使用Wwise的时候更方便。如果导出的是mp3格式,也可以用格式工厂之类的软件转成wav格式。总之我们需要的是wav格式的bgm。
2.使用Wwise将wav格式的bgm转换为wem格式。
启动Wwise,首次启动会让你新建项目,按照普遍软件的流程走就行了。我这里是已经有项目了所以可以直接点进去。
新建项目后,你会看到一个巨复杂且全英文的界面。Don't worry!你只需关注左上角这一栏项目管理器即可。依次展开ShareSets、Conversion Settings、Default Work Unit标签,直到找到Default Conversion Settings选项。
双击Default Conversion Settings选项,会弹出一个小界面。你会在它的左侧看到平台为Windows,在右侧点击Format的下拉菜单并选中Vorbis后,即可关闭这个小界面。
重新关注左上角的项目管理器,回到Audio页面,你会发现最下方的Interactive Music Hierarchy标签下多出了Default Work Unit选项,它就是我们要编辑wav的地方。同时到此Wwise的基础设置已经设置完毕了,之后也不用再走前面繁琐的流程了。
右键点击Default Work Unit选项,选择Import Audio Files,也就是导入音频文件。
会弹出一个小界面,点击左上角Add Files添加wav文件或直接拖进来,然后点击右下角Import将wav文件导入到Wwise中,之后再点一次Import即可。
然后展开左上角的Default Work Unit选项,你会看到添加的wav文件已经在下面了。点击这个文件,右侧会出现调试界面,可以试听也可以调节音量。在这里你可以第二次调节bgm的音量,而且可以看到具体的峰值。
当你觉得音量OK了,就右键点击wav文件,选择Convert,也就是转换。
在弹出的小界面中看到上面是Windows平台,也就是我们最开始设置的平台。再点一次下面的Convert,就完成了对wav文件的转换。
现在你拥有了自己的wem文件,它转换后一般会保存在WWISE\WwiseProjects\你的新建项目\.cache\Windows\SFX\路径下,如图所示:
3.回到RingingBloom中替换bgm并导出pck。
我们回到RingingBloom中,选中炎火村bgm对应的两个Wem ID,并点击上方的Replace Wem,用转换后的wem替换掉它。
这里暂且只展示纯音乐轨的替换,替换后可以看到Wem Name变成了你自己的bgm名字。然后点击上方的Export导出替换后的pck文件。
导出pck时最好在其他路径重新创建一个文件夹,内部路径仍然是解包时的natives\STM\streaming\Sound\Wwise\,文件名也同样为bgm_lb_ev_str.pck.3.X64。如果覆盖原文件则可能会导致文件出错没有声音。
导出后你会发现有一个附带的文件,文件名称多了一个扩展名“nonstream”,大小只有2KB。该文件即为解包时放在natives\STM\Sound\Wwise\路径下的同名pck文件,该文件会保存pck中每个wem的标签信息。
所以要把这个2KB的pck挪到natives\STM\Sound\Wwise\路径下,然后手动删除“nonstream”的扩展名。警告你“修改文件将导致不可用”不用管它,点确定就行。
到此第二步流程结束。
第三步:找到bgm的循环节
一.使用工具:
1.Audacity(下载:百度)
一款轻量级的音频编辑软件,主要是用来寻找循环节并贴上具体的时间标签,对接要修改的loop数据。最好下载中文版的。
二.操作步骤
1.使用Audacity寻找循环节。
启动Audacity,左上角依次点击文件、打开,导入自己准备的bgm的wav文件(或mp3文件),你会看到整个音频轨都展示在你的眼前。
接下来你需要从头到尾仔细听一遍bgm,来寻找循环节。一遍不够就多听几遍,鼠标点击上方的时间刻度也可以直接跳着听。我们的目的是要找到能让bgm无缝切换的循环始末点。
当你确定循环节的时候,鼠标点击时间刻度并按住,然后左右拖动一下即可出现一个循环框,如下图。
在这个框内我们的音轨会不停地进行循环,拉动左右的刻度线即可调整循环始末的位置。
这里我们大致确定了边境村bgm的循环节为00:06到02:06之间。如果觉得切换仍然有瑕疵可以拉长音轨进行精细调节。
2.使用Audacity添加时间标签并导出。
找到循环节后我们要将音轨的各段贴上标签来区分。上方依次点击轨道、增加新轨道、标签轨,会在音轨底部增加一个单独的标签轨。
先在标签轨中随便点一个位置,然后在上方依次点击编辑、标签、为选区添加标签,会在标签轨中创建一个标签框。
拉动标签框左或右的箭头可以调整位置,点击白色小框可以给标签命名。
我们一共需要添加3个标签框,分别对应音轨的入场、循环和多余(这里分别命名为intro、loop、extra)的段,将它们拉到这3个段对应的始末点,如下图所示。如果觉得标签对应位置不精准也可以拉长音轨进行调节。
当你确定了这些之后,左上角依次点击文件、导出、导出标签,即可将各段对应的始末时间导出为一个txt文件。
打开txt文件你会发现这些数字带的尾数很多,因为这是以秒为单位导出的标签,而我们要修改loop数据需要以毫秒为单位修改,所以这里的小数点要统一向右移动3位。
到此第三步流程结束。
第四步:修改bgm的循环数据
一.使用工具:
1.010 Editor(下载:百度)
十六进制编辑器,几乎可以用来编辑任何解包文件,做过mod的人肯定不会陌生。最好下载中文版的。
2.计算器(认真的)
二.操作步骤
1.使用010 Editor打开bnk并定位要修改的loop数据位置。
bgm的循环数据保存在natives\STM\Sound\Wwise\路径下的同名bnk文件中,以炎火村bgm为例的话则为bgm_lb_ev_str.bnk.2.X64。
启动010 Editor,依旧是左上角把bnk文件导入进来,你会看到一堆一堆的十六进制数据。
虽然可能有些头疼,但别气馁,整个流程马上就要结束了,再忍忍!
首先我们要在这个bnk中搜索要修改的wem的ID。上方找到查找按钮(图标为放大镜),在下方弹出的搜索界面中将变量类型改为无符号整型(ui32),然后输入炎火村bgm的Wem ID 543220623并回车。
你可能会搜索到很多个相同的Wem ID,比如这样:
这里面的数据结构我们暂且不清楚,但显然不会让你把65个ID对应的数据都改一遍。实际上这65个ID中只有前6个ID是我们要找的数据。为什么这么说呢?
此处要给一个结论,loop数据由一段十六进制数据组成,而每一段的开头为2个挨着很近的Wem ID,距离不会超过1行。所以稍微多看一眼这65个Wem ID,就会发现只有前6个ID是互相挨着的,每2个ID为1段,共3段。后面的ID彼此相差很远就并不是我们的目标。
那么我们要找的loop数据就是这3段啦,你可以在搜索结果中点击它们从而跳转到对应的16进制位置。
2.给每一段loop数据添加书签。
以第一段loop数据为例,也就是上面3D88h和3D99h处的Wem ID。鼠标选中第一个ID对应的十六进制数据,上方找到添加/编辑书签按钮(图标为书签),在弹出的界面中将类型改为无符号整型(或带符号整型),名称这里我命名为Wem ID1,颜色可自选以方便区分。紧挨着的第二个ID也如此操作,命名为Wem ID2。
添加完两个ID的书签后,你可以在右侧的工作区找到已经添加的书签。
回到十六进制数据中,这里再给一个结论,每2个紧挨着的Wem ID后面都要紧跟着4个双精度的数据。
第一个数据在Wem ID2后相隔4个"00",长度为8个“00”(为了方便理解,这里就不用术语表示了),它代表这一段音轨的负开始时间。点击添加书签,类型改为双精度,命名为Start Point Negative,颜色也换一下。
第二个数据紧挨着负开始时间,长度为8个“00”,它代表这一段音轨的正开始时间。同样添加书签,命名为Start Point Positive,前景颜色换一下。
第三个数据依旧紧挨着上面往下排,长度为8个“00”,它代表这一段音轨结束时整条音轨还剩余多长。添加书签,命名为Total Remaining。
第四个数据接着往下排,长度为8个“00”,它代表整条音轨的长度。添加书签,命名为Total Length。
到此你可以很直观的靠颜色区分这些数据了,它们的变量值也都列在了右侧的书签中。
除了这些数据之外,我们还需要额外找到一对儿数据,它们通常会在这些数据下面,紧挨在名为“48 D6 BB 5B”或“HÖ»[”的十六进制数据后面,长度依旧各为8个“00”。
它们代表着这一段音轨的长度。添加书签,命名为Section Length后是这样的:
到此为止,整个一段的loop数据就算添加好书签了,一段内共包含8个数据。同时也要熟悉它的数据结构(如下图),这样以后再修改时就不用再命名了,光看数据就知道是哪个了。
别忘了我们一共有3段loop数据要改,后面的也是如法炮制,最后的书签结果是这样的:
3.区分各段数据所代表的音轨段。
如你所见,我们一共标记了3段loop数据。按照正常逻辑来讲,一首bgm在游戏中应该只分为入场和循环两段,而多余段是不会被播放的。那这多出来的一段loop数据是什么呢?
这里给结论:这3段loop数据分别代表静音段、入场段以及循环段。静音段顾名思义就是bgm在该段内不会播放,是静音的。它通常会放在入场段前面,长度一般会很短,便于给bgm入场添加一个“延迟”。(比如任务完成后的bgm并不是马上入场,而是延迟个1秒左右)
我们可以通过书签表中的Start Point Positive来区分各个段,时间最早的就是静音段,时间最晚的就是循环段,而处在中间的就是入场段了。在这个例子中,静音段是ID5、6,入场段是ID3、4,而循环段就是ID1、2对应的数据了。请注意这些数据的单位是毫秒。
由于前面通过Audacity导出的标签轨只有两段(intro、loop段,用不到extra段),所以需要手动为标签轨添加一个静音段。你可以按照bnk文件中给出的静音段数据来添加,也可以自行根据音轨状况添加。
这里仍以炎火村bgm为例,静音段开始时间0.000,结束时间384.615,我们就按这个数据来添加,同时也别忘了将intro段的开始时间往后延迟。
这样我们就得到了完整的标签轨。
4.计算自己的bgm的loop数据值。
知道了这些数据代表的含义,我们要把标签轨的数字稍微“加工”一下。
每一个数据的公式如下,只要对号入座填入数字即可,3个段都要分别计算。
- Start Point Negative: -[段开始时间];
- Start Point Positive: [段开始时间];
- Total Remaining: [extra段结束时间 或 音轨总长度] - [段结束时间];
- Total Length: [extra段结束时间 或 音轨总长度];
- Section Length: [段结束时间] - [段开始时间]。
放到边境村bgm的例子中即为下图所示:
5.替换对应段的数据值。
之后只要将上图中的数据值填入bnk中对应段的数据值处即可,完成后应该像下图这样:
全部修改完成后,左上角点击另存为,保存文件到mod包内的natives\STM\Sound\Wwise\路径下,文件名不要改哦。
6.(曙光变动)修改wem id前的一个字节。
将上面每一对儿wem id前面紧挨着的一个字节(下图红圈所示)“01”改为“02”,否则在游戏中bgm会全部静音。
到此第四步流程结束。
bgm替换效果展示
恭喜你!到此你已经完成了替换bgm的全部流程,现在只剩安装mod,然后进入游戏测试效果了。
边境村bgm替换炎火村bgm的演示视频:
B站链接:https://www.bilibili.com/video/BV1FS4y1k73P?share_source=copy_web
本教程到此结束。
我的B站id:不太亮的诸葛亮