UE4SS在Palworld游戏中的XInput崩溃问题分析与解决方案
问题背景
UE4SS是一款用于Unreal Engine游戏的开源脚本系统,近期在Palworld(0.1.2.0版本)游戏中出现了严重的崩溃问题。当玩家尝试加载已有存档时,游戏会立即崩溃,而新建存档则可以正常运行。经过排查,发现这与UE4SS的XInput组件有关。
崩溃现象分析
崩溃发生时,系统会抛出"EXCEPTION_ACCESS_VIOLATION"异常,错误地址指向0x000001bc82ad7e78。调用栈显示问题起源于XINPUT1_3模块,随后在游戏对象分配过程中失败。具体表现为:
- 新建存档和角色时可以正常运行
- 重启游戏后加载同一存档必定崩溃
- 删除mods文件夹后可以正常加载存档
- 排除所有mod后,仅保留XInput组件仍会导致崩溃
技术原因
深入分析崩溃日志后发现,问题出在游戏对象初始化阶段。当UE4SS通过XInput注入时,会干扰游戏内部的对象分配机制,特别是在处理UPalInteractiveObjectSphereComponent组件的BeginPlay事件时。这种干扰导致内存访问冲突,最终引发崩溃。
解决方案
开发团队提供了一个实验性构建版本,采用不同的注入方式:
- 使用dwmapi.dll和UE4SS.dll替代原有的XInput注入方式
- 需要完全移除旧版本的xinput1_3.dll文件
- 新版本解决了原有存档加载问题
注意事项
- 某些特定mod(如BetterSellRates)仍可能导致崩溃,需要单独排查
- 如果不需要控制台功能,可以在UE4SS-settings.ini中关闭
- 建议在更新游戏版本后重新测试mod兼容性
总结
UE4SS团队通过改变注入机制成功解决了Palworld存档加载崩溃问题。这展示了开源社区对游戏兼容性问题快速响应和解决的能力。对于mod使用者来说,及时更新工具版本并注意mod兼容性是确保游戏稳定运行的关键。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考