REFramework 上手三条路线:dinput8.dll 注入、Lua 脚本与 C++ 插件
【免费下载链接】REFrameworkMod loader, scripting platform, and VR support for all RE Engine games项目地址: https://gitcode.com/GitHub_Trending/re/REFramework
想让生化危机、鬼泣这类 RE 引擎游戏的角色移动更顺滑、多一个 HUD 面板、甚至整个人进 VR 打怪,又不想动游戏本体文件?把 REFramework 编译出的dinput8.dll放进游戏目录就行,Lua 游戏脚本和 C++ 插件两条路线都能走通,本文按"只写 Lua / 写 C++ / 只开 VR"三种身份各走一遍。
开工前的公共底座:把 dinput8.dll 编译出来
先花 30 秒搞懂注入原理:dinput8.dll是 DirectInput 库的替身。RE 引擎游戏启动时会按惯例加载 DirectInput 的dinput8.dll,而游戏目录里放的这个文件其实是 REFramework 本体,于是整个框架就在游戏进程里跑了起来——游戏本体一个字节都没改。
从 clone 仓库到 build64_all 产出 dinput8.dll
环境要求全是 Windows 侧工具链:Visual Studio 2022(带 C++ 桌面开发工作负载,需要 C++23 支持)、CMake 3.15 以上、Git,系统 Windows 10/11 64 位。咱们先拿源码,顺手把第三方依赖拉齐:
git clone https://gitcode.com/GitHub_Trending/re/REFramework cd REFramework git submodule update --init --recursivegit submodule那条会把 ImGui、Lua、sol2 等依赖拉进dependencies目录,完成后该目录不再空着。接着配置并编译,DEVELOPER_MODE=ON打开开发者模式,后面查类型名会用上:
mkdir build64_all cd build64_all cmake .. -G "Visual Studio 17 2022" -A x64 -DDEVELOPER_MODE=ON cmake --build . --config Release编译跑完后,build64_all/bin/REFramework目录下就是产物,dinput8.dll在其中。嫌敲命令麻烦,直接双击根目录的build_vs2022.bat,它把这几步打包好了。
如果卡住了:CMake 配置阶段报生成器错误,多半是 VS 没装 C++ 桌面开发工作负载;dependencies目录是空的,就单独重跑一次git submodule update --init --recursive。
游戏启动后看哪里确认注入成功
把dinput8.dll复制进游戏安装目录,正常启动游戏。画面右下角会出现 REFramework 的悬浮入口,点开是一排内置 mod 开关:FOV 滑块、自由相机、第一人称、场景时间缩放、宽屏修正都在菜单里。菜单能弹出来,就说明注入成功了。
如果卡住了:菜单没出现时,先确认 dll 和游戏主程序.exe在同一目录、游戏没有反作弊机制拦截注入,再怀疑框架版本与游戏版本不匹配。
路线一:只写 Lua 的轻度 modder
Lua 脚本放哪个目录、第一份脚本从哪抄
游戏目录下的scripts文件夹就是脚本入口,放进去的.lua文件启动时自动加载。第一份脚本建议照抄仓库现成的:scripts/re2_smooth_movement.lua 演示了如何通过via.Transform读写玩家位置实现移动平滑,RE2 的 VR 准星、RE8 的 VR 适配脚本也是同一思路。脚本里能读游戏对象、调引擎方法,比如用sdk.find_type_definition按名字查类型。
写法上建议拆小步:先打印一个字段确认读到了,再改一个行为,最后才挂 UI,别一口气写完再回头找 bug。
-- 思路示意(具体字段名以官方教程为准): -- 1. 拿到玩家对应的 GameObject -- 2. 读取 via.Transform 组件的平移字段 -- 3. 每帧把目标位置与当前位置做插值再写回怎么找到脚本要读写的类型名
via.Transform这类类型名有两处来源:官方教程 reframework-book 里的 Lua API 文档,以及开发者模式自带的调试工具。DEVELOPER_MODE构建出来的版本,游戏内菜单里有 Object Explorer 和 Game Objects Display,能直接浏览当前场景的 GameObject 和组件,不开 IDA 就能看到运行时对象图。
动手前顺手翻翻 scripts/utility/,里面的RE2.lua、RE4.lua等按游戏分类的工具函数能省掉大量重复代码。
路线二:想写 C++ 原生插件的进阶者
C++ 插件开发前,先熟悉这几个头文件
Lua 碰到平台限制、想要更深的控制时,就轮到原生插件出场了。起点直接抄 examples/example_plugin/:完整可编译的模板,演示了 ImGui 初始化、DirectX 11/12 渲染绑定和 Lua 沙箱注册;嫌它结构大,examples/weapon_stay_big_plugin是单文件小例子。
类型定义主要和 shared/sdk/ 打交道,regenny/子目录按游戏(re4、re9、sf6 等)分好;想深挖引擎行为,src下的Hooks.cpp、D3D11Hook.cpp展示了钩子怎么挂;要逆向新游戏,reversing/里还有 IDA 命名脚本和 dump 工具,初学可以先跳过这块。
插件画界面走的是 ImGui 这套栈,在 REFramework 里被封装得很彻底,基本不用碰底层。上面这张图来自 ImGui 生态的节点编辑器组件,给你个直观印象:插件能做的可视化远不止滑条和开关。
路线三:只想开 VR 不写代码的玩家
VR 怎么开:菜单里的开关和手柄动作
REFramework 给所有 RE 引擎游戏提供通用 6DOF VR,底层接 OpenVR 和 OpenXR 两套运行时,部分游戏还有专门的手柄动作适配(比如 RE8 的 VR 脚本)。流程就是四步:注入成功 → 打开菜单 → 找到 VR 开关 → 戴上头显,全程不用写代码。
头显识别不到的话,先在系统层面确认 SteamVR 或对应运行时能认出设备,再回游戏里重试。
今晚就能跑通的最小闭环:clone 仓库、编译,把re2_smooth_movement.lua复制到 RE2 安装目录的scripts文件夹,启动游戏看角色移动是否变顺——变顺了,整条链路就通了,剩下的事就是换脚本、换游戏。
【免费下载链接】REFrameworkMod loader, scripting platform, and VR support for all RE Engine games项目地址: https://gitcode.com/GitHub_Trending/re/REFramework
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考