- 游戏开发
- VR
【免费下载链接】REFramework
Mod loader, scripting platform, and VR support for all RE Engine games
REFramework 是一个面向 Capcom RE Engine(RE 引擎)游戏的全能 Mod 框架,集成了Mod 加载器、Lua 脚本平台、插件系统、内置 Mod 工具集与通用 6DOF VR 支持,灵感来源于并复用了 Kanan 项目的部分代码。本指南将带你从零掌握它的安装方式(非 VR、VR、Proton/Linux)、内置功能全景、开发者工具与脚本/插件体系,让你能在《生化危机》系列、《怪物猎人》系列、《鬼泣 5》《街霸 6》《龙之信条 2》等 15 款以上的 RE 引擎游戏中自由扩展玩法。
一、项目概览:REFramework 是什么
在开始安装前,先理解这个框架的定位。从 README.md 的定位描述来看,REFramework 是一套面向 RE 引擎游戏的一体化工具链:
- Mod 框架(Mod framework):提供统一的 Mod 宿主环境,Mod 通过同一套接口与游戏交互;
- 脚本平台(Scripting platform):内置完整的 Lua 脚本运行时,玩家无需编译即可编写功能脚本;
- Modding 工具(Modding tool):内置开发者工具与大量开箱即用的功能 Mod。
技术上,REFramework 以dinput8.dll的形式随游戏进程注入(原理详见下文“源码解析”部分),同时支持DirectX 11 与 DirectX 12两种渲染后端,这也是它能同时覆盖老游戏(如 RE2)与新作(如《怪物猎人:荒野》)的基础。
二、安装指南:非 VR、VR 与 Proton/Linux
2.1 获取构建版本
- 稳定版(Stable):从 Releases 页面下载最后一个稳定构建;
- 开发版(Nightly):需要尝鲜新功能、新游戏支持时,使用 Nightly 开发者构建。
2.2 非 VR 安装(仅需一个 DLL)
这是最简单的安装方式:从压缩包中只解压dinput8.dll这一个文件,放入游戏根目录即可。
游戏根目录示例(以《生化危机 2》为例):
G:\SteamLibrary\steamapps\common\RESIDENT EVIL 2 BIOHAZARD RE2原理说明:游戏启动时会加载同目录下的dinput8.dll,REFramework 利用这一机制实现进程内注入,因此只需放置这一个文件。源码 src/Main.cpp 中可以看到DllMain在DLL_PROCESS_ATTACH时完成模块加载、内存分配、游戏身份识别(GameIdentity::initialize())以及创建启动线程的全过程。
2.3 VR 安装(解压整个压缩包)
VR 用户需要额外步骤:
- 安装 SteamVR(除非你在受支持的设备上使用 OpenXR);
- 将压缩包中的全部内容解压到对应游戏文件夹,而不仅是
dinput8.dll——VR 运行所需的附加 DLL、资源文件都包含在完整压缩包中。
VR 相关的疑难排解请参考 Wiki 的 VR Troubleshooting/FAQ 页面。
2.4 Proton / Linux 安装
在 Steam 中为游戏添加启动选项(在游戏属性中设置):
WINEDLLOVERRIDES="dinput8.dll=n,b" %command%n表示不加载原版系统 DLL,b表示优先使用内置(bultin)版本——这样 Wine/Proton 环境会优先加载 REFramework 提供的dinput8.dll,实现与 Windows 相同的注入效果。
注意:以上均为 README 明确给出的官方安装路径,适用于 Windows 与 Proton/Linux 环境;不同游戏目录结构可能略有差异,但“放入游戏根目录”的原则一致。
三、内置 Mod 功能全景(开箱即用)
REFramework 自带一组跨游戏通用的功能 Mod,启动游戏后即可在框架的 ImGui 菜单中启用。以下功能均能在 src/mods 目录找到对应实现:
| 功能 | 适用范围 | 源码位置 |
|---|---|---|
| Lua 脚本 API 与插件系统 | 所有游戏 | src/mods/ScriptRunner.cpp、src/mods/PluginLoader.cpp |
| 通用 6DOF VR 支持 | 所有游戏 | src/mods/VR.hpp |
| 运动控制(Motion controls) | RE2 / RE3 / RE7 / RE8 | 同上 |
| 第一人称(First Person) | RE2、RE3 | src/mods/FirstPerson.hpp |
| 手动手电筒(Manual Flashlight) | RE2、RE3、RE8 | src/mods/ManualFlashlight.hpp |
| 自由视角(Free Camera) | 所有游戏 | src/mods/FreeCam.hpp |
| 场景时间缩放(Scene Timescale) | 所有游戏 | src/mods/Scene.hpp |
| FOV 调节滑块 | 所有游戏 | src/mods/Camera.cpp |
| 暗角禁用(Vignette Disabler) | 所有游戏 | src/mods/Camera.cpp |
| 超宽屏/宽高比修复 | 所有游戏 | src/mods/Graphics.hpp |
| GUI 隐藏/禁用 | 所有游戏 | src/mods/Graphics.cpp |
3.1 Lua 脚本 API 与插件系统(核心能力)
这是 REFramework 最具价值的部分,让玩家与 Mod 作者能用Lua 脚本或原生 C++ 插件直接与游戏运行时(RE 引擎的 VM、TDB 类型数据库、场景、GUI 等)交互。
从 src/mods/ScriptRunner.cpp 的源码可以看到,脚本运行时基于 sol2 与 Lua,向脚本暴露了多个全局命名空间:
re:核心 API 表,包括re.msg()(弹窗提示),以及一系列回调注册函数:re.on_pre_application_entry(name, fn)/re.on_application_entry(name, fn):按应用入口名(如渲染阶段)挂接回调;re.on_pre_gui_draw_element(fn)/re.on_gui_draw_element(fn):GUI 绘制钩子;re.on_draw_ui(fn):每帧绘制 UI 时调用;re.on_frame(fn):每帧回调;re.on_script_reset(fn)/re.on_config_save(fn):脚本重置与配置保存钩子。
log:日志接口,log.info / log.warn / log.error / log.debug,以及log.set_level("info"|"warn"|"error"|"debug");thread:线程信息,thread.get_hash()、thread.get_id()、thread.get_hook_storage();reframework:框架自省,reframework.get_version_string()、get_version_major/minor/patch、get_branch、get_commit_hash、get_build_date、is_drawing_ui()、save_config()、is_key_down(key)等;- 数学类型:
Vector2f、Vector3f、Vector4f、Matrix4x4f、Quaternion,支持点积、叉积、归一化、插值、SLERP、矩阵逆等常用运算。
此外,ScriptRunner.cpp 实现了add_hook/add_vtable钩子机制:脚本可以为指定REMethodDefinition(游戏方法)注册 pre/post 回调,pre 回调可修改参数并决定是否调用原函数(CALL_ORIGINAL),post 回调可改写返回值——这是许多脚本 Mod(如自动拾取、伤害修改、镜头控制)的底层基础。
插件系统则由 src/mods/PluginLoader.cpp 实现:启动时创建reframework/plugins目录,并扫描其中所有.dll文件进行加载;随后 initialize_plugins 校验插件的reframework_plugin_required_version导出函数(主版本号必须一致、次版本不得更新、游戏名必须匹配),再调用reframework_plugin_initialize完成初始化。插件可回调reframework_on_present、reframework_on_imgui_frame、reframework_on_lua_state_created等事件,并获得完整的 SDK 函数集(TDB 类型查询、方法调用、字段读写、资源管理、VM 上下文等)。
3.2 VR:通用 6DOF 支持与运动控制
VR 模块是 REFramework 的一大招牌。从 src/mods/VR.hpp 可以看出其能力规模:
- 双运行时:同时支持 OpenVR(SteamVR)与 OpenXR 两种运行时(runtimes/OpenVR 与 runtimes/OpenXR),因此 VR 安装说明中才要求“安装 SteamVR(除非使用 OpenXR)”;
- 通用 6DOF:通过挂钩相机(
hijack_camera)、渲染(hijack_resolution)、音频监听器(hijack_wwise_listeners,即 Wwise 音频朝向)实现全游戏通用的头部追踪与立体渲染; - 运动控制:针对 RE2/RE3/RE7/RE8 实现了手柄动作映射(
openvr_input_to_re2_re3/openvr_input_to_re_engine),动作集包含 Trigger、Grip、Joystick、A/B 键、方向键、RE2 快速转身/换弹/第一人称切换、RE3 闪避、手电开关等; - 丰富的可调参数:
AlternateFrameRendering(AFR 交替帧渲染)、DecoupledPitch(俯仰解耦)、2DUIScale、2DUIDistance、WorldSpaceUIScale、OpenXRResolutionScale、MotionControlsInactivityTimer、JoystickDeadzone、CustomViewDistance、HMDOrientedAudio等; - 渲染层支持 D3D11 与 D3D12 两套组件(vr/D3D11Component、vr/D3D12Component),并内置 Overlay 组件与镜头畸变(Lens Distortion)处理。
3.3 第一人称、手电筒与自由视角
- First Person(RE2/RE3):将第三人称游戏切换为第一人称视角;
- Manual Flashlight(RE2/RE3/RE8):手动控制手电筒开关,默认按键为F(
VkKeyScan('f'),见 src/mods/ManualFlashlight.hpp)。该 Mod 最初由 SkacikPL 创作、在 REFramework 中重建; - Free Camera(所有游戏):自由飞行视角,默认按键为空格(上)/左 Ctrl(下)/左 Shift(加速)/左 Alt(减速),提供 Speed、SpeedModifier、RotationSpeed、LockPosition(锁定位置)、DisableMovement 等选项(src/mods/FreeCam.hpp)。
3.4 画质与显示类修复
- Scene Timescale:场景时间缩放(慢动作/快进),滑杆范围-5.0 ~ 5.0,默认 1.0(src/mods/Scene.hpp);
- FOV 滑块:全局 FOV 调节(
Use Custom Global FOV/Global FOV),RE8 另有专属的RE8 FOV与RE8 Aiming FOV(瞄准 FOV)选项(src/mods/Camera.cpp); - Vignette Disabler:禁用暗角效果,RE8 及更新版本(TDB ≥ 69)还可调节
Vignette Brightness(src/mods/Camera.cpp); - Ultrawide/Aspect Ratio 修复:
is_ultrawide_fix_enabled()控制的超宽屏修复,配合do_ultrawide_fix()与do_ultrawide_fov_restore()恢复超宽屏下被裁剪的 FOV,MHWilds 还提供m_ultrawide_ui_correctionUI 修正值(src/mods/Graphics.hpp); - GUI Hider/Disabler:一键隐藏或禁用游戏内 GUI。
四、内置修复与开发者工具
4.1 内置修复(Included Fixes)
REFramework 对部分游戏的热门问题提供了即插即用的修复:
- RE8 启动崩溃(Startup Crash);
- RE8 卡顿(Stutters):击杀敌人、受到伤害等场景下的掉帧卡顿;
- MHRise / RE8 第三方 DLL 相关崩溃:游戏与第三方注入 DLL 冲突导致的崩溃。
源码层面,src/Main.cpp 展示了相关的底层防护:IntegrityCheckBypass::setup_pristine_syscall()、hook_add_vectored_exception_handler()与hook_rtl_exit_user_process()用于规避游戏的完整性检查,这是框架在部分新作中稳定运行的基础设施之一。
4.2 开发者工具(Developer Mode)
启用开发者模式后,框架额外提供两类游戏内工具(src/mods/tools 目录):
- Game Objects Display:场景对象展示面板,实时列出当前场景中的游戏对象(src/mods/tools/GameObjectsDisplay.cpp);
- Object Explorer:对象浏览器,可深入检视任意对象的类型、字段、方法等运行时信息(src/mods/tools/ObjectExplorer.cpp)。
这两类工具是脚本/插件开发者的必备调试利器,也常被用于制作各类 Mod 前的逆向分析。
五、支持的游戏列表(Supported Games)
README 明确列出的支持游戏如下:
| 游戏 | 备注 |
|---|---|
| 生化危机 2(RE2) | 支持第一人称、运动控制 |
| 生化危机 3(RE3) | 支持第一人称、运动控制 |
| 生化危机 4(RE4) | — |
| 生化危机 7(RE7) | 支持运动控制 |
| 生化危机 村庄(RE8) | 支持运动控制,含启动崩溃/卡顿修复 |
| 生化危机 安魂曲(RE Requiem) | — |
| 鬼泣 5(DMC5) | — |
| 街霸 6(SF6) | — |
| 怪物猎人:崛起(MHRise) | 含第三方 DLL 崩溃修复 |
| 怪物猎人:荒野(MHWilds) | 含超宽屏 UI 修正 |
| 怪物猎人 物语 3(MH Stories 3) | — |
| 龙之信条 2(DD2) | — |
| 魔界村 复活(Ghosts 'n Goblins Resurrection) | 使用 RE8 构建 |
| 逆转裁判 456 王泥喜精选集(Apollo Justice Trilogy) | 使用 DD2 构建 |
| 祇:女神之路(Kunitsu-Gami) | 使用 DD2 构建 |
| 鬼武者 2(Onimusha 2) | 使用 MHWILDS 构建 |
从源码结构可以印证这一矩阵:仓库的 shared/sdk/regenny 目录按游戏(dd2、mhrise、re2_tdb70、re3、re4、re7、re8、re9、sf6 等)分别维护 TDB 类型定义头文件,而 shared/sdk/ReClass_Internal_*.hpp 系列文件则为各游戏提供反编译布局。部分非官方“借用构建”的游戏(如魔界村复活使用 RE8 构建)意味着它们复用对应游戏的运行时结构,功能支持程度以实际运行为准。
六、源码级解析:dinput8.dll 注入机制
理解安装方式背后的原理,能帮助你在遇到加载失败时快速定位问题。整个注入链路在 src/Main.cpp 中清晰可见:
- DLL 导出代理:REFramework 的
dinput8.dll导出DirectInput8Create符号(通过#pragma comment(linker, "/EXPORT:DirectInput8Create=direct_input8_create")),当游戏调用 DirectInput 时先执行我们的包装函数; - 加载原版 DLL:
load_dinput8()从系统目录(GetSystemDirectoryW)加载真正的dinput8.dll并缓存其DirectInput8Create地址(src/Main.cpp),包装函数随后转发调用,保证游戏输入功能不受影响;代码中还对 EOS 等覆盖层可能引发的重入递归做了防护(thread_local 重入保护); - 启动框架:
DllMain中完成模块句柄设置、safetyhook 分配器初始化(在游戏模块中段附近预留 1MB 钩子内存,按页递减直至分配成功)、游戏身份初始化与完整性检查绕过,然后创建启动线程(startup_thread)初始化REFramework主对象; - 输入捕获:src/DInputHook.cpp 中
DInputHook通过创建IDirectInputDevice获取GetDeviceState的 vtable 地址并挂钩,将 256 键键盘状态持续回传给框架(g_framework->on_direct_input_keys(...))——这解释了 Manual Flashlight、FreeCam 等 Mod 的按键为何走 DirectInput 而非普通 Windows 消息(源码注释明确指出:窗口虚拟键消息会被游戏屏蔽)。
这一“导出代理 + 转发原版”的模式,正是 REFramework 能以单一 DLL 形态兼容所有 RE 引擎游戏的原因。
七、快速上手清单
- 在 Releases 下载稳定版(或 Nightly 尝鲜);
- 非 VR:将
dinput8.dll放入游戏根目录;VR:先装 SteamVR(或用 OpenXR),再解压整个压缩包; - Proton/Linux:Steam 属性添加
WINEDLLOVERRIDES="dinput8.dll=n,b" %command%; - 启动游戏,按Insert呼出 REFramework 的 ImGui 菜单(框架默认 UI 热键),即可看到内置 Mod 列表、开发者工具入口与配置项;
- 写 Lua 脚本放入
reframework/autorun目录(脚本运行时以 src/mods/ScriptRunner.cpp 的实现加载并执行),或在reframework/plugins目录放置 C++ 插件 DLL 实现更底层的功能; - 所有配置通过
reframework.save_config()或菜单内操作持久化保存。
说明:第 4 步的 Insert 热键、
reframework/autorun脚本目录与第 5 步的插件目录路径,分别对应框架 UI 菜单的通用习惯与 PluginLoader 中reframework/plugins目录的源码实现;具体按键与目录名以你在游戏内菜单中看到的实际选项为准。
结语
REFramework 的价值在于它把“Mod 能力”下沉为一个统一、可脚本化、跨游戏的平台:同一个dinput8.dll,既是 Mod 加载器,又是 Lua 脚本运行时,还是 VR 注入层。配合本文介绍的安装步骤、内置功能与源码级原理,你现在可以基于它快速搭建自己的游戏增强方案——从一行 Lua 脚本的 FOV 调整,到为 RE2 写一套完整的 VR 运动控制绑定,都在这个框架的能力范围之内。
- 游戏开发
- VR
【免费下载链接】REFramework
Mod loader, scripting platform, and VR support for all RE Engine games
相关推荐
REFramework游戏模组开发终极指南:从零开始掌握RE Engine脚本框架
REFramework游戏模组开发终极指南:从零开始掌握RE Engine脚本框架 想要为《生化危机》、《怪物猎人》等热门游戏制作个性化模组吗?REFramew
游戏开发VRUE4SS完整安装指南:轻松实现LUA脚本注入与游戏Mod开发
UE4SS完整安装指南:轻松实现LUA脚本注入与游戏Mod开发 想要为虚幻引擎游戏添加自定义功能?UE4SS提供了强大的LUA脚本注入系统和游戏Mod开发能力,
游戏开发逆向工程REFramework终极指南:为什么它是RE引擎游戏的最佳Mod框架
REFramework终极指南:为什么它是RE引擎游戏的最佳Mod框架 在游戏模组开发领域,REFramework凭借其强大的功能和易用性脱颖而出。作为专为RE
游戏开发VR
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考