ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

REFramework:RE Engine 游戏的 Mod Loader 与 Lua 脚本平台,4 条命令跑通第一个脚本

REFramework:RE Engine 游戏的 Mod Loader 与 Lua 脚本平台,4 条命令跑通第一个脚本 REFrameworkRE Engine 游戏的 Mod Loader 与 Lua 脚本平台4 条命令跑通第一个脚本【免费下载链接】REFrameworkMod loader, scripting platform, and VR support for all RE Engine games项目地址: https://gitcode.com/GitHub_Trending/re/REFrameworkREFramework 是面向 RE Engine 全家桶生化危机系列、怪物猎人、鬼泣 5、街霸 6、鬼泣、死亡之屋重制等 18 款游戏的 Mod Loader、Lua 脚本平台和 VR 支持框架。它把自己伪装成 DirectInput 的dinput8.dll搭着游戏的渲染循环进来把一套能直接读写游戏对象的脚本 API 交到你手里——FOV 滑块、自由相机这些内置 Mod 解压即生效想改游戏行为就写几行 Lua。它是什么 为什么值得试一句话它是 RE Engine 游戏的Mod 加载器 反射式脚本层 VR 运行时三合一灵感来自 Kanan 并复用了部分代码README 里写得明明白白。对调参党来说内置 Mod 已经够用对想动手的人来说它最大的卖点是你不需要知道任何字段偏移量——按类型名和字符串名调方法就行。最小可运行路径5 行以内# 1. 从 Releases 页下载最新 zip链接见 [README](https://link.gitcode.com/i/7a9623761a1b0858b278334ff004980b) # 2. 非 VR只解压 dinput8.dll 到游戏安装目录 # 3. VR装好 SteamVR整个 zip 解压到游戏安装目录 # 4. Proton/LinuxSteam 启动选项加 WINEDLLOVERRIDESdinput8.dlln,b %command% # 5. 启动游戏DirectX 11/12 通吃一句话总结别人给你的是怎么改游戏的说明书它给你的是改游戏的能力。按场景走第一次跑起来文件放对位置Proton 有个坑非 VR 场景下只需dinput8.dll一个文件整包解压容易把一堆 VR 相关的 DLL 带进游戏目录没必要。VR 则相反需要整个包。README 里还顺手列了几个内置修复——RE8 开局崩溃、RE8 击杀/受伤卡顿、MHRise 的第三方 DLL 崩溃——如果你的游戏本来就修不好这些加载器本身就回本了。⚠️ 有个容易忽略的行为检测到联机对战时框架会主动卸载所有已加载的脚本ScriptRunner.cpp里写死了这个逻辑。单机 Mod 没问题别指望它在线上用。写第一个 Lua 脚本从 reframework/autorun 到渲染循环脚本放在持久目录下的reframework/autorun/框架启动时会把这个目录里的所有.lua全量加载并注册进 Lua 的package.path。仓库里 scripts/ 目录就是现成的范本库scripts/utility/ 里还有GameObject.lua、Statics.lua这类工具库require(utility/Statics)直接复用。核心模式只有三步找类型、拿方法、挂在游戏入口上local td sdk.find_type_definition(via.Transform) local get_position td:get_method(get_Position) re.on_application_entry(UpdateMotion, function() -- 游戏每帧的 UpdateMotion 入口触发一次 end)实际脚本里就是这么写的比如 re2_smooth_movement.lua 里缓存了一堆get_Position/set_Rotation方法引用再在UpdateMotion回调里做 EMA 平滑。可用的挂载点还有re.on_frame、re.on_draw_ui、re.on_pre_application_entry钩子里能返回sdk.PreHookResult.SKIP_ORIGINAL这类结果来拦截原逻辑。改完不用重启菜单里有 Reset scripts 按钮或者重载场景即可。编译框架源码从 CMake 到指定游戏目标只想跑 Mod 的看到这里就可以关掉了要改框架或写 C 插件的环境要求很干脆C23、Visual Studio 2022 起步、CMake官方明说其他编译器没测过。四条命令git clone https://gitcode.com/GitHub_Trending/re/REFramework git submodule update --init --recursive cmake -S . -B build -G Visual Studio 18 2026 -A x64 -DCMAKE_BUILD_TYPERelease cmake --build ./build --config Release --target RE2最后一条的--target RE2是关键——每个游戏是独立构建目标不带 target 会全量编译慢得能泡杯咖啡。COMPILING.md 里还有 VSCode CMake Tools 的流程和build_vs2022.bat一键全量脚本。C 或 C# 写插件两个入口一条目录规则C 插件的规则很简单DLL 丢进持久目录的reframework/plugins/PluginLoader会扫描目录里所有.dll调用你导出的reframework_plugin_required_version检查版本再调reframework_plugin_initialize拿初始化参数——之后你注册on_present每帧画 UI、on_lua_state_created给 Lua 注入自定义全局函数等回调即可。examples/example_plugin/ 是完整的可编译样例连 ImGui 的 D3D11/D3D12 双后端初始化都写好了。走 C# 的话看 csharp-api/REFrameworkNET是托管层测试项目 csharp-api/test/Test/ 里每个游戏一份TestRE2.cs、TestMHWilds.cs……[MethodHook]属性直接挂在生成的引用程序集类型上[MethodHook(typeof(app.CameraManager), nameof(app.CameraManager.isInside), MethodHookType.Pre)] public static PreHookResult isInsidePreHook(Spanulong args) PreHookResult.Continue;引用程序集不是手写的AssemblyGenerator会根据 TDB 现场生成。本地联调用make_symlinks.py --gamedir游戏目录把构建产物软链到游戏目录要管理员权限requirements.txt里就一个fire。测试工程还带了 WebAPI 控制台和 MCP server 的管道代码test/Test/WebAPI/说明官方自己在往游戏状态可被外部程序消费的方向走。顺带一提dependencies/里打包了 imnodes 节点编辑器组件框架代码里也有 imnodes 的初始化与清理调用开发者工具的图形化能力有这块打底。机制拆解为什么不用手写偏移量TDB 反射是整套设计的地基RE Engine 的托管类型系统自带一套叫 TDBType Definition Database的描述格式。框架启动时把它解析成内存里的类型库——每个方法、字段、属性、单例都有名字和签名版本号还分游戏RE2 是 tdb70、RE4 是 tdb71、RE9 已经到 tdb83shared/sdk/regenny/下各游戏的生成头文件目录名直接写明了。这套东西解决的真实痛点是版本漂移。比如角色骨骼链的碰撞数据TDB 71 以下在偏移0x5871 及以上挪到了0x60ChainViewer.cpp 的注释里原话记录了这个坑。手写偏移的代码每次游戏更新就报废REFramework 的做法是按类型名方法名字符串在运行时查表分发ViaDispatch.hpp、GameIdentity.hpp这类文件负责按 TDB 版本路由到对应布局。你写脚本时看到的是sdk.find_type_definition(via.Transform):get_method(get_Position)偏移量的存在与否根本进不了你的上下文。代价是调用比直调慢一点但对脚本场景完全无感。为什么是 dinput8.dll借 DirectInput 的壳借渲染循环的心跳注入点选dinput8.dll是因为它零配置游戏本来就加载 DirectInput 库你把文件往那儿一放DLL 就进进程了不需要改 loader、不需要驱动。但光注入还不够框架还需要一个稳定的心跳来驱动 UI 和脚本回调。答案在 src/D3D11Hook.cpp 和 src/D3D12Hook.cpp钩住 DX 的 Present每帧触发on_present——ImGui 界面在这里画Lua 的on_frame在这里跑VR 的覆盖层也挂在这条链上OpenVR/OpenXR 运行时抽象在 src/mods/vr/runtimes/。选 Present 当心跳而不是自造定时器好处是节奏天然和渲染帧一致on_device_reset时 ImGui 上下文还能整体重建状态不悬空。决策参考路线适合代价Lua 脚本调参、改游戏对象、快速试错改完即生效跑在主线程渲染循环里重计算会直接掉帧C 插件 DLL性能敏感逻辑、渲染层操作、常驻 ImGui UI要编译导出函数和初始化流程不能少C# / REFrameworkNET强类型、写 MethodHook、复用 .NET 生态依赖 AssemblyGenerator 生成的引用程序集链路多一环换方案的信号也很明确游戏不在支持列表RE2/3/4/7/村庄/ requiem、DMC5、SF6、MH 系、DD2 等 18 款之外——框架的生成头文件和钩子都是按游戏定制的没有银弹带反篡改的 REENGINE_AT 游戏框架有IntegrityCheckBypass模块且只对这类游戏启用但你仍要接受过校验这件事本身的存在要纯静态分析、不碰运行时走 reversing/ 下的 rsz dumperUnicorn 模拟反序列化链推结构布局和 pathdumper注意 rsz 工具链要求 Python ≤ 3.9想跨引擎通用这套 TDB 反射深度绑定 RE Engine 的类型格式离开这个引擎就没有复用价值下一步构建细节COMPILING.md脚本范本scripts/C 插件模板examples/example_plugin/C# 测试工程csharp-api/test/Test/逆向工具链reversing/dumper、IDA 命名脚本、PAK 路径提取完整 Lua API 文档和最新构建链接都放在 README 里【免费下载链接】REFrameworkMod loader, scripting platform, and VR support for all RE Engine games项目地址: https://gitcode.com/GitHub_Trending/re/REFramework创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表