☰
REFramework 完全指南:RE Engine 游戏 Mod 框架、Lua 脚本平台与 VR 支持的安装与使用
2026/10/2 8:02:30 网站建设 项目流程
  • 游戏开发
  • VR

【免费下载链接】REFramework

Mod loader, scripting platform, and VR support for all RE Engine games

项目地址:https://gitcode.com/GitHub_Trending/re/REFramework
点击查看免费下载

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 用户需要额外步骤:

  1. 安装 SteamVR(除非你在受支持的设备上使用 OpenXR);
  2. 将压缩包中的全部内容解压到对应游戏文件夹,而不仅是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、RE3src/mods/FirstPerson.hpp
手动手电筒(Manual Flashlight)RE2、RE3、RE8src/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 中清晰可见:

  1. DLL 导出代理:REFramework 的dinput8.dll导出DirectInput8Create符号(通过#pragma comment(linker, "/EXPORT:DirectInput8Create=direct_input8_create")),当游戏调用 DirectInput 时先执行我们的包装函数;
  2. 加载原版 DLL:load_dinput8()从系统目录(GetSystemDirectoryW)加载真正的dinput8.dll并缓存其DirectInput8Create地址(src/Main.cpp),包装函数随后转发调用,保证游戏输入功能不受影响;代码中还对 EOS 等覆盖层可能引发的重入递归做了防护(thread_local 重入保护);
  3. 启动框架:DllMain中完成模块句柄设置、safetyhook 分配器初始化(在游戏模块中段附近预留 1MB 钩子内存,按页递减直至分配成功)、游戏身份初始化与完整性检查绕过,然后创建启动线程(startup_thread)初始化REFramework主对象;
  4. 输入捕获:src/DInputHook.cpp 中DInputHook通过创建IDirectInputDevice获取GetDeviceState的 vtable 地址并挂钩,将 256 键键盘状态持续回传给框架(g_framework->on_direct_input_keys(...))——这解释了 Manual Flashlight、FreeCam 等 Mod 的按键为何走 DirectInput 而非普通 Windows 消息(源码注释明确指出:窗口虚拟键消息会被游戏屏蔽)。

这一“导出代理 + 转发原版”的模式,正是 REFramework 能以单一 DLL 形态兼容所有 RE 引擎游戏的原因。

七、快速上手清单

  1. 在 Releases 下载稳定版(或 Nightly 尝鲜);
  2. 非 VR:将dinput8.dll放入游戏根目录;VR:先装 SteamVR(或用 OpenXR),再解压整个压缩包;
  3. Proton/Linux:Steam 属性添加WINEDLLOVERRIDES="dinput8.dll=n,b" %command%;
  4. 启动游戏,按Insert呼出 REFramework 的 ImGui 菜单(框架默认 UI 热键),即可看到内置 Mod 列表、开发者工具入口与配置项;
  5. 写 Lua 脚本放入reframework/autorun目录(脚本运行时以 src/mods/ScriptRunner.cpp 的实现加载并执行),或在reframework/plugins目录放置 C++ 插件 DLL 实现更底层的功能;
  6. 所有配置通过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

项目地址:https://gitcode.com/GitHub_Trending/re/REFramework
点击查看免费下载

相关推荐

上一篇:Animate UI背景特效制作指南:气泡、烟花、星星动效详解
下一篇:Phabricator多租户部署方案:命名空间隔离与资源配额管理

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询