
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搭著游戲的渲染循環(huán)進來把一套能直接讀寫游戲?qū)ο蟮哪_本 API 交到你手里——FOV 滑塊、自由相機這些內(nèi)置 Mod 解壓即生效想改游戲行為就寫幾行 Lua。它是什么 為什么值得試一句話它是 RE Engine 游戲的Mod 加載器 反射式腳本層 VR 運行時三合一靈感來自 Kanan 并復用了部分代碼README 里寫得明明白白。對調(diào)參黨來說內(nèi)置 Mod 已經(jīng)夠用對想動手的人來說它最大的賣點是你不需要知道任何字段偏移量——按類型名和字符串名調(diào)方法就行。最小可運行路徑5 行以內(nèi)# 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 通吃一句話總結(jié)別人給你的是怎么改游戲的說明書它給你的是改游戲的能力。按場景走第一次跑起來文件放對位置Proton 有個坑非 VR 場景下只需dinput8.dll一個文件整包解壓容易把一堆 VR 相關(guān)的 DLL 帶進游戲目錄沒必要。VR 則相反需要整個包。README 里還順手列了幾個內(nèi)置修復——RE8 開局崩潰、RE8 擊殺/受傷卡頓、MHRise 的第三方 DLL 崩潰——如果你的游戲本來就修不好這些加載器本身就回本了。?? 有個容易忽略的行為檢測到聯(lián)機對戰(zhàn)時框架會主動卸載所有已加載的腳本ScriptRunner.cpp里寫死了這個邏輯。單機 Mod 沒問題別指望它在線上用。寫第一個 Lua 腳本從 reframework/autorun 到渲染循環(huán)腳本放在持久目錄下的reframework/autorun/框架啟動時會把這個目錄里的所有.lua全量加載并注冊進 Lua 的package.path。倉庫里 scripts/ 目錄就是現(xiàn)成的范本庫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 入口觸發(fā)一次 end)實際腳本里就是這么寫的比如 re2_smooth_movement.lua 里緩存了一堆get_Position/set_Rotation方法引用再在UpdateMotion回調(diào)里做 EMA 平滑??捎玫膾燧d點還有re.on_frame、re.on_draw_ui、re.on_pre_application_entry鉤子里能返回sdk.PreHookResult.SKIP_ORIGINAL這類結(jié)果來攔截原邏輯。改完不用重啟菜單里有 Reset scripts 按鈕或者重載場景即可。編譯框架源碼從 CMake 到指定游戲目標只想跑 Mod 的看到這里就可以關(guān)掉了要改框架或?qū)?C 插件的環(huán)境要求很干脆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是關(guān)鍵——每個游戲是獨立構(gòu)建目標不帶 target 會全量編譯慢得能泡杯咖啡。COMPILING.md 里還有 VSCode CMake Tools 的流程和build_vs2022.bat一鍵全量腳本。C 或 C# 寫插件兩個入口一條目錄規(guī)則C 插件的規(guī)則很簡單DLL 丟進持久目錄的reframework/plugins/PluginLoader會掃描目錄里所有.dll調(diào)用你導出的reframework_plugin_required_version檢查版本再調(diào)reframework_plugin_initialize拿初始化參數(shù)——之后你注冊on_present每幀畫 UI、on_lua_state_created給 Lua 注入自定義全局函數(shù)等回調(diào)即可。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會根據(jù) TDB 現(xiàn)場生成。本地聯(lián)調(diào)用make_symlinks.py --gamedir游戲目錄把構(gòu)建產(chǎn)物軟鏈到游戲目錄要管理員權(quán)限r(nóng)equirements.txt里就一個fire。測試工程還帶了 WebAPI 控制臺和 MCP server 的管道代碼test/Test/WebAPI/說明官方自己在往游戲狀態(tài)可被外部程序消費的方向走。順帶一提dependencies/里打包了 imnodes 節(jié)點編輯器組件框架代碼里也有 imnodes 的初始化與清理調(diào)用開發(fā)者工具的圖形化能力有這塊打底。機制拆解為什么不用手寫偏移量TDB 反射是整套設(shè)計的地基RE Engine 的托管類型系統(tǒng)自帶一套叫 TDBType Definition Database的描述格式??蚣軉訒r把它解析成內(nèi)存里的類型庫——每個方法、字段、屬性、單例都有名字和簽名版本號還分游戲RE2 是 tdb70、RE4 是 tdb71、RE9 已經(jīng)到 tdb83shared/sdk/regenny/下各游戲的生成頭文件目錄名直接寫明了。這套東西解決的真實痛點是版本漂移。比如角色骨骼鏈的碰撞數(shù)據(jù)TDB 71 以下在偏移0x5871 及以上挪到了0x60ChainViewer.cpp 的注釋里原話記錄了這個坑。手寫偏移的代碼每次游戲更新就報廢REFramework 的做法是按類型名方法名字符串在運行時查表分發(fā)ViaDispatch.hpp、GameIdentity.hpp這類文件負責按 TDB 版本路由到對應(yīng)布局。你寫腳本時看到的是sdk.find_type_definition(via.Transform):get_method(get_Position)偏移量的存在與否根本進不了你的上下文。代價是調(diào)用比直調(diào)慢一點但對腳本場景完全無感。為什么是 dinput8.dll借 DirectInput 的殼借渲染循環(huán)的心跳注入點選dinput8.dll是因為它零配置游戲本來就加載 DirectInput 庫你把文件往那兒一放DLL 就進進程了不需要改 loader、不需要驅(qū)動。但光注入還不夠框架還需要一個穩(wěn)定的心跳來驅(qū)動 UI 和腳本回調(diào)。答案在 src/D3D11Hook.cpp 和 src/D3D12Hook.cpp鉤住 DX 的 Present每幀觸發(fā)on_present——ImGui 界面在這里畫Lua 的on_frame在這里跑VR 的覆蓋層也掛在這條鏈上OpenVR/OpenXR 運行時抽象在 src/mods/vr/runtimes/。選 Present 當心跳而不是自造定時器好處是節(jié)奏天然和渲染幀一致on_device_reset時 ImGui 上下文還能整體重建狀態(tài)不懸空。決策參考路線適合代價Lua 腳本調(diào)參、改游戲?qū)ο?、快速試錯改完即生效跑在主線程渲染循環(huán)里重計算會直接掉幀C 插件 DLL性能敏感邏輯、渲染層操作、常駐 ImGui UI要編譯導出函數(shù)和初始化流程不能少C# / REFrameworkNET強類型、寫 MethodHook、復用 .NET 生態(tài)依賴 AssemblyGenerator 生成的引用程序集鏈路多一環(huán)換方案的信號也很明確游戲不在支持列表RE2/3/4/7/村莊/ requiem、DMC5、SF6、MH 系、DD2 等 18 款之外——框架的生成頭文件和鉤子都是按游戲定制的沒有銀彈帶反篡改的 REENGINE_AT 游戲框架有IntegrityCheckBypass模塊且只對這類游戲啟用但你仍要接受過校驗這件事本身的存在要純靜態(tài)分析、不碰運行時走 reversing/ 下的 rsz dumperUnicorn 模擬反序列化鏈推結(jié)構(gòu)布局和 pathdumper注意 rsz 工具鏈要求 Python ≤ 3.9想跨引擎通用這套 TDB 反射深度綁定 RE Engine 的類型格式離開這個引擎就沒有復用價值下一步構(gòu)建細節(jié)COMPILING.md腳本范本scripts/C 插件模板examples/example_plugin/C# 測試工程csharp-api/test/Test/逆向工具鏈reversing/dumper、IDA 命名腳本、PAK 路徑提取完整 Lua API 文檔和最新構(gòu)建鏈接都放在 README 里【免費下載鏈接】REFrameworkMod loader, scripting platform, and VR support for all RE Engine games項目地址: https://gitcode.com/GitHub_Trending/re/REFramework創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考