World of Warcraft in the browser using JavaScript and WebGL.
Licensed under the MIT license.
Wowser is in the process of being split up into (at minimum) the following parts:
This repository will in the future become an umbrella package.
Wowser is a proof-of-concept of getting a triple-A game to run in a webbrowser, attempting to tackle a wide variety of challenges: data retrieval, socket connections, cryptography, 3d graphics, binary data handling, background workers and audio, to name a few.
Wowser is aiming to be both a low-level API as well as a graphical client, interacting with a World of Warcraft server like an official client would.
Note: Only Wrath of the Lich King (3.3.5a) is currently supported. A copy of the official client is required.
Warning: Do not attempt to use this client on official/retail servers as your account may get banned.
At present, Wowser is capable of:
In addition, there's good progress on getting terrain and models rendered.
Wowser is presumed to be working on any browser supporting [JavaScript's typed arrays] and at the very least a binary version of the WebSocket protocol.
Wowser is written in ES2015, developed with webpack and Gulp, compiled by Babel and soon™ to be tested through Mocha.
Clone the repository:
git clone git://github.com/wowserhq/wowser.git
Download and install Node.js – including npm
– for your platform.
Install dependencies:
npm install
Install StormLib and BLPConverter, which are used to handle Blizzard's game files.
Webpack's development server monitors source files and builds:
npm run web-dev
Wowser will be served on http://localhost:8080
.
To deliver game resources to its client, Wowser ships with a pipeline.
Build the pipeline:
npm run gulp
Keep this process running to monitor source files and automatically rebuild.
After building, serve the pipeline as follows in a separate process:
npm run serve
On first run you will be prompted to specify the following:
C:/Program Files (x86)/World of Warcraft/Data
)3000
)Clear these settings by running npm run reset
Disclaimer: Wowser serves up resources to the browser over HTTP. Depending on your network configuration these may be available to others. Respect laws and do not distribute game data you do not own.
To utilize raw TCP connections a WebSocket proxy is required for JavaScript clients.
Websockify can - among other things - act as a proxy for raw TCP sockets.
For now, you will want to proxy both port 3724 (auth) and 8129 (world). Use a different set of ports if the game server is on the same machine as your client.
npm run proxy 3724 host:3724
npm run proxy 8129 host:8129
When contributing, please: