UE4SS(实验性版本)(Okaetsu - RE-UE4SS)

UE4SS(实验性版本)(Okaetsu - RE-UE4SS)

帮助我们在Vortex上提供这个功能,从GitHub移植过来仅适用于兼容的游戏,效果可能因情况而异。这是实验性版本,我正在测试中,但会公开发布让其他人知道。

杂项

虚幻引擎4/5脚本系统

Lua脚本系统平台,C++ Modding API,SDK生成器,蓝图mod加载器,实时属性编辑器以及其他用于UE4/5游戏的转储工具。

主要特点

  • Lua脚本API:基于UE对象系统编写Lua模组
  • 蓝图模组加载:自动生成蓝图模组,无需编辑/替换游戏文件
  • C++模组API:基于UE对象系统编写C++模组
  • 实时属性查看器与编辑器:搜索、查看、编辑和监视所有加载对象的属性,非常适合调试模组或了解运行时数值变化
  • UHT转储工具:生成与Unreal Header Tool兼容的C++头文件,为游戏创建镜像.uproject
  • C++头文件转储工具:从反射类和蓝图中生成标准C++头文件,包含偏移量
  • 通用UE模组:解锁游戏控制台和其他通用模组
  • 文件解析转储工具:为未版本化属性生成.usmap映射文件
  • UMAP重建转储工具:将所有加载的Actor转储到文件,在编辑器中生成.umap
  • 其他功能,包括有时提供的实验性功能

目标UE版本:从4.12到5.5

UE4SS的目标并非提供一个即插即用、适用于所有游戏的解决方案。
其目标是构建一个能为大多数游戏工作的底层系统。
您可能需要自行更新AOB(数组字节模式),下方提供了相关指南。

基本安装

最简单的安装方式是从发布页面下载最新的非开发版非实验性构建版本,并将压缩包内容解压至{game directory}/GameName/Binaries/Win64/目录下。

如果你的游戏在自定义配置列表中,请同时将相关文件夹中的内容提取到Win64文件夹中。

如果你计划使用UE4SS进行模组开发,可以按照上述方法操作,但需下载zDEV版本。

链接

构建要求

  • 一台运行Windows的电脑。
    未来可能会支持Linux,但短期内不会实现。
  • 支持C++23的MSVC版本:
    • MSVC工具集版本 >= 14.39.0
    • MSVC版本 >= 19.39.0
    • Visual Studio版本 >= 17.9
      希望未来能支持更多编译器。
  • Rust工具链 >= 1.73.0
  • xmake >= 2.9.3

构建说明

克隆仓库。执行以下命令:git submodule update --init --recursive,确保您的Github账户已关联至Epic Games账户以获取UE源代码访问权限。不要使用--remote选项,因为这将强制第三方依赖更新至最新提交,可能导致问题。您需要将github账户关联至Epic games账户才能拉取Unreal伪代码子模块。

有几种不同的方法可以构建UE4SS。

从命令行构建

配置设置

xmake允许您灵活配置一些构建选项,以满足特定需求。以下是一些可能有用的配置设置(非详尽列表)。

重要
所有配置变更均通过使用xmake config命令完成。您也可以使用xmake f作为config的快捷别名。

配置完xmake后,您可以使用以下任意选项,然后通过xmakexmake build来构建项目。

模式

构建模式的结构如下:<目标>__<配置>__<平台>

目前支持的选项有:

目标

  • 游戏 - 适用于UE版本大于4.21的常规游戏
  • 小于等于421 - 适用于UE版本小于等于4.21的常规游戏
  • 保留大小写 - 适用于启用保留大小写功能构建的游戏

配置

  • 开发版 - 开发构建
  • 调试版 - 调试构建
  • 发行版 - 发行(正式)构建
  • 测试版 - 测试用构建

平台

  • Win64 - 64位Windows

提示
使用以下命令配置项目:xmake f -m "<BuildMode>"-m--mode=<BuildMode>的别名。

模式侦探(实验性)

默认情况下,patternsleuth工具会以xmake包的形式安装。如果你不打算修改patternsleuth源代码,则无需进行任何特殊配置。若你需要能够修改patternsleuth源代码,则必须向xmake config提供--patternsleuth=local选项,以便将patternsleuth作为UE4SS构建的一部分重新编译。

代理路径

默认情况下,UE4SS 会基于 C:\Windows\System32\dwmapi.dll 生成代理。
如果出于任何原因需要更改此设置,可以向 xmake config 命令提供 --ue4ssProxyPath=<代理 DLL 路径> 参数。

性能分析器类型

默认情况下,UE4SS使用Tracy进行性能分析。你可以通过向xmake config命令传递--profilerFlavor=<profiler>来设置性能分析器类型。当前支持的类型有Tracy、Superluminal和None。

版本检查

默认情况下,xmake会检查你是否安装了最低要求的Rust或MSVC版本(如果你使用的是MSVC工具链)。如果没有安装,它会在配置步骤抛出错误。如果你想忽略这个检查,可以向xmake config命令传递--versionCheck=n参数。

一旦设置了该标志,选项值将被保留,直到另行指定。

因此,要在运行 xmake project -k vsxmake2022 时不检查版本,你必须先运行 xmake config --versionCheck=n 命令,然后再运行 xmake project -k vsxmake2022 命令。

有用的 xmake 命令

你可能会遇到需要使用一些更高级的xmake命令的情况。以下列出了一些有用的命令(非完整列表):

语法 别名 用途
xmake show - 显示项目配置信息

在集成开发环境(IDE)中打开

Visual Studio / Rider

要生成 Visual Studio 项目文件,请运行 xmake project -k vsxmake2022 -m "Game__Shipping__Win64" 命令。

随后打开 vsxmake2022 目录中生成的 .sln 文件

请注意,如果你更新子模块的原因不是因为其他人推送了更新,而只是同步到最新状态,那么你也应该提交并推送你更新的子模块。

警告
vs构建插件通过直接调用vs下的xmake命令执行编译操作,同时支持智能感知与定义跳转,以及断点调试。这意味着在Visual Studio中修改项目属性不会影响VS执行xmake时传递的标志。XMake提供了一些可配置的项目设置,可以在VS中的项目属性 -> 配置属性 -> Xmake菜单下找到。

警告
如果您安装了多个 Visual Studio 版本,请运行 xmake f --vs=2022,否则可能会遇到项目生成问题。

配置额外模式

提示
可以通过运行 xmake project -k vsxmake2022 -m "Game__Shipping__Win64,Game__Debug__Win64" 生成其他模式。更多说明可在 xmake 命令表中找到。

重新生成解决方案最佳实践

警告
如果您通过 xmake config 更改了配置,您可能需要重新生成 Visual Studio 解决方案以应用配置更改。您只需重新运行 xmake project -k vsxmake2022 -m "<modes>" 命令即可重新生成解决方案。

在Linux上构建Windows二进制文件

我们仅官方支持使用msvc-wine进行交叉编译。

确保已安装winbind(Arch系统上为libwbclient和samba)。

警告
你必须使用 xmake v2.9.7 或更高版本,截至2024年12月初,该版本尚未发布,这意味着你必须安装 xmake 的开发版本。

您需要安装 x86_64-pc-windows-msvc 目标(而非 windows-gnu 目标),使用rustup。

在调用 xmake f 时,必须设置 --plat--arch--sdk

您还必须使用 --ue4ssCross=msvc-wine,并禁用版本检查。

以下项目在交叉编译时不受支持,将自动禁用:

  • 代理
  • 代理生成器
  • 紫外线检测

当调用 xmake 构建命令时,patternsleuth 将自动构建而无需 xmake。

二进制文件可在 deps/first/patternsleuth_bind/target/x86_64-pc-windows-msvc 中找到。

当设置 --ue4ssCrossmsvc-wine 时,xmake 会自动使用它们。

以下是一个在Linux机器上构建Windows二进制文件的完整命令示例:

xmake f -m "Game__Shipping__Win64" -p windows -a x64 --sdk=/home/<用户名>/my_msvc/opt/msvc --versionCheck=n --ue4ssCross=msvc-wine

在 Wine 环境下调试

调试可以使用 winedbg

你也可以调试小型转储文件:

winedbg crash_2024_12_26_07_39_15.dmp

请记住,调试符号不会存储在dmp文件中,你必须拥有与构建UE4SS.dll时完全相同的符号文件(PDB)。

确保符号正确的最简单方法是构建生成dmp文件的确切提交版本。

正在更新git子模块

如果你想更新git子模块,可以通过以下三种方式之一进行:

  • 你可以执行 git submodule update --init --recursive 来更新所有子模块。
  • 你也可以选择逐个更新子模块,通过执行 git submodule update --init --recursive deps/<first-or-third>/<Repo>
  • 除非你确实想更新到最新提交,否则不要使用 --remote 选项。
  • 如果你更希望选择特定的提交或分支来更新子模块,可以 cd 进入该依赖的子模块目录并执行 git checkout <分支名或提交>
  • 你可能时不时需要更新的主要依赖是 deps/first/Unreal

鸣谢

  • 项目开源以来的所有贡献者: https://github.com/UE4SS-RE/RE-UE4SS/graphs/contributors
  • 原创作者:原创建者不再希望参与或与此项目有任何关联。请尊重他们的意愿,避免在此项目中使用他们过去的用户名。
    • Archengius - UHT兼容头文件生成器
    • CasualGamer - Injector代码和aob扫描器很大程度上基于他的工作,90%的代码都是他的。
    • SunBeam - Extra 函数 'GetFullName' 的签名,适用于 UE4.25。从 ini 文件加载时用于检查正确签名格式的正则表达式。大量签名相关工作。
    • tomsa - const char*vector<int> 转换器,创意及大部分代码
    • nibblet - 支持/ usize新的UFunction钩子方法
    • RussellJ - 蓝图模组加载器灵感
    • 纳克农 - 项目的某些功能及维护/重新托管
    • DeadMor0z - 某些功能和 Lua 更新/维护
    • 走出阴影 - 虚幻映射(USMAP)生成器
    • DmgVol - Inspiration 地图转储工具灵感
    • 巴克明斯特富勒烯 - 重写文档,各种修复
    • trumank - Lua 绑定生成器,各种修复、自动化及改进
    • 本地化 - C++ API
  • 感谢所有参与测试的人:
    GreenHouse、Otis_Inf、SunBeam、Motoson、hooter、Synopis、Buckminsterfullerene