opensourceprojects.dev

A broadsheet for software that doesn't ask for your email

A native C++ WoW client with a custom Vulkan renderer
GitHub RepoImpressions3

Project Description

View on GitHub

Someone Built a WoW Client From Scratch in C++ With a Vulkan Renderer

You've probably spent some time in Azeroth over the years, but have you ever wondered what's actually happening underneath the surface? The official client is a black box. WoWee is an attempt to open that box—a native C++ World of Warcraft client built from the ground up, with its own Vulkan renderer and protocol handling for three different expansions.

What It Does

WoWee is an educational and research project that reimplements a World of Warcraft client natively in C++. It supports Vanilla 1.12, TBC 2.4.3, and WotLK 3.3.5a through expansion-specific profiles and packet parsers. The renderer is custom-built on Vulkan 1.3, handling terrain, WMOs, M2 models, water and lava, particles, lighting, shadows, weather, and asynchronous world streaming.

On the networking side, it implements SRP6 authentication, RC4 header encryption, and the full protocol stack for all three expansions. The gameplay layer covers character creation and selection, movement, transports, combat, spells, talents, inventory, banks, vendors, trainers, quests, loot, mail, auction house, gossip, chat, parties, pets, maps, and taxi travel.

It's been tested with AzerothCore/ChromieCraft, TrinityCore, MaNGOS, and Turtle WoW 1.18. It also loads Blizzard's own FrameXML interface from your game data, and addons placed in the game's Interface\AddOns folder work too.

Why It's Cool

It's a full vertical slice, not just a renderer demo. Plenty of projects render WoW maps in a modern engine and stop there. WoWee actually connects to servers, authenticates, moves your character around, and handles combat. The fact that it works with multiple server emulators and even Turtle WoW's custom 1.18 client is a strong signal that the protocol implementation is solid.

The asset pipeline is self-contained. There's an asset builder both inside the client and as a standalone wowee_assets window that extracts from your own game installation. You're not downloading pre-extracted assets from somewhere sketchy—you point it at your legally owned game data and it does the work. That's the right approach for a project like this.

Controller support with proper button names. Keyboard and mouse work, but you can also play with an Xbox, PlayStation, Nintendo, or Steam Deck controller, and the button prompts use the correct names for each. That's a small detail, but it shows attention to platform-specific polish.

It runs on Android. The README lists Linux, macOS, and Windows on x86-64 and ARM64, plus Android on arm64 with on-screen controls. Running a WoW client on a phone is the kind of thing that sounds absurd until you see it working.

Warden emulation through Unicorn Engine. The optional Warden module execution uses Unicorn Engine's x86 emulation to run Blizzard's anti-cheat module. That's a genuinely interesting technical approach—rather than reimplementing Warden or ignoring it, the project emulates the x86 environment it expects.

Frame generation and upscaling are in the pipeline. AMD FSR3 frame generation is available behind a build flag (WOWEE_ENABLE_AMD_FSR3_FRAMEGEN), and FSR 1 and FSR 3 upscaling are built in. These are early features, but they point toward where the project is heading.

How to Try It

The desktop build needs SDL3 and a Vulkan 1.3 driver (MoltenVK on macOS). Unicorn enables Warden execution. StormLib is required by the asset extraction tools—without it, the client still builds but those components are left out.

On Ubuntu or Debian:

sudo apt install build-essential cmake pkg-config git \
  libsdl3-dev libglm-dev libssl-dev zlib1g-dev libx11-dev \
  libvulkan-dev

Then clone the repo and build it:

git clone https://github.com/kelsidavis/wowee
cd wowee
cmake -B build
cmake --build build

Check the latest release if you'd rather grab a prebuilt binary. There's also a demonstration video if you want to see it in action before committing to a build.

One important note: WoWee contains no Blizzard assets, data, or proprietary code. You'll need to supply your own legally obtained game data and comply with the laws in your jurisdiction. The project isn't affiliated with or endorsed by Blizzard.

The project is an active work in progress, not a drop-in replacement for the official client. Check the project status and the known limitations section before reporting bugs.

Final Thoughts

WoWee is best suited for developers who are curious about how MMO clients work under the hood—people who want to read the source, understand the protocol, and maybe contribute. It's not trying to be a polished replacement for the official client, and the README is upfront about that. The world editor and AMD FSR3 frame generation are marked as experimental, and grass is still in the experimental settings.

If you're interested in graphics programming, network protocol reverse engineering, or just want to see a Vulkan renderer pushing WoW geometry, this is worth a look. It's an ambitious project that's already covering a lot of ground, and it's open source.

Follow @githubprojects for more developer tools and open source projects.

Back to Projects
Project ID: 2644f55f-a28c-4150-b63c-d21391dd01a1Last updated: September 22, 2026 at 02:50 AM