An unofficial open source implementation of a popular MMO game client circa 2010.
Go to file
fallenoak 22eb04e495
Some checks are pending
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:cl compiler_name:MSVC cxx:cl os:windows-latest system_name:Windows test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:clang compiler_name:Clang cxx:clang++ os:macos-latest system_name:macOS test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:gcc compiler_name:GCC cxx:g++ os:ubuntu-latest system_name:Linux test_path:WhoaTest]) (push) Waiting to run
feat(ui): implement CSimpleButton_GetFontString
2026-01-30 21:41:01 -06:00
.github/workflows chore(build): use pull_request_target in pr workflow 2025-12-27 12:59:10 -06:00
docs/img chore(docs): update login screenshot to reflect current progress 2025-12-27 14:17:33 -06:00
lib chore(build): update common 2026-01-11 22:18:26 -06:00
src feat(ui): implement CSimpleButton_GetFontString 2026-01-30 21:41:01 -06:00
test feat(util): add CGameTime::GameTimeUpdate 2026-01-28 22:01:23 -06:00
vendor fix(build): add missing zlib files to build 2026-01-08 21:41:16 -06:00
.clang-format chore(style): add InsertNewlineAtEOF to .clang-format 2025-12-27 18:31:48 -06:00
.clang-format-ignore chore(style): add .clang-format 2023-01-05 22:51:18 -06:00
.editorconfig chore(style): tune up .editorconfig 2025-12-27 18:27:57 -06:00
.gitignore chore(test): add external test fixtures 2025-12-15 16:46:48 -06:00
.gitmodules chore(bc): switch BlizzardCore to bc lib 2023-03-04 11:29:25 -06:00
CMakeLists.txt chore(build): remove explicit build type 2025-09-02 19:51:01 -05:00
CONTRIBUTING.md chore(docs): expand contribution guidelines 2023-01-15 11:03:32 -06:00
LICENSE chore(license): add license 2023-01-02 13:18:47 -06:00
README.md chore(docs): update README with current progress 2025-12-23 13:06:48 -06:00

Whoa

Push

Welcome to Whoa, an unofficial open source implementation of the World of Warcraft 3.3.5a (build 12340) game client in C++11.

Supported Platforms

Currently, Windows 10+ and macOS 10.14+ are supported, including recent versions of macOS on M1 and M2 processors. Support for Linux is in progress.

Building

To build, ensure you have installed a recent version of CMake and an appropriate C++ build environment, and run the following from the whoa directory:

mkdir build && cd build
cmake ..
make install

Assuming all went well, you should see a dist/bin directory appear in the build directory. The dist/bin directory will contain a Whoa executable.

Running

Whoa doesn't currently support reading from MPQ archives. Instead, it assumes you are launching the Whoa executable from the root of a fully extracted MPQ archive set for World of Warcraft 3.3.5a (build 12340). You can obtain a valid set of MPQ archives to extract by installing World of Warcraft 3.3.5a from legally purchased original install media. Whoa does not provide any copy of game data.

Assuming all goes well, you should be greeted by the login screen, complete with its flying dragon animation loop and background music. The options panels can be interacted with, although some options currently do nothing. Game credits can be viewed. You may log in to a server and interact with the character select screen.

Whoa is very much a work-in-progress: in its current state, it doesn't support entering the game world, doesn't permit character creation or deletion, and doesn't persist game settings to disk. These things will be supported over time.

Whoa in action

Contributing

Please follow the guidelines contained in CONTRIBUTING.md when making contributions.

FAQ

Why?

It's fascinating to explore the development practices used to build a modern major video game.

Why 3.3.5a?

The game and its libraries have become significantly more complex in the intervening 10+ years. By picking 3.3.5a, it's possible to imagine this implementation will eventually be complete.

Can I use this in my own development projects?

It's probably a bad idea. The original game is closed source, and this project is in no way official.

This project is released into the public domain.

World of Warcraft: Wrath of the Lich King ©2008 Blizzard Entertainment, Inc. All rights reserved. Wrath of the Lich King is a trademark, and World of Warcraft, Warcraft and Blizzard Entertainment are trademarks or registered trademarks of Blizzard Entertainment, Inc. in the U.S. and/or other countries.