骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买霸主CDKEY 购买战帆CDKEY
查看: 74|回复: 0

[霸主其他] Homesteads Reloaded建立家园+ Lipotty Troops真实军队大修,补丁

[复制链接]

1

主题

0

回帖

0

积分

平民

Rank: 1

UID
3901999
第纳尔
2
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2026-10-7
鲜花(0) 鸡蛋(0)
发表于 6 天前 | 显示全部楼层 |阅读模式

Homesteads Reloaded(建立家园)+ Lipotty Troops(真实军队大修)崩溃的排查与解决
一、问题现象
游戏版本:Mount & Blade II Bannerlord e1.4.7
MOD1:Homesteads Reloaded v1.5.8(建立家园重制版)
MOD2:Lipotty Troops v3.3.1(真实军队大修,简称 LRM)
同时开启这两个 MOD 后,进入家园、打开建筑菜单、切到 Defense(防御)标签页时,游戏瞬间闪退(CTD),且没有报错日志。单独开启 Homesteads Reloaded 则完全正常。

二、排查过程(含走过的弯路)
1. 最初的方向错了
一开始根据经验,怀疑是"Homesteads 遍历写死的兵种 ID,LRM 删兵种后 GetObject 返回 null 导致空指针崩溃"。于是反编译了 HomesteadsReloaded.dll,结果发现:这个 MOD 的 null 判断极其充分,所有 GetObject、兵种遍历都判了空,根本不是空指针问题。

2. 用崩溃日志定位真凶
查看 C:\ProgramData\Mount and Blade II Bannerlord\logs\ 下的日志,发现 Homesteads 自带的 PrefabCrashGuard 写了关键一句:

Text
PREVIOUS SESSION CRASHED building 'homestead_war_cart_straight'
真凶是战车工事(homestead_war_cart_straight)这个防御建筑,不是兵种。

3. 又走了一段补丁弯路
先后尝试用 Harmony 补丁 Hook 战车工事加载、禁用建筑预览、拦截 SceneView 等,结果补丁反而引入了新的崩溃点(scn_born_baby 婴儿背景、SceneView 空指针等),越修越乱。最后才想通:与其用补丁兜底,不如直接从数据层面删掉这个崩溃建筑。

4. 最终定位
战车工事的 prefab 里引用了 bd_cart_wheel_a(一个车轮 prefab),但这个 prefab 在整个游戏目录里根本找不到对应的 XML,怀疑是 BirthAndDeath 或引擎内建、在当前 MOD 组合下缺失所致。

三、最终解决方案(简单干净)
直接编辑 HomesteadsReloaded 的建筑数据文件,删掉 5 个"战车"系列建筑。

文件路径:

Text
Mount & Blade II Bannerlord\Modules\HomesteadsReloaded\HomesteadsPlaceables.xml
删除以下 5 个 <Placeable>...</Placeable> 节点(以 <prefabName>homestead_war_ 开头的):

prefabName        显示名
homestead_war_cart_straight        War Cart Wall(战车墙)
homestead_war_cart_angled        Angled War Cart(斜角战车)
homestead_war_wagon_stairs        War Wagon with Stairs(带楼梯战车)
homestead_war_wagon_tower        War Wagon Tower(战车塔)
homestead_war_banner_big        War Banner(战旗)
删完后,Defense 分类里不再有战车工事,但其他防御建筑(箭矢桶、石堆、木墙、瞭望塔、路障、训练场、弩炮等)都还在,防御页照常能用。

四、经验教训
别盲目相信"崩溃原理描述"。一开始的"遍历兵种空指针"推测是错的,实际是建筑 prefab 的问题。一切以日志、dump 为准。

原生崩溃 vs .NET 异常要分清。原生崩溃(Access Violation,异常码 0xC0000005)不会被 C# 的 try-catch 捕获,所以纯靠 .NET 补丁兜底经常无效。

改数据(XML)比 Hook 补丁更可靠。补丁是在运行时拦截,容易引入新崩溃;直接删掉问题建筑,是数据层面一次性解决,不碰游戏本体、不误伤其他 MOD。

崩溃点可能不止一个。补丁改了几轮,崩溃点从"战车工事"转移到"婴儿背景""SceneView"等,容易让人误以为"还有新崩溃",其实部分是补丁自己搅出来的。

最小复现很重要。关闭无关 MOD、只留冲突的两个 MOD 测试,能快速排除干扰。

五、注意事项
修改前建议备份 HomesteadsPlaceables.xml。
如果你之前为了排查装了补丁类 MOD,记得关掉,避免补丁的副作用掩盖结果。
此方案会牺牲战车工事这一种防御建筑(它本来就是临时路障,功能价值不高),换取稳定运行,属于"削减功能换稳定"的取舍。
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2026-10-20 04:47 , Processed in 0.078977 second(s), 18 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表