【免费下载链接】me3
A framework for modding and instrumenting games.
me3是一个用 Rust 编写的游戏 MOD 加载与插桩框架(A framework for modding and instrumenting games),支持 ELDEN RING、SEKIRO、DARK SOULS III 等 FROMSOFTWARE 游戏。本文带你从零完成me3 源码构建与Windows 交叉编译:配置 Rust 工具链、交叉编译me3.exe/me3_mod_host.dll/me3-launcher.exe、用 Makefile 一键产出发行包,最后跑通游戏验证构建结果。全程面向新手,命令可直接复制执行。
1. 认识 me3 的代码结构
me3 是一个 Cargo Workspace,各 crate 职责清晰(见 Cargo.toml):
| 模块路径 | 产物 | 作用 |
|---|---|---|
| crates/cli/ | me3/me3.exe | 命令行入口,管理 MOD Profile 并启动游戏 |
| crates/mod-host/ | me3_mod_host.dll | 注入游戏进程的核心 Host DLL(cdylib) |
| crates/launcher/ | me3-launcher.exe | 负责进程附加(attach)的启动器 |
| crates/ipc/ | 静态库 | CLI 与游戏内进程之间的 IPC 通信桥 |
| crates/mod-protocol/ | 静态库 | .me3Profile 的序列化协议 |
| crates/binary-analysis/ | 静态库 | PE / RTTI 等二进制分析工具 |
💡 新手只需关注前三个 crate:编译成功后,
me3命令会拉起me3-launcher.exe,由它把me3_mod_host.dll注入游戏进程。
2. 构建环境准备(5 分钟搞定)
2.1 安装 Rust 工具链
项目在 rust-toolchain.toml 中锁定stable工具链并附带rustfmt、clippy组件;工作区要求Rust 1.95+、edition 2024(见 Cargo.toml 中rust-version字段)。
- Linux:运行官方 rustup 脚本安装:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh- Windows:下载并运行 rustup 安装器,按向导完成即可。
2.2 必须设置 RUSTC_BOOTSTRAP=1
me3 在 stable 工具链上使用了少量 unstable 特性(例如--artifact-dir),因此构建、测试和 rust-analyzer 都需要该环境变量。项目已提供.vscode/settings.json,在 VS Code 中打开仓库可自动设置;命令行手动构建时请自行导出:
export RUSTC_BOOTSTRAP=12.3 Windows 交叉编译依赖
- Windows 上构建:安装 Visual Studio C++ Build Tools(勾选"C++ 桌面开发"工作负载)。
- Linux 上交叉编译:用
xwin拉取 Windows SDK,详见下一节。
3. 克隆仓库与首次构建
克隆 me3 仓库:
git clone https://gitcode.com/gh_mirrors/me3/me3 cd me3执行首次构建(debug 版更快,适合开发期验证):
cargo build # 或 release 版 cargo build --release产物位于target/debug/或target/release/目录。由于 Host DLL 与启动器是 Windows 组件,Linux 上直接cargo build只会得到 Linux 版me3命令行;要得到完整的 Windows 三件套,请看第 5 节的交叉编译流程。
4. 用 Makefile 一键构建发行包
仓库根目录的 Makefile 封装了完整的分发构建流程,默认启用--features=sentry --release。
4.1 常用目标一览
| 命令 | 产物 | 说明 |
|---|---|---|
make all | out/me3-windows-amd64.zip、out/me3-linux-amd64.tar.gz、out/me3_installer.exe | 构建全部平台产物 |
make dist-linux | out/dist-linux/ | 组装 Linux 发行目录(含bin/win64/下的 Windows 组件) |
make dist-windows | out/dist-windows/ | 组装 Windows 发行目录 |
make clean | — | 清理out/目录 |
4.2 构建细节解读
Makefile 内部的cargo_build宏做了三件值得注意的事:
- 通过
RUSTC_WRAPPER=support/rustc.wrapper注入统一编译参数——support/rustc.wrapper 会强制开启帧指针、重映射源码路径前缀(保证可复现构建)、保留完整调试信息; - 使用
-Z unstable-options --artifact-dir把产物直接输出到out/,因此需要RUSTC_BOOTSTRAP=1; - Windows 目标同时构建三个包:
me3-cli、me3-launcher、me3-mod-host,对应 distribution/windows/ 下发布包里的三个可执行文件。
发行包内还会打包 distribution/cross-platform/ 中的默认.me3Profile(如eldenring-default.me3)以及各平台的启动脚本(distribution/linux/launch-eldenring-mods.sh、distribution/windows/launch-eldenring-mods.bat 等)。Linux 版安装脚本 distribution/linux/install-user.sh 负责把me3装到~/.local/bin、把 Windows 组件装到~/.local/share/me3/windows-bin。
5. Windows 交叉编译完整指南(Linux 环境)
这是大多数 Linux/Steam Deck 开发者最需要的场景:在 Linux 上产出可在 Windows 上运行的 me3 组件。
5.1 安装 xwin 获取 Windows SDK
cargo install xwin xwin --accept-license splat --output ~/.xwin5.2 配置 Cargo 链接器
编辑~/.cargo/config.toml,让x86_64-pc-windows-msvc目标使用lld-link并链接 xwin 提供的 CRT/SDK 库(路径按实际用户名替换):
[target.x86_64-pc-windows-msvc] linker = "lld-link" runner = "wine" rustflags = [ "-Lnative=~/.xwin/crt/lib/x86_64", "-Lnative=~/.xwin/sdk/lib/um/x86_64", "-Lnative=~/.xwin/sdk/lib/ucrt/x86_64" ]5.3 执行交叉编译
export RUSTC_BOOTSTRAP=1 cargo build --release --target x86_64-pc-windows-msvc \ -p me3-cli -p me3-launcher -p me3-mod-host构建完成后,target/x86_64-pc-windows-msvc/release/下应得到me3.exe、me3-launcher.exe与me3_mod_host.dll三个文件。如果只关心本地调试,也可以用 VS Code 内置任务:仓库的 .vscode/tasks.json 预置了 "cargo build all (windows)" 与 "Run Launcher (SteamLinuxRuntime)" 任务,可一键交叉编译并通过 Proton 运行。
6. 验证构建:跑测试并注入游戏
6.1 单元测试
cargo test # 只测单个 crate cargo test --package me3-mod-host6.2 实机调试
构建通过后,最直接的验证方式是把 Host DLL 注入游戏(参考 CONTRIBUTING.md 的 Live Debugging 章节):
cargo run -p me3-cli -- launch -g elden-ringme3 通过 crates/cli/src/commands/launch/ 中的策略模块自动定位 Steam 游戏目录,拉起me3-launcher.exe完成附加。仓库还附带 LLDB 辅助脚本 support/lldb/me3.py,配合 CodeLLDB 可对注入后的游戏进程断点调试;.vscode/中已包含对应的调试启动配置。
成功加载 MOD 后,你会看到类似下面的效果——这就是你亲手构建的 me3 在游戏中的成果:
7. 常见问题速查
| 现象 | 原因与解决 |
|---|---|
| 报错提示使用了 unstable 特性 | 未设置RUSTC_BOOTSTRAP=1,导出后重试 |
lld-link找不到 | xwin 未安装或~/.cargo/config.toml路径写错,确认~/.xwin目录存在 |
edition 2024 is not stable | Rust 版本过低,用rustup update升级到 1.95+ |
Linux 上cargo build后没有.dll | 正常现象,需按第 5 节指定--target x86_64-pc-windows-msvc |
8. 延伸阅读
- 用户文档:docs/index.md、安装指南 docs/user-guide/installation.md
- Profile 创建教程:docs/user-guide/creating-mod-profiles.md
- 配置参考:docs/configuration-reference.md
- Profile JSON Schema:schemas/mod-profile.json
- 版本变更历史:docs/changelog.md
掌握本文流程后,你已具备完整构建、交叉编译并验证 me3 的能力。接下来可以深入 crates/mod-host/src/host.rs 了解 Host DLL 的注入与 Hook 机制,开始你的 me3 二次开发之旅 🚀
【免费下载链接】me3
A framework for modding and instrumenting games.
相关推荐
Nix 源码构建开发指南:从 devShell 到交叉编译的完整实践
Nix 源码构建开发指南:从 devShell 到交叉编译的完整实践 本文是 Nix(纯函数式包管理器)源码仓库的开发(Hacking)入门指南,基于仓库根目录
包管理器构建工具开发工具编程语言配置管理操作系统stlink 从源码编译完整指南:Windows MSVC、Linux 与交叉构建实战
stlink 从源码编译完整指南:Windows MSVC、Linux 与交叉构建实战 本文是 stlink(Open source STM32 MCU pro
嵌入式开发工具调试器Voltius源码构建实战:开发者必备的安装、开发与Docker交叉编译完整教程
Voltius源码构建实战:开发者必备的安装、开发与Docker交叉编译完整教程 Voltius 是一款基于 Rust + Tauri 构建的本地优先(Loca
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考