benilla README

The project's README from github.com/samwhosung/benilla. As one markdown file: README.md.

benilla

A complete World of Warcraft 1.12.1 client, written from scratch in Rust and Bevy

Discord YouTube devlog License

benilla plays the whole game: character creation, questing and professions, dungeons and raids, battlegrounds and honor, groups, guilds, trade, mail and the auction house, on the stock 1.12 interface and with your addons. It connects to a 1.12.1 server over the original protocol and reads the game's data from your own 1.12.1 install. Every file format, the network protocol and the interface engine are written from scratch, with no original client code, no third-party WoW crates and no bundled game assets.

What's inside

The format readers and the UI engine core are plain Rust with no Bevy in them, and the world renderer runs with no game attached. docs/MAP.md maps every crate and subsystem, generated from the code.

Status

Complete and fully playable. What is left:

benilla is a faithful 1.12.1 client and the foundation people build on. There are no prebuilt downloads: a packaged build, a particular server's changes or anything 1.12.1 never had belongs in a fork, and forks are welcome. GitHub lists every public fork.

Not planned: other expansions or client versions, Warden (anticheat).

Running it

benilla builds and runs on macOS, Linux and Windows. You need:

WOW_DATA=/path/to/WoW/Data cargo run --release -p benilla

On Windows, in PowerShell:

$env:WOW_DATA="C:\path\to\WoW\Data"; cargo run --release -p benilla

Each release is a tag on the Releases page: git checkout <tag> first runs that release, and main is the development tip.

WOW_DATA names the install's Data folder; a link to the install named WoW at the repo root does the same (ln -s /path/to/WoW WoW, or on Windows a junction, which needs no admin rights: New-Item -ItemType Junction -Path WoW -Target C:\path\to\WoW). The server defaults to localhost:3724, the stock auth port. Point WOW_HOST at another (WOW_HOST=play.example.com, or play.example.com:5000 for a remapped port), or set it from the Realmlist button on the login screen, which remembers it. Credentials go in at the login screen, or set WOW_USER and WOW_PASS to skip it.

Settings, screenshots and addons live in benilla-config/ at the repo root: a 1.12 addon goes in benilla-config/AddOns/. docs/CONTRIBUTING.md has the rest, from the player build to the tests.

Contributing

Issues and pull requests are open. docs/CONTRIBUTING.md says where to start, what gets in, how a change is judged and what happens to a pull request once it is open. Bugs, questions and ideas are welcome on the Discord too.


Early inspiration and file format guidance came from the wowemulation-dev community, and warcraft-rs in particular.

benilla is an independent fan project, not affiliated with or endorsed by Blizzard Entertainment. It ships no Blizzard content: no art, models, sounds, maps, MPQ contents or FrameXML. You provide your own legally obtained 1.12.1 client, and the stock interface runs off its FrameXML at runtime. The few files under crates/benilla-app/assets/ui/ are our own, not copies of it: adapters over stock files, and the settings windows and script error log benilla draws itself.

World of Warcraft is a trademark of Blizzard Entertainment, Inc. Our own code is licensed under MIT or Apache 2.0, at your option. The two vendored components under third_party/, the kira audio engine and a Lua 5.1 patched to the 1.12 client's dialect, keep their own upstream licenses, alongside each.

benilla (samwhosung/benilla)

Searching Database…

Что это?Benilla — полноценный игровой клиент World of Warcraft 1.12.1, целиком написанный с нуля на Rust и Bevy; он позволяет проходить квесты, подземелья, рейды, поля боя, заниматься гильдиями, торговлей и аукционным домом на стандартном интерфейсе 1.12.
Это игровой клиент или эмулятор сервера?Это чистый клиент. Отдельный сервер 1.12.1 для подключения всё равно нужен; benilla лишь читает ваши игровые данные и общается с сервером по оригинальному протоколу.
Как его запустить?Клонируйте репозиторий и переключитесь на release-тег (или main, чтобы взять самую свежую dev-версию), задайте WOWDATA или создайте симлинк с именем WoW, указывающий на папку Data вашего клиента, затем запустите; сервер по умолчанию localhost:3724, если не задан WOWHOST.
Что нужно, чтобы начать играть?Ваш собственный легально полученный английский клиент 1.12.1 (сборка 5875), работающий сервер 1.12.1 вроде vmangos с выключенным Warden, стабильный Rust и C-компилятор, поскольку встроенная в клиент Lua собирается из исходников.
Чего не хватает или что не планируется?Готовых сборок для скачивания нет (вы собираете её сами), а поддержка других дополнений WoW, других версий клиента или античита Warden не планируется — это удел комьюнити-форков.
На каких платформах он работает?Benilla собирается и нативно работает на macOS, Linux и Windows.
Поддерживает ли benilla сторонние аддоны для 1.12 вроде Questie или Bartender2?Да, он запускает движок FrameXML и Lua на цепочке патчей вашей установки, и аддоны вроде Questie, pfUI, Bagnon и Bartender2 работают вместе со стандартным интерфейсом.
Почему benilla написана целиком с нуля, а не на основе существующего кода WoW?В нём нет оригинального кода клиента, сторонних WoW-крейтов и встроенных игровых ассетов, что делает его независимым фанатским проектом, который лишь читает ваши собственные легально полученные файлы клиента.
К какому серверному ПО можно подключить benilla?К любому серверному ядру 1.12.1 с оригинальным протоколом, например vmangos (под него ведётся разработка) или cMaNGOS, с выключенным Warden.
Можно просто скачать готовую сборку вместо компиляции?Нет, готовых сборок нет — вы собираете её из исходников с помощью Rust и Bevy, а пакетированные сборки отданы комьюнити-форкам.
Creator
samwhosung
Size
46.4 MB
Stars
754
Age
2mo
Commits · 90 Days