While many emulators aim for feature parity over quality of implementation, Ember strives for quality and performance first, while targeting modern platforms and toolchains.
No. Ember has been written from the ground up with zero code reuse from other cores. However, more mature projects still offer invaluable insights into the protocols and formats used.
Our primary goal isn't to produce a feature-complete, up-to-date emulator to use with newer clients. The 1.12.1 protocol was chosen as a fixed target to leverage the extensive research of prior projects, allowing for greater focus on writing code over reverse engineering.
Ember is a project open to new ideas, without aversion to rethinks about the best way to approach the challenges of server emulation. Being unencumbered by technical debt accrued by existing cores that are based on forks of early 2000s codebases allows Ember to take fresh approaches without worrying too much about how much we're going to break in the process. Some of those approaches have made their way to other projects!
Aside from emulation techniques, WoW is an old game but it still hides many secrets. Ember focuses on quality of implementation and that includes trying to figure things out that other projects haven't. As a result of work on Ember, WoW emulation is slightly more complete and accurate than it would have otherwise been. Some examples include...
- Patches for serious authentication vulnerabilities in most major cores. Write-up here.
- Client integrity validation (implemented by most major cores, based on Ember)
- Two-factor authentication (same as above)
- A more complete understanding of the authentication protocol, including implementation fixes that solved spurious login failures on other cores
- A multitude of message structure fixes that have been given directly to other projects, allowing cleaner implementations of game features (e.g. NPC emotes following player interactions)
- Correct character customisation options validation
Advancements in open source emulation flow in both directions, allowing the wider community to benefit, even if they all don't directly use or contribute to the same projects.
We have a retro ASCII-art banner straight from 1995 when the server runs. Priorities.
Ember uses Docker to make it easy to get the project up and running within minutes. Once you have Docker (version 19 and up) installed, simply run...
Docker 19:
Linux & MacOS:
DOCKER_BUILDKIT=1 docker build <path to Dockerfile>
Windows:
set "DOCKER_BUILDKIT=1" && docker build <path to Dockerfile>
Ember uses DOCKER_BUILDKIT=1
to enable experimental features in Docker 19 that allow for build caching. It can be omitted by setting it as an environmental variable.
Docker 20+:
docker build <path to Dockerfile>
Want to do it the hard way? No problem, just see docs/GettingStarted.md.
We have a Discord server over at https://discord.gg/WpPJzQS or you can check our website out for further documentation.
Ember aims to support the following platforms as a minimum:
Operating System | Architectures |
---|---|
Linux | x86, x64, ARMv7 |
Windows | x86, x64 |
Mac OS | x86, x64 |
Any compiler version equal or greater than the supported version should be capable of compiling Ember.
Supported | Minimum | |
---|---|---|
MSVC | 19.30 (VS2022) | 19.30 (VS2022) |
Clang | 18 | 18 |
GCC | 14 | 14 |
Note
Minimum versions support all language features required to build the project but will not receive any fixes to support their continued use (e.g. compiler-specific workarounds).
Ember currently targets C++26. The use of future language additions is permitted (e.g. technical specifications and drafts) as long as all three supported compilers provide a reasonable level of support.
master | development | |
---|---|---|
GitHub | ||
AppVeyor | ||
Coverity |
This project is licensed under the Mozilla Public License Version 2.0. A full copy of the license can be found in LICENSE or by clicking here.