WoWOnchain
Docs

The game

Vanilla 1.12.1 on the vmangos core, played through a client rebuilt for the browser: what loads when you press Enter World, how it performs, and what a browser can't do.

2 min readUpdated Oct 14, 2026

Vanilla, as it was

The world is World of Warcraft 1.12.1 (build 5875), the last patch before The Burning Crusade, served by vmangos, an open-source server core that aims to reproduce vanilla's mechanics, scripts and content as closely as possible.

  • Rates: 1x experience and 1x drops. Levelling to 60 takes as long as it used to.
  • Content: the full 1.12 world, dungeons and raids, as vmangos implements them.
  • Interface: the stock 1.12 interface, plus five addons installed by the server.
  • Money: gold, silver and copper are shown as one Mithril amount. A [Linen Cloth] still sells for 13 copper; it just reads as 13 MITH.

On top of that, Undermine makes a short list of changes: faster travel out of combat, a 30-minute Hearthstone, a level 20 mount, the Mithril Cartel and its quests, and a few fair-play rules. They're all on one page: What's different.

The browser client

The game client is benilla, a reimplementation of the 1.12 client in Rust, compiled to WebAssembly and drawn with WebGPU. It reads the original game's data formats and runs the original interface code (FrameXML and Lua), so the login screen, unit frames, action bars, bags and every window look and behave like the 1.12 client.

What happens when you press Enter World:

  1. The page downloads the client (about 12 MB, compressed) and starts it. The loading bar shows the real progress.
  2. Game data streams from the server as the client asks for it, in small ranges: about 40 MB to reach character select, and about 130 MB by the time you're standing in your starting zone. A second visit downloads almost nothing. Nothing is installed.
  3. The client talks to the realm over a WebSocket on the same site, which the server forwards to the game's own protocol.

Performance

On a recent desktop the client runs at the display's refresh rate in a starting zone. From the live server, a cold visit reaches the login screen in about 7 seconds, and Enter World takes about 9 seconds the first time and 5 to 6 after that. The game does its work on one CPU thread, so a fast CPU matters more than the graphics card.

How it was built and every before-and-after measurement: The browser client.

Limits of a browser

  • Hidden tabs pause. Browsers stop drawing tabs you can't see, so the game freezes while it's in the background. Your character stays in the world.
  • The mouse cursor. A web page can't move your cursor. After mouse-look, the cursor stays where you started the drag.
  • One tab. The client keeps its settings in your browser's storage and locks it, so only one tab per browser profile can run the game.
  • Settings (key bindings, interface options, addon toggles) are saved in your browser and survive a reload or a closed tab.

Spotted something wrong or out of date? The docs follow the server, so tell us in game or on our socials and it gets fixed.