slaterain/nv-rs · 上手攻略
- 仓库:slaterain/nv-rs
- 链接:https://github.com/slaterain/nv-rs
- 分类:游戏引擎重实现 / Rust / Bevy
- 作者:Tom
- 更新:2026-10-09
是什么
nv-rs 是一个从零重写《辐射:新维加斯》(Fallout: New Vegas)的实验性开源项目,使用 Rust 语言和 Bevy 游戏引擎,目标是在不使用原始引擎的情况下 1:1 再现原版游戏行为。它读取玩家自有副本的 Data 文件夹(插件、模型、纹理、音效等),无需转换或修改游戏安装目录。
项目强调行为精确还原:规则、常量、公式全部来自对原版 FalloutNV.exe 的逆向工程(用 Ghidra 分析),而非人工调参。Rust 实现的游戏规则 crate 没有任何外部依赖,Bevy 只负责渲染、音频和输入——这一分离也为后续 VR 支持奠定了基础。
⚠️ 重要声明:nv-rs 是独立项目,与 Bethesda Softworks、ZeniMax Media、Obsidian Entertainment 或 Microsoft 均无关联或背书。项目不包含任何游戏文件,必须使用自己合法获取的游戏副本。
解决什么问题
原始的 FalloutNV.exe 在现代硬件上运行存在大量兼容性问题(尤其在 Windows 10/11 及 Wine/Crossover 环境),且源代码从未公开。nv-rs 的核心价值在于:
- 现代平台支持:用 Rust + Bevy 重写的渲染和输入层,绕过了原始引擎的兼容性问题
- 代码可维护性:Rust 的内存安全保证让游戏逻辑层的长期维护成为可能(原版 C++ 引擎充满隐式内存问题)
- 可验证的正确性:所有游戏行为都通过 Ghidra 逆向 + Oracle 工具录制 → 对比测试,确保 Rust 实现与原版完全一致
- VR 扩展潜力:模拟层与表现层分离,为后续接入 VR 头显提供了架构基础
快速安装
方式一:下载可玩包(推荐,2026-10 当前最新)
- 前往 Releases 下载
windows-x64.zip - 解压到任意目录(路径中不要包含中文或特殊字符)
- 双击运行
Play.cmd - 程序会提示输入 Fallout New Vegas 安装路径下的
Data文件夹路径 - 选择场景:
Doc Mitchell's house(开篇房间)或Goodsprings(第一章地图) - 游玩
⚠️ 核心测试包不需要游戏文件;运行完整游戏场景(Doc Mitchell's house 及之后)必须提供合法游戏 Data 文件夹。
方式二:源码编译
前提条件:稳定版 Rust(建议 rustup install stable)。
# 克隆
git clone https://github.com/slaterain/nv-rs.git
cd nv-rs
# 编译核心 workspace(无外部依赖)
cargo build --release
cargo test --workspace
# 编译 Bevy 可视化应用(独立 workspace,Bevy 0.16)
cd viewer
cargo run --release -- "D:\Games\Fallout New Vegas\Data" GSDocMitchellHouse
⚠️
viewer子项目依赖 Bevy 0.16(2025 年早期版本),首次编译需要下载大量图形资源,耗时可能较长。
运行验收测试(Windows PowerShell,需要游戏 Data 文件)
powershell -File scripts/acceptance.ps1 -Data "D:\Games\Fallout New Vegas\Data" -Build
验收测试会自动重放三条游戏路线(Doc Mitchell 房间路线 + Goodsprings 两条任务路线),每次代码变更都会触发 CI 级别的回归检查。
核心用法
项目结构一览
| 目录/文件 | 作用 |
|---|---|
crates/ |
核心:esm/bsa/nif/dds 格式解析器 + world/physics/script/ui 等游戏规则 |
viewer/ |
Bevy 应用:渲染、音频、输入(独立 workspace,Bevy 0.16) |
research/ghidra/ |
Ghidra 脚本:函数导出、符号导入 |
research/nv-oracle/ |
Oracle 工具:录制原版程序实际行为供对比验证 |
docs/ |
里程碑、方法论、各项技术文档 |
scripts/acceptance.ps1 |
自动化验收路线回放脚本 |
nvinspect 工具
命令行格式数据检查工具,无需运行完整游戏即可查看游戏 Data 文件内容:
# 编译
cargo build --release
# 检查某个 .esp 插件的记录
cargo run --release -p nvinspect -- "D:\Games\Fallout New Vegas\Data" record <plugin_name>
# 查看 cell 列表
cargo run --release -p nvinspect -- "D:\Games\Fallout New Vegas\Data" cells
# 查看碰撞覆盖范围
cargo run --release -p nvinspect -- "D:\Games\Fallout New Vegas\Data" collision <cell_id>
开发者工作流
# 1. 认领任务:在 docs/TASKS.md 中找标注 [task] 的 GitHub Issue,评论 "Claiming this"
# 2. 从 main 创建 topic branch
git checkout -b topic/m2-npc-dialogue
# 3. 开发并测试(核心 crate 测试无需游戏文件)
cargo test --workspace
# 4. 运行验收路线
powershell -File scripts/acceptance.ps1 -Data "D:\Games\Fallout New Vegas\Data" -Build
# 5. 提交 PR → main → 维护者审核合并
控制说明(游玩时)
| 按键 | 功能 |
|---|---|
| WASD | 移动 |
| 鼠标右键(按住) | 视角旋转 |
| E | 交互 |
| Tab | Pip-Boy 菜单 |
| F5 / F9 | 存档 / 读档 |
| F12 | 提交 Bug 报告 |
| Esc | 退出 |
典型适用场景
- 怀旧 + 现代化体验:在现代操作系统上运行 NV,无需折腾兼容性层或老旧驱动
- 游戏研究 / 逆向工程学习:完整展示了如何用 Ghidra + Oracle 工具对商业游戏进行行为级逆向并用 Rust 重实现
- 贡献开源游戏重实现:项目欢迎 AI agent 辅助贡献(参见 CONTRIBUTING.md + AGENTS.md),有明确的任务认领和验收流程
- ECS 架构参考:Bevy ECS 模式在复杂 RPG 游戏逻辑中的应用实战
- Rust 游戏开发教学:从零实现一个 AAA 级 RPG 的核心子系统(战斗、AI、对话、存档)
坑与注意
| 坑点 | 说明 | 应对 |
|---|---|---|
| 不支持原生 NVSE 插件 DLL | 社区扩展脚本引擎不被模拟 | 使用官方 DLC 的 .esp 插件 |
| 不支持原始存档加载 | 存档格式尚未完全逆向 | 每次从 Doc Mitchell 房间重新开始 |
| 面部编辑器未实现 | 角色创建部分功能缺失 | 当前版本跳过面部编辑 |
| macOS 移植中 | Windows 是唯一经过完整测试的平台 | macOS 用户可关注社区 fork |
| 游戏 Data 路径不能含中文/空格 | PowerShell 脚本路径解析问题 | 安装路径选纯英文路径 |
| DLC 消息框干扰开篇 | 启用官方 DLC 时 Intro 动画后可能弹框 | 直接点击继续,不影响测试 |
| 无侧对比验证 | 项目坦承尚未做完整路线与原版的逐帧对比 | 不要当作"完整体验"使用 |
| VR 目标未验证 | 架构上支持但无实际硬件测试 | M6 里程碑尚无时间表 |
与同类对比
| 项目 | 语言 | 成熟度 | 目标 | 特点 |
|---|---|---|---|---|
| nv-rs | Rust + Bevy | 实验性(< M2) | 1:1 再现 NV | 精确逆向验证、ECS 架构 |
| openmw | C++(OpenMW 引擎) | 成熟可玩 | 1:1 再现上古卷轴3 | 完整游戏可玩、社区活跃 |
| xoreos | C++ | 早期 | 重实现多款 BioWare 游戏 | 跨游戏通用引擎 |
| fallout纯渲染MOD(如TTW) | C++ / 脚本 | 成熟 | 视觉效果更新 | 非重实现,是原引擎上的 MOD |
nv-rs 与 OpenMW 的最大区别是方法论:OpenMW 是对原版存档格式和游戏逻辑的重新设计,而 nv-rs 追求对原版程序行为的逐字节级验证,通过 Ghidra 逆向 + Oracle 工具链确保每条规则都与原版一致。
一句话推荐结论
nv-rs 是目前最严谨的 Fallout: New Vegas 行为级重实现项目——如果你对 Rust 游戏开发、逆向工程、或 ECS 架构在 RPG 中的实战感兴趣,它是一个不可多得的从零到一的完整案例。
⚠️ 当前为实验性快照(2026-10),不支持完整通关。仅建议对项目技术方向有了解兴趣的开发者试用或参与贡献。