REFramework如何用Lua脚本平台解决RE引擎游戏改Mod的难题
【免费下载链接】REFrameworkMod loader, scripting platform, and VR support for all RE Engine games项目地址: https://gitcode.com/GitHub_Trending/re/REFramework
当年首次给生化危机2做模组,为了验证移动手感,得重启游戏三次:找方法、写挂接、编译、启动、崩掉、再来。像看一本页码乱序的书,直到我遇到了REFramework的脚本平台,只要丢一个DLL,游戏里的类结构和方法就能被Lua直接调用。
拆解REFramework的运行机制
REFramework是一个面向RE Engine游戏的模组框架和脚本平台,覆盖生化危机2/3/4/7/村庄/ requiem、鬼泣5、街霸6、怪物猎人系列等十余款游戏。
整套东西可以类比成一栋大楼的物业办公室。游戏本体是一栋封闭的厂房,里面玩家在哪个房间、手雷从哪扇门滚出去,全是游戏内部数据。REFramework就是拿着目录和总钥匙的物业处:你只提需求,它派人取数;想改某个房间的规则,就在前台留一张便签,物业每次进这个房间都会先看便签,再决定执行结果。
- 模组加载器:以单个dinput8.dll注入游戏进程,提供内置设置面板和自带的Mod列表
- Lua脚本平台:启动时加载游戏目录scripts/目录下的全部脚本,每帧执行帧回调,通过sdk命名空间把游戏的类型、方法、字段暴露给脚本,实现入口在 [src/mods/ScriptRunner.cpp]
- 方法钩子系统:用sdk.hook给任意游戏方法注册前置和后置回调,不改游戏原始代码就能改行为
最关键的调用链只有几行,从拿到玩家到每帧移动:
-- 从PlayerManager取当前玩家,每帧改其位置 local player_mgr = sdk.get_managed_singleton(sdk.game_namespace("PlayerManager")) local player = player_mgr:call("get_CurrentPlayer") local transform = player:call("get_Transform") local pos = transform:call("get_Position") re.on_frame(function() transform:call("set_Position", Vector3f.new(10, 0, 20)) end)三步跑通从零到可用
- Step 1:下载对应游戏的稳定版,把其中的dinput8.dll解压到游戏根目录。非VR玩法只需这一个文件。
- Step 2:启动游戏,打开REFramework设置面板,能看到Free Camera、FOV滑条、场景时间缩放等自带Mod的开关,Object Explorer还可以随时浏览场景里的对象树。
仓库的UI依赖库里还带一个节点编辑器组件,用节点连线表达游戏逻辑,这是仓库中自带的界面。
- Step 3:从仓库里拷贝 [scripts/re2_smooth_movement.lua] 这类示例脚本到游戏目录的scripts/目录,脚本随游戏启动加载,可以先改现有参数感受一下。
💡 如果你用Proton/Linux跑,记得在Steam启动选项里加WINEDLLOVERRIDES="dinput8.dll=n,b",否则注入的DLL不会被加载,面板不会出来。
实现三个常见的Mod
实现自由观察视角
你想把视角从角色身上剥离,随便角度围观关卡。
- 打开设置面板,启用自带的Free Camera
- 绑定一个热键切换自由视角的进出
- 用默认输入键位移动和环视
效果:随时脱离玩家视角,绕着场景里任意物体检查关卡。
把玩家瞬移到任意坐标
你想测试远处某个点位,不想跑20分钟路。
- 用sdk.get_managed_singleton拿到玩家对象
- 取玩家的Transform
- 调用set_Position写入目标坐标
Lua代码只有几行:
-- 把玩家瞬移到指定世界坐标 local player_mgr = sdk.get_managed_singleton(sdk.game_namespace("PlayerManager")) local transform = player_mgr:call("get_CurrentPlayer"):call("get_Transform") transform:call("set_Position", Vector3f.new(10, 0, 20))效果:玩家直接出现在目标坐标,关卡验证不再靠手动跑图。
启用VR的6DOF
你想戴着头显玩RE Engine游戏。
- 先装好SteamVR
- 把REFramework整个压缩包解压到游戏目录,而不是只解压单个文件
- 正常启动游戏即获得通用6DOF头部追踪,RE2/RE3/RE7/RE8还带动作控制
| Mod任务 | 传统做法 | REFramework |
|---|---|---|
| 修改游戏逻辑 | 写C++挂接并编译DLL | 几行Lua调方法 |
| 验证参数 | 每次重启游戏 | 改脚本重新加载 |
| 查看对象字段 | 反编译配合内存工具查 | Object Explorer直接浏览 |
| VR支持 | 逐游戏接VR库 | 内置6DOF,全游戏可用 |
深挖一层:进阶方向与资源入口
🔧 Lua脚本只是门面,框架还带Object Explorer、Game Objects Display和Method Database等开发者工具,配合场景时间缩放等设置也能做基础性能调优;想做VR Mod开发,仓库里的vr/目录同时提供了OpenVR和OpenXR两套运行时。
- scripts/utility/:按游戏拆分的Lua工具库(RE2/RE4/RE7/RE8等),适合刚写Lua脚本的人
- examples/:完整的C++插件示例,含ImGui渲染接入,适合想写自己插件DLL的人
- COMPILING.md:项目编译说明,适合想自己编译定制构建的人
门槛低从来不等于天花板低,Lua层只是正门,底层还有C++插件API、钩子系统和VR运行时可挖。打开游戏,拷一份示例脚本,把你想改的那个参数先改掉。
【免费下载链接】REFrameworkMod loader, scripting platform, and VR support for all RE Engine games项目地址: https://gitcode.com/GitHub_Trending/re/REFramework
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考