MCPcopy Create free account
hub / github.com/Kelsidavis/WoWee

github.com/Kelsidavis/WoWee @v1.0.0-editor

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.0-editor ↗ · + Follow
12,127 symbols 36,445 edges 635 files 2,002 documented · 17% updated 2d agov2.0.2-preview · 2026-07-11★ 465

Browse by type

Functions 9,534 Types & classes 2,593
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

WoWee - World Of Warcraft Engine Experiment

Wowee Logo

A native C++ World of Warcraft client with a custom Vulkan renderer.

Sponsor Discord

Watch the video

Watch the video

Watch the video

Protocol Compatible with Vanilla (Classic) 1.12 + TBC 2.4.3 + WotLK 3.3.5a.

Legal Disclaimer: This is an educational/research project. It does not include any Blizzard Entertainment assets, data files, or proprietary code. World of Warcraft and all related assets are the property of Blizzard Entertainment, Inc. This project is not affiliated with or endorsed by Blizzard Entertainment. Users are responsible for supplying their own legally obtained game data files and for ensuring compliance with all applicable laws in their jurisdiction.

Status & Direction (2026-04-14)

  • Compatibility: Vanilla (Classic) 1.12 + TBC 2.4.3 + WotLK 3.3.5a are all supported via expansion profiles and per-expansion packet parsers. All three expansions are roughly on par.
  • Tested against: AzerothCore/ChromieCraft, TrinityCore, Mangos, and Turtle WoW (1.17).
  • Current focus: code quality (SOLID decomposition, documentation), rendering stability, and multi-expansion coverage.
  • Warden: Full module execution via Unicorn Engine CPU emulation. Decrypts (RC4→RSA→zlib), parses and relocates the PE module, executes via x86 emulation with Windows API interception. Module cache at ~/.local/share/wowee/warden_cache/.
  • CI: GitHub Actions builds for Linux (x86-64, ARM64), Windows (MSYS2 x86-64 + ARM64), and macOS (ARM64). Security scans via CodeQL, Semgrep, and sanitizers.
  • Container builds: Multi-platform Docker build system for Linux, macOS (arm64/x86_64 via osxcross), and Windows (LLVM-MinGW) cross-compilation.
  • Release: v1.8.9-preview — 530+ WoW API functions, 140+ events, 664 opcode handlers.

World Editor

Standalone tool for creating custom WoW zones with novel open format exports.

# Build
cmake --build build --target wowee_editor

# Run
./build/bin/wowee_editor --data Data

# Batch convert assets
./build/bin/wowee_editor --convert-m2 Creature/Bear/Bear.m2 --data Data
./build/bin/wowee_editor --convert-wmo World/WMO/Stormwind/Stormwind.wmo --data Data

6 editing modes (Sculpt, Paint, Objects, Water, NPCs, Quests) with 30+ terrain tools, multi-select, time-of-day lighting, quest chains, and full undo/redo.

7 novel open format replacements for all Blizzard proprietary formats: WOT/WHM (terrain), WOC (collision), WOM1/WOM2 (static+animated models), WOB (buildings), zone.json (map def), PNG (textures), JSON (data tables). See tools/editor/FORMAT_SPEC.md for full specifications.

Exported zones auto-load in the wowee client from custom_zones/ or output/ directories.

AzerothCore integration: File > Generate Server Module creates a ready-to-import module with SQL spawn tables, map registration, teleport commands, zone flags, and a server admin README.

Features

Rendering Engine

  • Terrain -- Multi-tile streaming with async loading, texture splatting (4 layers), frustum culling, expanded load radius during taxi flights
  • Atmosphere -- Procedural clouds (FBM noise), lens flare with chromatic aberration, cloud/fog star occlusion
  • Characters -- Skeletal animation with GPU vertex skinning (256 bones), race-aware textures, per-instance NPC hair/skin textures
  • Buildings -- WMO renderer with multi-material batches, frustum culling, collision (wall/floor classification, slope sliding), interior glass transparency
  • Instances -- WDT parser for WMO-only dungeon maps, area trigger portals with glow/spin effects, seamless zone transitions
  • Water & Lava -- Terrain and WMO water with refraction/reflection, magma/slime rendering with multi-octave FBM noise flow, Beer-Lambert absorption, M2 lava waterfalls with UV scroll
  • Particles -- M2 particle emitters with WotLK struct parsing, billboarded glow effects, lava steam/splash effects
  • Lighting -- Shadow mapping with PCF filtering, per-frame shadow updates, AABB-based culling, interior/exterior light modes, WMO window glass with fresnel reflections
  • Performance -- Binary keyframe search for animations, incremental spatial index, static doodad skip, hash-free render/shadow culling

Asset Pipeline

  • Extracted loose-file Data/ tree indexed by manifest.json (fast lookup + caching)
  • Optional overlay layers for multi-expansion asset deduplication
  • asset_extract + extract_assets.sh (Linux/macOS) / extract_assets.ps1 (Windows) for MPQ extraction (StormLib tooling)
  • File formats: BLP (DXT1/3/5), ADT, M2, WMO, DBC (Spell/Item/Faction/etc.)

Gameplay Systems

  • Authentication -- Full SRP6a implementation with RC4 header encryption
  • Character System -- Creation (with nonbinary gender option), selection, 3D preview, stats panel, race/class support
  • Movement -- WASD movement, camera orbit, spline path following, transport riding (trams, ships, zeppelins), movement ACK responses
  • Combat -- Auto-attack, spell casting with cooldowns, damage calculation, death handling, spirit healer resurrection
  • Targeting -- Tab-cycling with hostility filtering, click-to-target, faction-based hostility (using Faction.dbc)
  • Inventory -- 23 equipment slots, 16 backpack slots, drag-drop, auto-equip, item tooltips with weapon damage/speed, server-synced bag sort (quality/type/stack), independent bag windows
  • Bank -- Full bank support for all expansions, bag slots, drag-drop, right-click deposit (non-equippable items)
  • Spells -- Spellbook with specialty, general, profession, mount, and companion tabs; drag-drop to action bar; item use support
  • Talents -- Talent tree UI with proper visuals and functionality
  • Action Bar -- 12 slots, drag-drop from spellbook/inventory, click-to-cast, keybindings
  • Trainers -- Spell trainer UI, buy spells, known/available/unavailable states
  • Quests -- Quest markers (! and ?) on NPCs and minimap, quest log, quest details, turn-in flow, quest item progress tracking
  • Auction House -- Search with filters, pagination, sell picker with tooltips, bid/buyout
  • Mail -- Item attachment support for sending
  • Vendors -- Buy, sell, and buyback (most recent sold item), gold tracking, inventory sync
  • Loot -- Loot window, gold looting, item pickup, chest/gameobject looting
  • Gossip -- NPC interaction, dialogue options
  • Chat -- Tabs/channels, emotes, chat bubbles, clickable URLs, clickable item links with tooltips
  • Party -- Group invites, party list, out-of-range member health via SMSG_PARTY_MEMBER_STATS
  • Pets -- Pet tracking via SMSG_PET_SPELLS, action bar (10 slots with icon/autocast tinting/tooltips), dismiss button
  • Map Exploration -- Subzone-level fog-of-war reveal, world map with continent/zone views, quest POI markers, taxi node markers, party member dots
  • NPC Voices -- Race/gender-specific NPC greeting, farewell, vendor, pissed, aggro, and flee sounds for all playable races including Blood Elf and Draenei
  • Warden -- Warden anti-cheat module execution via Unicorn Engine x86 emulation (cross-platform, no Wine)
  • UI -- Loading screens with progress bar, settings window with graphics quality presets (LOW/MEDIUM/HIGH/ULTRA), shadow distance slider, minimap with zoom/rotation/square mode, top-right minimap mute speaker, separate bag windows with compact-empty mode (aggregate view)

Graphics & Performance

Quality Presets

WoWee includes four built-in graphics quality presets to help you quickly balance visual quality and performance:

Preset Shadows MSAA Normal Mapping Clutter Density
LOW Off Off Disabled 25%
MEDIUM 200m distance 2x Basic 60%
HIGH 350m distance 4x Full (0.8x) 100%
ULTRA 500m distance 8x Enhanced (1.2x) 150%

Press Escape to open Video Settings and select a preset, or adjust individual settings for a custom configuration.

Performance Tips

  • Start with LOW or MEDIUM if you experience frame drops
  • Shadows and MSAA have the largest impact on performance
  • Reduce shadow distance if shadows cause issues
  • Disable water refraction if you encounter GPU errors (requires FSR to be active)
  • Use FSR2 (built-in upscaling) for better frame rates on modern GPUs

Building

Prerequisites

# Ubuntu/Debian
sudo apt install libsdl2-dev libglm-dev libssl-dev \
                 libvulkan-dev vulkan-tools glslc \
                 libavformat-dev libavcodec-dev libswscale-dev libavutil-dev \
                 zlib1g-dev cmake build-essential libx11-dev \
                 libunicorn-dev \          # optional: Warden module execution
                 libstorm-dev              # optional: asset_extract tool

# Fedora
sudo dnf install SDL2-devel glm-devel openssl-devel \
                 vulkan-devel vulkan-tools glslc \
                 ffmpeg-devel zlib-devel cmake gcc-c++ libX11-devel \
                 unicorn-devel \           # optional: Warden module execution
                 StormLib-devel            # optional: asset_extract tool

# Arch
sudo pacman -S sdl2 glm openssl \
               vulkan-devel vulkan-tools shaderc \
               ffmpeg zlib cmake base-devel libx11 \
               unicorn                    # optional: Warden module execution
               # StormLib: install from AUR for asset_extract tool

# macOS (Homebrew)
brew install cmake pkg-config sdl2 glew glm openssl@3 zlib ffmpeg \
             vulkan-loader vulkan-headers shaderc \
             unicorn \
             stormlib
# unicorn is optional (Warden module execution)
# stormlib is optional (asset_extract tool)

Container build

You can use podman to build application in separate container. - Install podman - Then run container/build-in-container.sh - Artifacts can be found in /tmp/wowee.[random value].[commit hash]

Game Data

This project requires WoW client data that you extract from your own legally obtained install.

Wowee loads assets via an extracted loose-file tree indexed by manifest.json (it does not read MPQs at runtime).

For a cross-platform GUI workflow (extraction + texture pack management + active override state), see: - Asset Pipeline GUI

1) Extract MPQs into ./Data/

# Linux / macOS
./extract_assets.sh /path/to/WoW/Data wotlk

# Windows (PowerShell)
.\extract_assets.ps1 "C:\Games\WoW-3.3.5a\Data" wotlk
# Or double-click extract_assets.bat
Data/
  manifest.json
  interface/
  sound/
  world/
  expansions/

Notes:

  • StormLib is required to build/run the extractor (asset_extract), but the main client does not require StormLib at runtime.
  • extract_assets.sh / extract_assets.ps1 support classic, tbc, wotlk targets.

2) Point wowee at the extracted data

By default, wowee looks for ./Data/. You can override with:

export WOW_DATA_PATH=/path/to/extracted/Data

Compile & Run

git clone --recurse-submodules https://github.com/Kelsidavis/WoWee.git
cd WoWee

mkdir build && cd build
cmake ..
make -j$(nproc)

./bin/wowee

AMD FSR2 SDK (External)

  • Build scripts (build.sh, rebuild.sh, build.ps1, rebuild.ps1) auto-fetch the AMD SDK to:
  • extern/FidelityFX-FSR2
  • Source URL:
  • https://github.com/GPUOpen-Effects/FidelityFX-FSR2.git
  • Ref:
  • master (depth-1 clone)
  • The renderer enables the AMD backend only when both are present:
  • extern/FidelityFX-FSR2/src/ffx-fsr2-api/ffx_fsr2.h
  • extern/FidelityFX-FSR2/src/ffx-fsr2-api/vk/shaders/ffx_fsr2_accumulate_pass_permutations.h
  • If the SDK checkout is missing generated Vulkan permutation headers, CMake auto-bootstraps them from third_party/fsr2_vk_permutations.
  • If SDK files are missing entirely, CMake falls back to the internal non-AMD FSR2 path automatically.

FidelityFX SDK (Framegen Extern)

  • Build scripts and CI also fetch:
  • extern/FidelityFX-SDK
  • Source URL:
  • https://github.com/Kelsidavis/FidelityFX-SDK.git
  • Ref:
  • main (depth-1 clone)
  • Override with env vars:
    • WOWEE_FFX_SDK_REPO=https://github.com/<you>/FidelityFX-SDK.git
    • WOWEE_FFX_SDK_REF=<branch-or-tag>
  • This ref includes Vulkan framegen building blocks (frameinterpolation + opticalflow) and Vulkan shader manifests:
  • sdk/src/backends/vk/CMakeShadersFrameinterpolation.txt
  • sdk/src/backends/vk/CMakeShadersOpticalflow.txt
  • CMake option:
  • WOWEE_ENABLE_AMD_FSR3_FRAMEGEN=ON enables a compile-probe target (wowee_fsr3_framegen_amd_vk_probe) that validates SDK FI/OF/FSR3/Vulkan interface headers at build time.
  • Runtime toggle:
  • In settings, AMD FSR3 Frame Generation (Experimental) persists to config.
  • Runtime library loader is Path A only (official AMD runtime).
  • Auto-probe checks common names (for example amd_fidelityfx_vk / ffx_fsr3_vk) in loader paths.
  • Override runtime path with:
    • WOWEE_FFX_SDK_RUNTIME_LIB=/absolute/path/to/<amd-runtime-library>
  • If runtime is missing, FG is cleanly unavailable (Path C).

Current FSR Defaults

  • Upscaling quality default: Native (100%)
  • UI quality order: Native (100%), Ultra Quality (77%), Quality (67%), Balanced (59%)
  • Default `FSR Sharpness

Core symbols most depended-on inside this repo

Shape

Method 7,184
Class 2,422
Function 2,350
Enum 171

Languages

C++92%
C6%
Python2%

Modules by API surface

extern/catch2/catch_amalgamated.hpp892 symbols
extern/catch2/catch_amalgamated.cpp689 symbols
extern/vk_mem_alloc.h637 symbols
extern/nlohmann/json.hpp586 symbols
include/game/game_handler.hpp358 symbols
include/game/world_packets.hpp357 symbols
src/game/game_handler_callbacks.cpp317 symbols
extern/stb_image.h218 symbols
src/game/game_handler.cpp181 symbols
src/game/social_handler.cpp145 symbols
src/game/inventory_handler.cpp123 symbols
src/game/spell_handler.cpp107 symbols

For agents

$ claude mcp add WoWee \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page