World of Warcraft Engine Experiment - a custom opensource client.
Find a file
Kelsi 76a16a214e Improve movement, crouching, and add M2 animation
Movement:
- Fix speed controls: Shift=sprint (28), normal run (14), Ctrl=walk (5)
- Reduce character height for doorway clearance (eye height 1.2)
- Add working crouch (C or X key) with smooth transition (eye height 0.6)
- Jump to stand up from crouch

M2 Animation:
- Add animation time tracking per M2 instance
- Add procedural swaying animation in vertex shader
- Update animation each frame for vegetation movement
2026-02-02 23:10:19 -08:00
assets/shaders Performance optimizations and collision improvements 2026-02-02 23:03:45 -08:00
docs Initial commit: wowee native WoW 3.3.5a client 2026-02-02 13:03:22 -08:00
include Improve movement, crouching, and add M2 animation 2026-02-02 23:10:19 -08:00
src Improve movement, crouching, and add M2 animation 2026-02-02 23:10:19 -08:00
.gitignore Initial commit: wowee native WoW 3.3.5a client 2026-02-02 13:03:22 -08:00
ATTRIBUTION.md Add attribution and source citations for open source release 2026-02-02 22:09:33 -08:00
CMakeLists.txt Initial commit: wowee native WoW 3.3.5a client 2026-02-02 13:03:22 -08:00
LICENSE Initial commit: wowee native WoW 3.3.5a client 2026-02-02 13:03:22 -08:00
README.md Initial commit: wowee native WoW 3.3.5a client 2026-02-02 13:03:22 -08:00

Wowee

A native C++ client for World of Warcraft 3.3.5a (Wrath of the Lich King) with a fully functional OpenGL rendering engine.

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.

Features

Rendering Engine

  • Terrain -- Multi-tile streaming, texture splatting (4 layers), frustum culling
  • Water -- Animated surfaces, reflections, refractions, Fresnel effect
  • Sky -- Dynamic day/night cycle, sun/moon with orbital movement
  • Stars -- 1000+ procedurally placed stars (night-only)
  • Atmosphere -- Procedural clouds (FBM noise), lens flare with chromatic aberration
  • Moon Phases -- 8 realistic lunar phases with elliptical terminator
  • Weather -- Rain and snow particle systems (2000 particles, camera-relative)
  • Characters -- Skeletal animation with GPU vertex skinning (256 bones)
  • Buildings -- WMO renderer with multi-material batches, frustum culling, real MPQ loading

Asset Pipeline

  • MPQ archive extraction (StormLib), BLP DXT1/3/5 textures, ADT terrain tiles, M2 character models, WMO buildings, DBC database files

Networking

  • TCP sockets, SRP6 authentication, world server protocol, RC4 encryption, packet serialization

Building

Prerequisites

# Ubuntu/Debian
sudo apt install libsdl2-dev libglew-dev libglm-dev \
                 libssl-dev libstorm-dev cmake build-essential

# Fedora
sudo dnf install SDL2-devel glew-devel glm-devel \
                 openssl-devel StormLib-devel cmake gcc-c++

# Arch
sudo pacman -S sdl2 glew glm openssl stormlib cmake base-devel

Game Data

This project requires WoW 3.3.5a (patch 3.3.5, build 12340) data files. You must supply your own legally obtained copy. Place (or symlink) the MPQ files into a Data/ directory at the project root:

wowee/
└── Data/
    ├── common.MPQ
    ├── common-2.MPQ
    ├── expansion.MPQ
    ├── lichking.MPQ
    ├── patch.MPQ
    ├── patch-2.MPQ
    ├── patch-3.MPQ
    └── enUS/          (or your locale)

Alternatively, set the WOW_DATA_PATH environment variable to point to your WoW data directory.

Compile & Run

git clone https://github.com/yourname/wowee.git
cd wowee

# Get ImGui (required)
git clone https://github.com/ocornut/imgui.git extern/imgui

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

./bin/wowee

Controls

Key Action
WASD Move camera
Mouse Look around
Shift Move faster
F1 Performance HUD
F2 Wireframe mode
F9 Toggle time progression
F10 Toggle sun/moon
F11 Toggle stars
+/- Change time of day
C Toggle clouds
L Toggle lens flare
W Cycle weather (None/Rain/Snow)
K / J Spawn / remove test characters
O / P Spawn / clear WMOs

Documentation

Technical Details

  • Graphics: OpenGL 3.3 Core, GLSL 330, forward rendering
  • Performance: 60 FPS (vsync), ~50k triangles/frame, ~30 draw calls, <10% GPU
  • Platform: Linux (primary), C++17, CMake 3.15+
  • Dependencies: SDL2, OpenGL/GLEW, GLM, OpenSSL, StormLib, ImGui

License

This project's source code is licensed under the MIT License.

This project does not include any Blizzard Entertainment proprietary data, assets, or code. World of Warcraft is (c) 2004-2024 Blizzard Entertainment, Inc. All rights reserved.

References