【免费下载链接】benilla
A complete World of Warcraft 1.12.1 client, written from scratch in Rust and Bevy
benilla 是一款用 Rust + Bevy 从零完整实现的魔兽世界 1.12.1 客户端:它不依赖原版客户端代码、不捆绑任何游戏资产,而是直接读取你自己合法安装的 1.12.1(build 5875)数据,并通过原始协议连接 1.12.1 服务器。本文是一份面向新手的 benilla 快速开始与配置指南,带你 10 分钟内完成克隆、编译与首次登录。
🎮 benilla 能做什么?
在跑起来之前,先了解你即将构建的是什么——这决定了它和普通"客户端壳"的本质区别:
| 能力 | 说明 |
|---|---|
| 🗺️ 完整游戏流程 | 角色创建、任务与职业、副本与团队、战场与荣誉、公会、交易、邮件、拍卖行 |
| 📦 全套格式解析 | MPQ 补丁链、BLP、DBC、ADT、WDT、WDL、M2、WMO 读取器全部手写,并作为 Bevy 的 AssetSource 接入 |
| 🌍 世界渲染 | 视距内地形流式加载、建筑内外光照、可游泳的水体、天空与天气、昼夜光照与雾效 |
| 🧙 角色与模型 | GPU 蒙皮 M2、完整动画控制器、粒子与法术特效、装备合成与坐骑 |
| 🌐 网络协议 | SRP6 认证到世界会话加密、对象镜像进 ECS,覆盖移动、聊天、战斗、法术、队伍与副本 |
| 🧩 界面引擎 | 自研 FrameXML + Lua 引擎,直接运行原版 1.12 界面,兼容 Questie、pfUI、Bagnon、Bartender2 等第三方插件 |
| 🔊 音频 | 音乐、环境音与音效,含室内外与水下切换、区域混响 |
每个 crate 的职责都可以在自动生成的 docs/MAP.md 中查到;benilla 与 1.12.1 原版的差异清单见 docs/DEVIATIONS.md。
✅ 运行前准备:三样东西缺一不可
benilla 支持macOS、Linux 和 Windows,但无论哪个平台,都需要提前准备:
- 一份合法的 1.12.1 客户端(build 5875):任何语言版本都行。benilla 只读取它、绝不写入,界面文字会跟随客户端语言显示。
- 一台 1.12.1 服务器:开发基于 vmangos,cMaNGOS 等核心同样适用。注意:benilla 不响应 Warden 反作弊,开启 Warden 强制校验的服务器会在超时后断开连接(vmangos 默认关闭 Warden)。
- Rust 工具链 + C 编译器:
- Rust 版本被 rust-toolchain.toml 锁定为1.98.1(含 clippy、rustfmt 组件),用 rustup 即可自动切换:
rustup show # 进入仓库目录后会自动使用锁定的 1.98.1- C 编译器用于部分依赖的构建,各平台差异:
- macOS:Xcode Command Line Tools(同时提供音频绑定所需的 libclang)
- Linux:ALSA 与 udev 开发包 +
pkg-config - Windows:Rust 安装器自带的 MSVC 构建工具
🚀 10分钟上手:克隆到登录的完整步骤
第 1 步:克隆仓库
git clone https://gitcode.com/gh_mirrors/be/benilla cd benilla第 2 步:编译并启动
只需一条命令——把WOW_DATA指向你 1.12.1 安装目录下的Data文件夹:
WOW_DATA=/path/to/WoW/Data cargo run --release -p benillaWindows PowerShell 写法:
$env:WOW_DATA="C:\path\to\WoW\Data"; cargo run --release -p benilla💡 首次
--release编译需要几分钟(这是一个 20+ crate 的 Rust 工作区);之后的迭代可用仓库内置的playprofile 增量编译,大幅缩短等待时间。
第 3 步:(可选)用软链接替代环境变量
如果你不想每次设置WOW_DATA,可以在仓库根目录建一个名为WoW的链接指向你的安装目录:
- Linux / macOS:
ln -s /path/to/WoW WoW - Windows(无需管理员权限):
New-Item -ItemType Junction -Path WoW -Target C:\path\to\WoW
⚙️ 关键配置:服务器、账号与常用环境变量
默认情况下,benilla 连接localhost:3724(标准认证端口),账号在登录界面输入。以下是日常最实用的环境变量,全部在启动前设置即可:
| 变量 | 作用 | 示例 |
|---|---|---|
WOW_DATA | 指向 1.12.1 安装的Data目录 | WOW_DATA=/path/to/WoW/Data |
WOW_HOST | 指定服务器地址(默认localhost:3724) | WOW_HOST=play.example.com或play.example.com:5000 |
WOW_USER/WOW_PASS | 预置账号密码,跳过登录界面输入 | WOW_USER=test WOW_PASS=123 |
小贴士:
- 🌐 不想记变量?登录界面有一个Realmlist 按钮,可以点选服务器并自动记住。
- 🏷️ 每个 release 都是仓库的一个 tag:
git checkout <tag>后运行即为该版本,main则是开发最新代码。
📁 你的设置、截图与插件都放在哪?
benilla 的所有玩家数据统一放在仓库根目录的benilla-config/下:
- 🖼️截图:游戏内截图保存在这里
- ⚙️设置:客户端配置(CVar 等)
- 🧩插件:把 1.12 插件解压到
benilla-config/AddOns/即可加载,原生界面 + 第三方插件开箱即用
🛠️ 常见问题速查
Q1:启动后提示找不到游戏数据怎么办?确认WOW_DATA指向的是安装目录下的Data子目录(而不是安装目录本身),且版本为build 5875。
Q2:能不加游戏客户端、直接运行吗?不能。benilla 不捆绑任何暴雪内容,没有Data目录时客户端会直接拒绝启动。这是它"零原版资产"设计的必然要求。
Q3:登录后被服务器断开?多半是服务器强制开启了 Warden 而 benilla 不响应 Warden。换用 vmangos(默认关闭 Warden)或关闭服务器端 Warden 校验。
Q4:编译太慢?开发时可用cargo play别名(即--profile play)获得增量编译;releaseprofile 关闭了 ThinLTO 以平衡链接时间。
📚 下一步:深入了解 benilla
跑通之后,这些入口值得收藏:
- docs/MAP.md:由代码自动生成的全部 crate 与子系统地图
- docs/DEVIATIONS.md:benilla 与 1.12.1 原版的已知差异清单
- docs/CONTRIBUTING.md:从玩家构建到测试体系的完整贡献指南
- docs/METHOD.md:项目方法论与本地服务器规则
按模块逛源码也是不错的学法:
- crates/benilla-mpq/:MPQ 归档读取器
- crates/benilla-protocol/:SRP6 认证与世界线协议
- crates/benilla-ui/:FrameXML + Lua 界面引擎核心
- crates/benilla-world/:地形、水体、光照与帧调度渲染器
- crates/benilla-app/:拼装一切的 Bevy 主应用
benilla 定位为"忠实于 1.12.1 的地基"——原版没有的功能应当以独立 crate 或 fork 的方式建在它之上。祝你在 Rust 写成的艾泽拉斯里玩得愉快!🎉
【免费下载链接】benilla
A complete World of Warcraft 1.12.1 client, written from scratch in Rust and Bevy
相关推荐
终极指南:15分钟快速搭建魔兽世界开源服务器
终极指南:15分钟快速搭建魔兽世界开源服务器 还在为复杂的魔兽世界私服搭建过程而烦恼吗?想要快速拥有属于自己的MMO游戏服务器吗?今天我将为你展示如何使用Aze
后端游戏开发魔兽世界API工具大全:5分钟快速上手wow_api指南
魔兽世界API工具大全:5分钟快速上手wow_api指南 想要快速掌握魔兽世界API开发?wow_api开源项目为你提供了完整的解决方案!这个专业的API工具集
后端10分钟跑通Ovis-Image:ComfyUI模型文件放置与快速开始完整指南
10分钟跑通Ovis Image:ComfyUI模型文件放置与快速开始完整指南 Ovis Image 是一个专为 ComfyUI 重新打包的开源图像生成模型仓库
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考