【攻略精选】再次深谈1.4.x版本如何制定稳定不崩溃的Mod排序规则

 原贴作者:

骑砍中文站大神@cnedwin123

参与讨论,请到论坛原贴:

https://bbs.mountblade.com.cn/thread-2064786-1-1.html

 

 

 

之前站站推送过作者的一些帖子,例如:

【MOD精选】骑砍2发售第2月,复盘Nexus全球最火Mod发展趋势+下载分享

【攻略精选】解决最新版本ModLib与MCM的新旧Mod兼容性问题



今天作者再深入讲讲,到底怎么排序Mod才不会崩溃,希望对大家有启发,以后可以帮助其他朋友接触加载崩溃和冲突崩溃问题。


第一,我们要了解一下这个游戏的一些技术机制:
游戏刚开始启动,
1,首先是启动底层的3D引擎:\Mount & Blade II Bannerlord\bin\Win64_Shipping_Client\ 

下面那些不带TaleWorlds开头的DLL
2,启动一些游戏的基础模块,比如游戏的基础系统、UI图形界面、声音特效、3D模型、对话、弹窗、等等,\Mount & Blade II Bannerlord\bin\Win64_Shipping_Client\ TaleWorlds.* 开头的DLL
3,启动游戏最核心的模块,Native系统  
4,引入沙盒地图运行库(SandBox Core)、沙盒地图(SandBox)、剧情模式(StoryMode)、自定义战斗(CustomBattle)
5,读取Modules目录里的第三方Mod的DLL和XML(同等情况下,DLL优先于XML)
6,如果模块相同,则后加载的覆盖前加载的,如果模块不同,则自动视为新增模块,这是本游戏最重要的Mod机制


第二,所以你要记住,四个原则:
1,不要用修改到游戏根目录下Bin目录里和官方5个默认模组目录里的文件的任何MOD,这种操作很危险,如果崩溃了,你首先要验证游戏完整来修复。
2,游戏的DLL文件是金字塔型的,先加载基础库(Bin目录),再加载核心模块(默认五个模组的DLL),然后加载功能(独立DLL)类,然后是配置类(XML)。
3,修改到同一个功能的Mod,不冲突就依次加载,后加载的给先加载的做补充,冲突的,后加载的覆盖前加载的。
4,同一个功能模块的DLL,他的参数和配置,都是XML文件,道理同第3点,也是后加载的覆盖前加载的。


第三,如果没崩溃,但是有些Mod的功能不见了,怎么办?
根据第二章里讲的,如果几个Mod都做了同一个功能,我举一个例子:
外交修复(DiplomacyFixes)抄袭了心灵感应(Telepathy)的立即对话功能,同一个位置做了一个按钮,谁加载顺序在下面,就留着谁的按钮。
因为这个功能,其实就是一个百科功能网页的修改,你可以打开他们Mod目录的XML看看就知道了:\GUI\Prefabs\Encyclopedia\EncyclopediaSubPages
相当于两个Mod都改了同一个网页的同一个位置,按照后加载的覆盖先加载的原则,当然是谁在下面留了谁的按钮。

而另一种,不是修改同一个位置的页面和按钮的,而是增加人物的对话选项的。
根据游戏默认的机制,除非他们的id都一样,否则就会增加一个对话选项,我举一个例子:
军火商的对话、娶媳妇的对话、分封贵族的对话,他们加到默认对话之外,只是多了3项,互不冲突。
但是如果id也一样,比如同性结婚和娶任何人(Marry Anyone),这两个Mod同时用,就会有一个功能失效。


第四,加载不了游戏的崩溃是怎么造成的?

第1种情况:

1,你安装的野鸡Mod,代码本身写的就BUG,编译DLL的时候就已经有问题了,你去N网和论坛看看大家怎么说的,删了吧。
2,缺少这个Mod的基础运行库,最常见的就是依赖Mod Configuration Menu和ModLib的,一般启动器会给你个叹号,装上MCM和ML放在上面就好了!
3,有两个Mod,修改了核心模块的同一个功能,ID冲突或者代码冲突了,你只能二选一,删掉其中一个。

第2种情况,也包括DCC,最下面那个Detail Character Creation需要最上面那个!DCC库才能运行,所以作者特别给你改了名字,一个前面加了叹号(排最上面),一个前面加了zz(排最下面)


第六,MCM和ModLib到底什么鬼,怎么装?
Mod Configuration Menu-612-v3-1-7

兼容全系列新老Mod的菜单库,必须放在ModLib上面加载,
ModLib-592-1-4-1

大部分第三方Mod运行都依赖的菜单和弹窗运行库

https://github.com/mipen/ModLib/tree/beta

 

安装包在我的网盘里,链接:

https://quqi.gblhgk.com/s/1845019/ZFgk5BVyw4cWr4o1

查阅码:qWUr2r


顺序是这样的:

 


第六,进度没法读取了,是怎么造成的?

1,你原来装的某个Mod,往存档里写了一些数据,例如保存队伍分组的Fixed Formation,或者某一些添加了新兵种的,你新装的如果没有这个数据,肯定无法读取了,点了没反应,或者马上就崩溃。

2,  现有的Mod冲突了,例如你同时开了Sound The Alarm战争警报和Army Dealer军火商,你读取进度时,虽然不会崩溃,但是马会一直跑。
3,还有一些Mod,会把一些临时数据写在我的文档-骑砍2-Config-ModSetting目录里,如果你丢失了这些文件,或者覆盖了格式不一样的文件,也会是一只跑马。
3,在选择读取进度时,你注意看右上角,那里写着这个存档里面需要的Mod以及他们的版本,如果没有原来的Mod,你就无法读取存档,当然,不往存档里写数据的就无所谓。
4,通常,你在升级Mod后,一样可以读取存档,作者会自动兼容旧版本,所以升级Mod不会坏存档

 

 

第七,玩着玩着,就崩溃了,到底咋回事?
加载游戏没事,读取存档也没事,但是……
在大地图上走着走着,游戏就崩溃了,那肯定是跟每日结算有关系的Mod出问题了。
比如每天结束时,加经验、招兵、升级、消耗资源类型的Mod,去一个一个关掉,排查一下就知道是哪个了。
有一种情况例外,比如原来装了新兵种的Mod,现在删了,能读取进度,但是当你开始游戏时,因为NPC、城镇或者你的队伍里有这种“幽灵兵”,系统读取不到就崩了。
另一种例外的情况是,通过修改游戏原本的文件或者安装Mod,给你造出原本游戏没有的装备,穿在你身上或者背包里,也会同上。


第八,说了半天,到底该怎么排序呢?
已经掌握了前七章的一些规则,我给大家一个实例,是我自己e1.4.1正在玩的进度,装了40-50个Mod,稳定运行两周没崩溃。

 

相关新闻