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

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

【免费下载链接】REFrameworkMod loader, scripting platform, and VR support for all RE Engine games项目地址: https://gitcode.com/GitHub_Trending/re/REFramework

REFramework 是一个面向 RE 引擎游戏(《生化危机》系列、《鬼泣 5》、《街霸 6》、《怪物猎人》等)的 Mod 框架,集 Mod 加载、Lua 脚本平台、C++ 插件与 VR 透视于一体,同时兼容 DirectX 11 和 12。按本文操作,你会从放置dinput8.dll开始,一路做到调出游戏内菜单、跑通仓库自带脚本、写出自己的 Lua 扩展,直到把作品发给别人——全程不用反编译游戏,也不用动游戏本体文件。

按 Insert 就能出菜单:先说结果,再倒推条件

先说你会看到什么:游戏正常进图后,按Insert 键(默认菜单键,可在菜单里改),屏幕上弹出一个覆盖式窗口,分区块列出 Script Runner、各内置 Mod 和 VR 设置——到这里,框架已经完整接管了游戏。

倒推这个结果只需要两个条件:

  • dinput8.dll和游戏主程序同级。框架本体就是这个 DLL:RE 引擎启动时会请求 DirectInput,Windows 自动加载游戏目录里的dinput8.dll,注入就此完成——不需要改注册表,也不需要启动器。非 VR 用户从 Release 包里只解压这一个文件即可;VR 用户先装好 SteamVR,再把整个压缩包含 VR 运行时一起解压到游戏目录,少放文件就会出现"菜单在、VR 功能不响应"的假故障。
  • 游戏目录可写。框架会尝试在目录里写测试文件,写不进去就回退到%APPDATA%\REFramework\<游戏名>\存配置和日志,功能不受影响但日志位置变了,排障时别找错地方。

Linux 上走 Proton:在 Steam 游戏属性里加启动项WINEDLLOVERRIDES="dinput8.dll=n,b" %command%,进游戏按 Insert 有菜单即成功。

成功信号:按 Insert 弹出覆盖菜单,且游戏没崩溃。

用 Script Runner 把仓库自带 Lua 脚本跑起来

先跑通 scripts/ 里的现成脚本

仓库scripts/目录是按游戏命名的实战脚本(re2_xxx.lua、re4_xxx.lua这类),依赖的跨游戏工具库在 scripts/utility/。注意脚本内部用require("utility/RE2")这种相对路径加载工具,所以整个scripts/文件夹要原样放进游戏目录,不要只拷单个文件。

然后:

  1. 打开菜单里的 Script Runner 区块,点Run script,在文件选择框里挑一个.lua;
  2. 以scripts/re2_smooth_movement.lua为例:它会在每帧修正角色 Transform,加载后移动角色直接能感到手感变化;
  3. 点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是操作游戏托管对象的统一 API:sdk.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

开发者线到这里才需要碰编译环境:C++23 编译器(推荐 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.bat(Release 构建全部游戏目标,耗时较长),或者用 CMake 只构建你要的游戏,省掉几十分钟:

cmake -S . -B build -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release cmake --build ./build --config Release --target RE2

examples/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++ 插件就是一个 DLL,Lua 脚本就是一个.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),仅供参考

相关新闻

解决往GitHub提交大文件报错问题

解决往GitHub提交大文件报错问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 3:20:19 阅读更多 →
基于Spring Boot的面点连锁店管理系统设计:权限、库存与业务闭环

基于Spring Boot的面点连锁店管理系统设计:权限、库存与业务闭环

毕设季一到&#xff0c;"管理系统"四个字的含金量就开始被反复讨论。如果只做一个单店的进销存&#xff0c;确实容易让答辩老师觉得平平无奇&#xff1b;但如果加上"连锁"和"面点"这两个词&#xff0c;整个系统的业务复杂度、表结构设计、权限边…

2026/10/21 3:19:16 阅读更多 →
华为eNSP策略路由实验:从配置到排错,避开模拟器那些坑

华为eNSP策略路由实验:从配置到排错,避开模拟器那些坑

1. 策略路由到底解决的是什么问题很多人第一次接触策略路由&#xff0c;是在一个很具体的场景里&#xff1a;公司有两条出口链路&#xff0c;一条贵但快&#xff0c;一条便宜但慢&#xff0c;老板要求"财务系统走快的&#xff0c;其他走便宜的"。这时候如果你只会配静…

2026/10/21 3:19:16 阅读更多 →

最新新闻

基于React18与TypeScript构建完整业务后台管理面板的实战复盘

基于React18与TypeScript构建完整业务后台管理面板的实战复盘

最近我在梳理手头的一个前端练习项目时&#xff0c;发现一个很有意思的代号挂在文件夹里——rea。它是我用 React 生态完整搭起来的一个业务管理面板 Demo&#xff0c;用来模拟日常后台系统中最高频的那些场景&#xff1a;列表展示、筛选搜索、数据详情、状态流转、主题切换等等…

2026/10/21 4:50:55 阅读更多 →
51单片机驱动RC522射频模块实战:SPI时序、寄存器配置与防冲突全流程

51单片机驱动RC522射频模块实战:SPI时序、寄存器配置与防冲突全流程

简介&#xff1a;本资源是面向嵌入式初学者与51单片机开发者的RC522射频识别&#xff08;RFID&#xff09;系统实战资料包&#xff0c;聚焦13.56MHz非接触式读写应用&#xff0c;适用于门禁控制、智能卡实验及物联网基础项目开发。内容涵盖RC522与51单片机的SPI硬件接口详解、初…

2026/10/21 4:50:55 阅读更多 →
立体仓库堆垛机输送系统设计要点与调试经验分享

立体仓库堆垛机输送系统设计要点与调试经验分享

1. 项目总览与核心需求拆解立体仓库这个东西&#xff0c;本质上就是让货架变得更聪明、让地面上的货物流转起来。很多人在看到“立体仓库 堆垛机 输送机 智能物流”这一串词的时候&#xff0c;第一反应是“这项目肯定特别复杂”&#xff0c;但实际上&#xff0c;把它拆开来看&a…

2026/10/21 4:50:55 阅读更多 →
从知道到做到:技能盘点与刻意练习的实用指南

从知道到做到:技能盘点与刻意练习的实用指南

Skills&#xff0c;翻译成中文就是技能。但这些年我在职场里见过太多人&#xff0c;把“知道”当成“会”&#xff0c;把“会”当成“精通”&#xff0c;最后在真正需要展示的时候&#xff0c;才发现自己的技能体系其实很脆弱。这篇文章不聊鸡汤&#xff0c;也不搞那种“一周精…

2026/10/21 4:50:55 阅读更多 →
Flutter for OpenHarmony通讯录助手实战:flutter_contacts适配指南

Flutter for OpenHarmony通讯录助手实战:flutter_contacts适配指南

说实话&#xff0c;看到这个标题的第一反应是“终于有人在OpenHarmony上认真捣鼓第三方库了”。我在某公司做跨平台客户端开发&#xff0c;去年下半年接到一个内部工具型App的适配需求&#xff0c;要求同时跑通安卓和OpenHarmony平板。团队技术栈是Flutter&#xff0c;业务里有…

2026/10/21 4:50:55 阅读更多 →
彻底搞懂 torch.manual_seed:从随机种子原理到完整复现配置指南

彻底搞懂 torch.manual_seed:从随机种子原理到完整复现配置指南

有一段时间我被一个现象折磨得不轻&#xff1a;同一份训练代码&#xff0c;连超参数都没动&#xff0c;下午跑出来的模型和早上跑的模型&#xff0c;准确率能差上两个点。排查到最后&#xff0c;问题根源锁定在所有随机数的源头——torch.manual_seed() 这个函数上。准确地说&a…

2026/10/21 4:49:55 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →