UE4SS项目在《First Dwarf》游戏中的FText构造函数AOB扫描问题分析
问题背景
在UE4SS项目(一个用于Unreal Engine游戏脚本扩展的工具)与《First Dwarf》游戏(基于Unreal Engine 5.4.2开发)的兼容性测试中,发现了一个与FText构造函数相关的技术问题。当使用UE4SS的不同版本(包括3.0.1、zDEV-UE4SS_v3.0.1-137及最新构建版本)时,游戏在Lua扫描阶段会出现崩溃现象。
问题表现
测试过程中观察到的具体现象包括:
- UE4SS 3.0.1版本直接报告"Engine Version not supported"并退出
- 其他版本能够启动Lua扫描,但会立即导致游戏崩溃
- 所有测试版本都需要自定义的FText_Constructor.lua文件才能运行
技术分析
通过分析提供的日志和崩溃转储文件,可以确定问题的核心在于FText构造函数的AOB(Array Of Bytes)模式扫描失败。AOB扫描是UE4SS用来定位游戏内存中特定函数的技术手段,对于不同游戏版本或编译选项,这些字节模式可能会发生变化。
在《First Dwarf》这个特定案例中,原始提供的AOB模式与游戏实际内存布局不匹配,导致扫描失败并引发崩溃。这种问题在UE4SS与较新Unreal Engine版本(如5.4.2)的适配过程中较为常见,因为引擎内部实现可能有所变化。
解决方案
问题最终通过修正FText_Constructor.lua文件中的AOB模式得到解决。修正后的AOB模式能够准确匹配《First Dwarf》游戏中FText构造函数的内存特征,使UE4SS能够正常完成初始化过程。
对于遇到类似问题的开发者或用户,建议采取以下步骤:
- 使用x64dbg等调试工具分析游戏内存
- 确认目标函数的实际字节模式
- 更新自定义配置文件中的AOB模式
- 逐步测试以确保兼容性
经验总结
这个案例展示了UE4SS项目在实际应用中的几个关键点:
- 不同Unreal Engine版本可能需要特定的适配工作
- AOB扫描的准确性对工具稳定性至关重要
- 自定义配置文件是解决兼容性问题的有效途径
- 调试工具与内存分析技术在问题诊断中发挥重要作用
对于希望将UE4SS应用于其他UE5.4.2游戏的开发者,这个案例也提供了有价值的参考经验。建议在遇到类似问题时,优先考虑检查并更新相关的AOB模式定义。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



