原贴作者:骑砍中文站骑友@cnedwin123
论坛原贴:
https://bbs.mountblade.com.cn/thread-2063714-1-1.html
其实这是一个技术 八卦贴,如果你感兴趣的话,可以看下去。
大家都知道,从1.2版本开始我才有空学习如何制作MOD和汉化,比较幸运的是NexusMods和Github上面很热闹,而且很多大神都在Bilibili上有视频,还有 纸篓 大神耐心分享,这位一天到晚都在肝。
因为我是个初学者,很菜的那种,只有一些编程基础和对骑砍疯狂的热爱,就我上手这2周,整个游戏频繁的更新和Mod开发圈子的分分合合,造成了几次都因为Mod兼容性问题进不去游戏和读取不了存档。
我写过的一些帖子(请到原贴查看):
【整理】e1.4.0 Beta 稳定可用Mod 汉化 排序 网盘下载(最后更新0509 17:00)
实测e1.4.0 Beta 更新内容,旧存档复活,大部分Mod恢复正常了(0508 22:30更新带附件)
实机验证更新10M后,ModLib/Bannerlord Tweaks/DCC等MOD的兼容性问题的解决进度
【警告】5月7日凌晨官方1.3.0Beta更新和ModLib/BannerlordTweaks/DCC兼容性崩溃
1.3.0Beta版 教你怎么安排稳定不崩溃不卡死的MOD排序列表【0506 21:50】
到底是什么原因导致我们玩自己喜欢的Mod会报错、崩溃、卡死呢???
其实主要原因就三个:
1、T社频繁更新,修改数据结构和一些底层代码。例如角色相关的stringid的一些问题,很多对象都跟stringid挂钩,但是他们总是说改就改,所以Mod新做的Character对象,比如Wanderer、Player's children、Noble很大概率会冲突。
还有就是物品库的数据结构,这两周改了2次,新做的装备和铁匠铺Mod,经常一个很小的问题要排查半天。
2、很多Mod作者不老实,喜欢拿来主义,功能模块重复。有很多Mod是非常酷的,小巧灵活,但是他们做着做着,就会把别人的某一个功能“抄过来”。
比如外交修复就在上个版本拿心灵感应作者的代码,加了个发消息,结果导致两个Mod有冲突,这个还是轻的,只是按钮不显示了,有的更夸张的直接导致闪退,经常要排查到底是哪里出了问题,一堆Mod查的脑仁疼。
3、ModLib和MCM神仙打架,玩家遭殃。这个是我今天重点想跟大家八卦的,因为现在所有的Mod只分成3种,(1)纯绿色的小插件。(2)基于ModLib开发的。(3)基于MCM开发的。
ModLib和MCM都是GUI和交互库,就是给开发Mod的人调用菜单、弹窗和保存设置的通用库。
他们俩经常互相不兼容,甚至要干掉对方,然后再互相妥协,再更新,再不兼容,真是让人挠头。
关于ModLib,如果你感兴趣可以看看它的Wiki :
https://github.com/mipen/ModLib/wiki
最早NexusMod上有一个日本的大神Mipen,先开发了Modlib,大家都在用的Bannerlord Tweaks也是他写的。后来成为主流的大型Mod的菜单库,很多Mod依赖ModLib开发。
不过这哥们不久后,4月18日发布1.0.1后就玩消失了,千呼万唤不搭理大家,5月1日临时更新了一个支持e1.2.1版本的1.0.2 源代码:
https://github.com/mipen/ModLib/releases
这期间无数的作者找到他,他都不回应,另一个大神wfswanepoe就做了一个第三方修复的版本来支持Beta 1.3,地址是:
https://github.com/wfswanepoel/ModLib
中间还发生了整个Nexusmod开发者的分裂,一部分继续支持Modlib,另一部分因为作者不更新改支持MBOption,这两个互相不兼容,菜单会卡死,比如外交修复的那个Mod。
很多还在用ModLib的开发者,就基于这个第三方的ModLib继续开发,例如鼎鼎大名的Tournament XPanded和Detailed Character Creation
纸篓大神,也基于这个库,修复了Bannerlord Tweaks做出1.2.1版本,支持结婚和生孩子等设置。
5月7日凌晨,在T社给Beta1.3.0热更新了10M内容后,消失的Mipen大神又冷不丁的出来更新了最新支持Beta1.3的ModLib 1.3.1和Bannerlord Tweaks 1.3.2。
他发的这个ModLib 1.3.1不向下兼容那些基于第三方修复的Mod和汉化版,而且更新的BT 1.3.2功能还没有第三方做的1.2.1功能多。
大家只能等第三方修复的wfswanepoe,更新他的Modlib,或者所有的作者都更新Mod来支持Mipen的新版本,这哥们实在太任性了!
前天,我发现wfs大神的Github上删除了他的三方修复ModLib项目,仔细一看才发现,原来Mipen终于同意让他加入,成立了一个小组。
之前Mipen在Github上抱怨,说自己可能后面没空玩骑砍了,打算放弃ModLib,wfs说自己时间很多,愿意帮他一起维护,他也不搭理人家,这次终于改变主意。
由Mipen负责主干版本的升级,wfswanepoe负责Beta版本的更新,这对我们来说,也算是个好事吧!
再说说MCM,全称是Mod Configuration Menu,字面意思很清楚,跟ModLib一样是第三方Mod可以调用的设置保存和菜单基础库。
它的Wiki地址:
https://github.com/Aragas/Bannerlord.MBOptionScreen/wiki/Comparing-to-ModLib
MCM非常有名,很多年前就是一些游戏的Mod开发的基础菜单库,比较知名的比如辐射4,所以有很多忠实拥戴者。
骑砍2的版本是 Aragas大神发起,另外还有三个成员共同维护。
它一开始叫MBO,全称MBOption Screen,跟ModLib井水不犯河水。
但是自从4月中旬Mipen大神消失,没人维护ModLib之后,他就出了一个兼容性的版本2.0。
这个2.0,既可以独立存在,也允许你通过打开 OverrideModLib 来覆盖ModLib,让一些旧的Mod能够继续适配骑砍的新版本。
说白了,他的野心就是既要兼顾自己的新老版本,还想把ModLib也兼容了。
所以这段日子里大家都是先加载ModLib Beta 1.3,再加载MCM2.0.10,并且关掉OverrideModLib,其实相当于把MCM当成旧的ModLib。
以此来实现,新的基于ModLib Beta的Mod和老的基于ModLib早期版本的Mod都可以用,而完全基于MCM开发的也可以用。
这期间,大家都会有两个Mod Optione菜单,一个是新的ModLib的,一个是MCM的,很多人都觉得奇怪,现在你明白了吧?
但是5月10日,ModLib和MCM的新的战争发起了,所以我到现在还没开始更新帖子,有这个时间写八卦,我只能等等他们了。
最新版本的ModLib Beta 1.4里面,修改了一些类的命名空间,这不仅造成了又一次不向下兼容,也让MCM没法跟他共存。
Aragas大神,昨天半夜,发布了MCM 3.0 Beta,并且连续更新了7次(把我吓尿了),努力的想拥抱ModLib的旧版本Mod。
一句话,你可以理解最新的3.0.10的MCM,他是全兼容 ModLib旧版本 MBO旧版本 Modlib Beta 最新的MCM 所有的MOD。
只是基于版权问题,Modlib Beta的基础库还要留着,否则只装MCM就可以了。
5月11日,MCM发起了更加猛烈的攻击,直接推出一个3.0.11版本,兼容全版本的Mod,而且一下在Mod列表里占用三个位置。。。
感兴趣可以去看看凶案现场:
https://www.nexusmods.com/mountandblade2bannerlord/mods/612?tab=posts
目前,上述两个工具最新的用法:
1、安装ModLib Beta 1.4
2、安装Mod Configuration Menu Beta 3.0.11
中文站下载站地址:
https://bbs.mountblade.com.cn/download_125.html
跟之前不一样的是,这次要把MCM放在ModLib上面加载,就是先加载MCM再加载ModLib,并且勾上Override Modlib Optione Screen菜单覆盖。
如果找不到你熟悉的Mod Option菜单了,别慌,现在在游戏的系统设置里,勾掉 Use Standard Option Screen选项也可以恢复以前的习惯。
你只要把Mod加载顺序改成这样:
Native 核心模块(除了游戏引擎之外的最核心的内容)
Sandbox Core (沙盒地图的底层库)
Sanbox (沙盒地图和战场)
CustomerBattle (自定义战斗相关的)
StoryMode (战役相关的)
Mod Configuration Menu(MCM) Beta
MCM Beta MBO Compatibility
MCM Beta ModLib Compatibility
ModLib
其他Mod...
你也可以参考的我的Mod加载顺序:
这样你就能同时运行:1、基于老的ModLib开发的Mod
2、基于新的ModLib Beta开发的Mod
3、基于MBO和MCM开发的所有Mod
而且只有一个Mod Option菜单。