Browse by type

A native C++ World of Warcraft client with a custom Vulkan renderer.
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.
~/.local/share/wowee/warden_cache/.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.
Data/ tree indexed by manifest.json (fast lookup + caching)asset_extract + extract_assets.sh (Linux/macOS) / extract_assets.ps1 (Windows) for MPQ extraction (StormLib tooling)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.
# 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)
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]
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
./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.By default, wowee looks for ./Data/. You can override with:
export WOW_DATA_PATH=/path/to/extracted/Data
git clone --recurse-submodules https://github.com/Kelsidavis/WoWee.git
cd WoWee
mkdir build && cd build
cmake ..
make -j$(nproc)
./bin/wowee
build.sh, rebuild.sh, build.ps1, rebuild.ps1) auto-fetch the AMD SDK to:extern/FidelityFX-FSR2https://github.com/GPUOpen-Effects/FidelityFX-FSR2.gitmaster (depth-1 clone)extern/FidelityFX-FSR2/src/ffx-fsr2-api/ffx_fsr2.hextern/FidelityFX-FSR2/src/ffx-fsr2-api/vk/shaders/ffx_fsr2_accumulate_pass_permutations.hthird_party/fsr2_vk_permutations.extern/FidelityFX-SDKhttps://github.com/Kelsidavis/FidelityFX-SDK.gitmain (depth-1 clone)WOWEE_FFX_SDK_REPO=https://github.com/<you>/FidelityFX-SDK.gitWOWEE_FFX_SDK_REF=<branch-or-tag>frameinterpolation + opticalflow) and Vulkan shader manifests:sdk/src/backends/vk/CMakeShadersFrameinterpolation.txtsdk/src/backends/vk/CMakeShadersOpticalflow.txtWOWEE_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.AMD FSR3 Frame Generation (Experimental) persists to config.amd_fidelityfx_vk / ffx_fsr3_vk) in loader paths.WOWEE_FFX_SDK_RUNTIME_LIB=/absolute/path/to/<amd-runtime-library>Native (100%)Native (100%), Ultra Quality (77%), Quality (67%), Balanced (59%)$ claude mcp add WoWee \
-- python -m otcore.mcp_server <graph>