首页 / 资讯中心 / 文章详情

REFramework 实战教程:RE 引擎游戏 Mod 框架 + Lua 脚本一次跑通

REFramework 实战教程:RE 引擎游戏 Mod 框架 + Lua 脚本一次跑通 ★ FEATURED ARTICLE
REFramework 实战教程RE 引擎游戏 Mod 框架 Lua 脚本一次跑通【免费下载链接】REFrameworkMod loader, scripting platform, and VR support for all RE Engine games项目地址: https://gitcode.com/GitHub_Trending/re/REFrameworkREFramework 是一个面向 RE 引擎游戏《生化危机》系列、《鬼泣 5》、《街霸 6》、《怪物猎人》等的 Mod 框架集 Mod 加载、Lua 脚本平台、C 插件与 VR 透视于一体同时兼容 DirectX 11 和 12。按本文操作你会从放置dinput8.dll开始一路做到调出游戏内菜单、跑通仓库自带脚本、写出自己的 Lua 扩展直到把作品发给别人——全程不用反编译游戏也不用动游戏本体文件。按 Insert 就能出菜单先说结果再倒推条件先说你会看到什么游戏正常进图后按Insert 键默认菜单键可在菜单里改屏幕上弹出一个覆盖式窗口分区块列出 Script Runner、各内置 Mod 和 VR 设置——到这里框架已经完整接管了游戏。倒推这个结果只需要两个条件dinput8.dll和游戏主程序同级。框架本体就是这个 DLLRE 引擎启动时会请求 DirectInputWindows 自动加载游戏目录里的dinput8.dll注入就此完成——不需要改注册表也不需要启动器。非 VR 用户从 Release 包里只解压这一个文件即可VR 用户先装好 SteamVR再把整个压缩包含 VR 运行时一起解压到游戏目录少放文件就会出现菜单在、VR 功能不响应的假故障。游戏目录可写。框架会尝试在目录里写测试文件写不进去就回退到%APPDATA%\REFramework\游戏名\存配置和日志功能不受影响但日志位置变了排障时别找错地方。Linux 上走 Proton在 Steam 游戏属性里加启动项WINEDLLOVERRIDESdinput8.dlln,b %command%进游戏按 Insert 有菜单即成功。成功信号按 Insert 弹出覆盖菜单且游戏没崩溃。用 Script Runner 把仓库自带 Lua 脚本跑起来先跑通 scripts/ 里的现成脚本仓库scripts/目录是按游戏命名的实战脚本re2_xxx.lua、re4_xxx.lua这类依赖的跨游戏工具库在 scripts/utility/。注意脚本内部用require(utility/RE2)这种相对路径加载工具所以整个scripts/文件夹要原样放进游戏目录不要只拷单个文件。然后打开菜单里的 Script Runner 区块点Run script在文件选择框里挑一个.lua以scripts/re2_smooth_movement.lua为例它会在每帧修正角色 Transform加载后移动角色直接能感到手感变化点Reset scripts卸载全部脚本对比卸载前后的差异。⚠️ 加载成功的信号是Known scripts 列表出现该脚本名且菜单顶部没有红字报错。如果列表显示 No scripts loaded.说明文件没选对或目录结构不对。日志确认脚本真正开始执行的时机脚本不会在游戏一启动就执行框架会先等via.SceneManager和当前场景就绪。游戏目录下的re2_framework_log.txt里出现[ScriptRunner] Scene and scene manager found. Loading scripts...才算真正开始加载等 5 秒没等到也会放行并打一条 warn这属于正常容错不用慌。让脚本每次开游戏自动加载想省掉手动点Run script把.lua放进游戏目录下的reframework/autorun/文件夹即可。开游戏时这些脚本会被自动执行并出现在 Known scripts 列表里随时可以勾选/取消。reframework/autorun同时会被加进 Lua 的package搜索路径放在子目录里的脚本也能被require到。第一次写自己的 Lua 脚本并跑起来sdk 表就是拿游戏对象的统一入口sdk是操作游戏托管对象的统一 APIsdk.find_type_definition(类型全名)拿到类型定义:get_method(方法名)拿到方法再call/call_safe调用sdk.get_native_singleton和sdk.get_primary_camera是常用快捷方式。类比一下它相当于给游戏的托管对象开了一组遥控器按钮按钮名就是游戏代码里的真实类型名和方法名。具体类型名可以在仓库 shared/sdk/regenny/ 下各游戏目录里对照。写一个每帧回调的小脚本re.on_frame(fn)把fn挂到每帧回调上——游戏每渲染一帧框架就替你执行一次可以理解为给游戏的心跳订阅了一个定时任务。新建my_first.lua放进reframework/autorun/local frame 0 re.on_frame(function() frame frame 1 if frame % 60 0 then -- 每 60 帧执行一次 local cam sdk.get_primary_camera() if cam then log.info(主相机: .. tostring(cam)) end end end)然后重启游戏或点Reset scripts让它重新走 autorun 加载。成功信号Known scripts 里出现my_first.lua日志每 60 帧滚动一条且面板显示 No Script Errors... yet!。两个必须知道的行为沙箱裁剪Lua 的os库里remove / rename / execute / exit / setlocale / getenv都被框架置空了想删文件、执行系统命令请改用fs绑定——这是安全设计不是你环境坏了。性能习惯find_type_definition和get_method的结果在脚本顶部取一次并缓存别在每帧回调里重复查。脚本跑久了占用内存会涨用 Garbage Collection Stats 里显示的 MB 数值判断稳定不再上涨就调好了。编译 C 插件clone 仓库后产出第一个 DLL开发者线到这里才需要碰编译环境C23 编译器推荐 Visual Studio 2022加 CMake完整细节见 COMPILING.md。先 clone 仓库并拉取第三方依赖git clone https://gitcode.com/GitHub_Trending/re/REFramework cd REFramework git submodule update --init --recursive然后二选一直接跑仓库根目录的build_vs2022.batRelease 构建全部游戏目标耗时较长或者用 CMake 只构建你要的游戏省掉几十分钟cmake -S . -B build -G Visual Studio 17 2022 -A x64 -DCMAKE_BUILD_TYPERelease cmake --build ./build --config Release --target RE2examples/example_plugin/ 是最完整的参考Plugin.cpp里覆盖了插件要面对的全部关键路径D3D11/D3D12 双后端初始化、每帧渲染回调、以及用create_script_state创建独立 Lua state 沙箱相当于给你的插件开一个和主脚本隔离的虚拟机。通读它一遍比看文档直接。放对位置就能加载编译出的 DLL 丢进游戏目录的reframework/plugins/重启游戏。框架启动时会扫描这个目录并逐个加载其中的.dll插件需要导出reframework_plugin_required_version和reframework_plugin_initialize两个入口示例里都有。成功信号重启后菜单正常日志里出现[PluginLoader] Loaded ...且没有[Plugin]开头的 error。报错、没生效、卡顿三处按序排查Script Runner 面板的红字Last Script Error会常驻显示最近一次错误和发生时间勾上Log Lua Errors to Disk后所有 Lua 错误落盘再点Spawn Debug Console弹控制台看实时输出三者配合基本能定位 90% 的脚本问题。在线匹配下脚本被整体卸载面板会明确提示 Online match detected. Scripts will not be loaded.这是框架的主动保护切回单机模式脚本自动恢复。os库不可用的报错沙箱裁剪所致换fs绑定即可。卡顿只调一处确认方法指针已缓存、re.on_frame里只有增量计算然后观察 Garbage Collection Stats 的占用数值是否趋稳GC 参数Handler / Mode / Budget就在这个面板里每帧由框架统一回收。把你的 Lua 脚本或 C 插件分享给别人分享成本极低C 插件就是一个 DLLLua 脚本就是一个.lua依赖utility/工具库的话把整个scripts/文件夹一起发。对方只需把 DLL 放进reframework/plugins/、把脚本放进reframework/autorun/重启游戏即可一句说明就够了。到这里你手里已经有完整闭环dinput8.dll注入 → Insert 菜单 → 脚本平台 → 自写扩展 → C 插件。建议下一步打开 examples/example_plugin/ 跟本文走一遍编译流程把产出的 DLL 丢进reframework/plugins/重启确认菜单正常——你就完成了从安装到产出的全链路。【免费下载链接】REFrameworkMod loader, scripting platform, and VR support for all RE Engine games项目地址: https://gitcode.com/GitHub_Trending/re/REFramework创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站