骑马与砍杀2中玩家可以自行替换背景音乐,部分玩家可能不清楚怎么操作,下面一起来看看背景音乐修改教程吧。
关键词索引:背景音乐修改,bgm修改,背景音乐,bgm,修改,背景音乐替换,bgm替换,替换。
骑马与砍杀2有很多好听的背景音乐,有的是大地图的音乐,有的是战斗时的背景音乐,这个教程就是教你如何修改背景音乐。
首先先介绍一下相关文件路径,本次教程需要用到的路径在游戏目录下的Mount & Blade II Bannerlordmusic文件夹里,(图一)
而音乐的音频文件则在图二所示的位置,也就是图一里的PC文件夹里,(图二)
这些ogg格式的文件就是游戏的音频文件,可以用酷狗或者qq音乐之类的音乐播放器打开试听一下。个人超级喜欢战斗中bgm有combat_a和PaganCombatA,超赞!比较讨厌且出现的最多的bgm就是“battle_medium”,本文就介绍如何把原本多次出现的battle_medium换成我超喜欢的combat_a。
如果你问我为什么有的bgm会拆成这么多小片段,我只能说你对游戏的bgm了解的还是比较少的,除了像开头曲那样无论怎么打都不会变的固定bgm,像战斗时的bgm,你如果仔细聆听,你会发现,bgm有时候会反复重复某片段,有的时候会直接跃向高潮,为什么会有这个现象?仔细聆听的话,不难发现,战斗的bgm变化是根据战斗进行的程度和气势比进行变化的,这就导致了战斗中的音频文件需要拆成很多部分,根据当前的程度和气势比播放或者重复播放对应的bgm片段,这是很多游戏都采用的bgm机制。
介绍完了相关知识,来说说原理吧。一场战斗,需要经历以下的步骤:先由某游戏系统文件判断当前开战局势,选出适合的bgm(比如我讨厌的battle_medium就是一种初级的开站局势,应用范围极广,自然出现的多;小战场则会选择small_battle_a之类的),然后系统拿着选出的bgm进入某个类似于“指挥数据库”功能的文件寻找对应的bgm,读取此bgm的相关的播放参数,然后拿着相关参数根据战斗时的战况播放参数相符的bgm。这就是bgm播放的全过程。
接下来介绍一下相关的文件。按照流程来看,首先就是判断开战局势的“游戏系统文件”,很遗憾,楼主能力有限,未能找到此文件,但是并不妨碍我们修改替换播放的bgm。既然这系统文件找不到,那我们从下一步来行动,那个类似于“指挥数据库”的文件,这个文件我找到了,就是music文件夹里的那个“soundtrack.xml”,我们就从这里入手。xml文件可以用记事本打开与编辑,打开后密密麻麻的英文可能会劝退一部分人,但是难不倒楼主,我们来看看长什么样(图三)
本次教程就拿我最讨厌的battle_medium换成combat_a来说事。先找到combat_a的部分,(图四)
我们来介绍一下关键的代码。combat_a的bgm参数部分开头起始于“(主题)”,结尾结束于“”,不难发现,所有的代码都是“有始有终”的,由<***>开头,必定以结尾,两边之间的就是***的内容。开头的theme就是各个bgm的大主题团体,theme间的所有内容都是此bgm的指挥参数内容。接着往下看,ID内容是36,这是主题的编号为36,。ThemeTypeInt是主题类型定义为3类,什么意思我们不需要知道,别乱动就行了。下面的吧啦吧啦都是不重要的一些配置,一样不用动,直到次重点“Group(团)”。group是theme的下属分类,group囊括的内容全是分割成许多部分的bgm片段。在group的name后面,就是重要的segment部分了,从这里开始都是对各个片段的参数数据库了。图里可以看见combat_a_01_10prc这个片段的ID是35,也就是片段ID为35。之后就是强度参数Intensity,这就是我之前说的程度与气势比所参考对照的一个参数。下面又是吧啦吧啦的,直到下一个重点是ThemeId,(图五)
这表示此片段是属于ID为36的主题的,而主题编号为36的正是前面说的。接下来是Serialization_ManuallyBlockedSegmentIds,这一大串的什么意思?可以去百度一下,大致意思就是阻隔的意思,这怎么理解?可以这么理解,播放过此片段后,禁止跳往下列ID的片段,下面的一堆数字就是禁止跳往的对象ID列表。再下一个就是Serialization_ManuallyLinkedSegmentIds,(图六)
意思大概就是引导跳往目标片段,也就是接下来可以跳往的对象片段的ID列表。系统拿到这些数据后,就会结合当前的进程与气势比进行选择跳往的片段。
相关关键代码已经介绍完毕,我们来看看如何实现把所有播放battle_medium的场合全部换成播放combat_a。
在开始之前,郑重提醒各位,切记!!!不要忘记备份原始文件!!!
首先,我们可以新建一个txt记事本文件,把combat_a的相关内容复制进去,从theme前的开头空格处一直到/theme结尾处(注意,尽量一个空格也不要少!),这算是获取了参数。之后我们找到要替换的对象battle_medium的部分,在新建文本文档里复制的内容,从后的36开始到主题结尾,全部复制,替换battle_medium中10到的内容。为什么不替换后的Battle Medium?因为要保留这个主题的名字,系统在判定使用Battle Medium时,需要从这里找到对应的对象,自然要留着名字给系统找。
这算是把大致内容生搬硬套过去了。如果这时候打开游戏,你会发现游戏打开直接崩溃闪退。原因出在哪里?我们直接把一个东西的所有参数生搬硬套过去了,也就是说,同样的ID有的出现了2次,产生了冲突,游戏启动时检查游戏完整性时发现了冲突。之后我们打开备份的原始文件,找到被替换的battle_medium的内容,将冲突的ID改成替换前原来的ID,需要改后的**,每个片段后的,每个片段的前的,以及接近结尾的**(这是序列代码,就是排个序,也改一下)。除了第一个后的**和接近结尾的**,中间两项每个片段都要改一下,改的时候会发现,Battle Medium的片段数量比combat_a片段数量要多,这样会空出来一些ID没有使用,这样没关系,不影响正常使用。
改完以后进游戏,发现没有启动就闪退了,是不是以为这就结束啦?事情没有那么简单。进入游戏后找势均力敌的敌人开打,如果原本开始播放Battle Medium的场合,的确开始播放combat_a了,但是播放了一段以后就没有背景音乐的声音了,这是怎么回事呢?想想我开头介绍的,里面是不是有“禁止跳往下列ID的片段”和“引导跳往目标片段”?想到这里,一下子明白了,生搬硬套导致播放被替换的片段(battle_medium)时引导跳往另一个原型theme里的片段(combat_a),跨theme播放片段了。知道了原因,我们去调整引导的ID列表。打开记事本的“编辑”-“替换”,输入***(是原来的combat_a的每个片段的ID)替换为***(上一步我们修改后的每个片段的ID),例如前者combat_a_01_10prc片段的ID是35,后者Battle_Medium_01的片段ID为163,然后把数字代入前面的***,点全部替换,接着替换36-164,37-165……直到最后一个50-178。为什么要输入***而不是直接换数字?因为直接换数字会误换所有含有此数字的对象。全部替换完以后,再次进入游戏,打架,发现这次终于完全没问题了!事情到这里总算告一段落了。
当然,我是用我替换的过程来阐述原理与思路,各位可以自行体会与发挥,替换游戏内的bgm,甚至可以自己配bgm,这里就不一一叙述了。无论怎么替换与修改,切记!记得备份!!!