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)

ecs
Searching Database…

What is this?Benilla is a complete World of Warcraft 1.12.1 game client, written entirely from scratch in Rust and Bevy, that lets you play questing, dungeons, raids, battlegrounds, guilds, trade and the auction house on the stock 1.12 interface.
Is this a game client or a server emulator?It is purely a client. You still need a separate 1.12.1 server to connect to; benilla only reads your game data and talks to the server over the original protocol.
How do I get it running?Clone the repo and check out a release tag (or use main for the dev tip), set WOWDATA or symlink a folder named WoW to your client's Data folder, then run it; the server defaults to localhost:3724 unless you set WOWHOST.
What do I need before I can play?Your own legally obtained English 1.12.1 client (build 5875), a running 1.12.1 server such as vmangos with Warden off, stable Rust, and a C compiler since the client's bundled Lua is built from source.
What's missing or not planned?There are no prebuilt downloads (you build it yourself), and support for other WoW expansions, other client versions, or Warden anticheat is not planned; those belong in community forks.
Which platforms does it run on?Benilla builds and runs natively on macOS, Linux and Windows.
Does benilla support third-party 1.12 addons like Questie or Bartender2?Yes, it runs a FrameXML and Lua engine off your install's patch chain, and addons such as Questie, pfUI, Bagnon and Bartender2 work alongside the stock interface.
Why was benilla written entirely from scratch instead of reusing existing WoW code?It contains no original client code, no third-party WoW crates, and no bundled game assets, making it an independent fan project that only reads your own legally obtained client files.
What server software can I connect benilla to?Any 1.12.1 server core that speaks the original protocol, such as vmangos (what development runs against) or cMaNGOS, with Warden disabled.
Can I just download a ready-made build instead of compiling it?No, there are no prebuilt downloads — you build it from source with Rust and Bevy, and packaged builds are left to community forks.
Creator
samwhosung
Size
46.4 MB
Stars
754
Age
2mo
Commits · 90 Days