# mangos-tbc: a World of Warcraft server emulator built on CMake and released under the GPL

> mangos-tbc is the C++ core of the CMaNGOS project, a server emulator that reproduces the behaviour of a retail MMORPG service so that private servers, protocol research and custom content can exist outside Blizzard's own hardware. Its documentation lives mostly in the wiki, and its licence comes with an OpenSSL linking exception and a firm boundary around Blizzard content.

**cmangos/mangos-tbc** — C(ontinued)-MaNGOS is about: -- Doing WoW-Emulation Right! 

- Repository: https://github.com/cmangos/mangos-tbc
- Website: http://cmangos.net
- Stars: 525 · Forks: 602
- Language: C++
- License: GPL-2.0
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/cmangos-mangos-tbc

## A server emulator whose stated goal is behaviour, not features

The README states the objective in one line, and the choice of words tells you what kind of project this is. It describes the goal as "Doing Emulation Right!" and then splits that phrase into three parts.

Doing means the work is software development rather than hosting or content production. Emulation is defined as developing a server software able to emulate a well known MMORPG service. Right is defined as a behaviour criterion: the system that is being emulated decides what correct means, and the code is measured against it.

That definition has practical consequences. This is not a proxy, a launcher or a client patch. It is a server implementation, in C++, that a server operator runs instead of connecting to a retail datacenter. The audience that follows from the description is specific: people running private servers, people studying the protocol and behaviour of a commercial game server, and people who want to add content the original service never shipped.

The README also insists that learning and teaching count as part of the work and that contributors are free to work on whatever interests them. That framing explains a lot about the shape of the codebase.

## The repository is a C++ tree with SQL, dependencies and project files kept apart

The top-level entries show how the work is organised. There is src/ for the implementation, dep/ for bundled third-party libraries, sql/ for the database layer, cmake/ and CMakeLists.txt for the build system, doc/ for documentation, contrib/ for contributed extras, and .github/ for the CI configuration and issue templates. Supporting files such as AUTHORS.md, COPYRIGHT.md, CONTRIBUTING.md, THANKS, ChangeLog.md and NEWS.md sit at the root.

Two of those entries carry more weight than they look. The dep/ directory is where third-party libraries live, and the README points out that some of them carry licences other than the GPL, which the project says must be upheld. That is a real obligation for anyone packaging a binary, and it is easier to honour when the dependencies are vendored in one known place.

The second is the sql/ directory, which signals that the world state lives in a relational database rather than in flat files or memory. For an emulator, the database is usually where creature placement, item data and quest state end up, and the presence of a dedicated directory implies a schema that operators import and upgrade over time.

The .clang-format file at the root tells you formatting is enforced by a shared style definition rather than left to each contributor, which matters in a codebase that many people patch in parallel.

## The README does not contain a single build command

This is the first thing to notice when you go looking for how to run the thing. There is no install section in the README, no cmake invocation, no compiler flags, no database user and no server start command anywhere in the file.

What the README offers instead is a map of where the instructions live:

```
  * [Wiki](https://github.com/cmangos/issues/wiki) with additional information on installation
  Documentation can be found in the doc/ subdirectory and on the GitHub wiki
```

So the actual build recipe is expected to be found in the community wiki and in the doc/ subdirectory of the repository. The repository itself still hints at the shape of that process: CMakeLists.txt plus a cmake/ directory indicate an out-of-source CMake build, createprojects.bat suggests a Windows helper for generating project files, and contrib/ is the usual place for scripts that help with database setup.

For an engineer evaluating this, that gap is the point of the first real check. Open the wiki installation page for the revision you intend to clone and compare it against the contents of sql/ and the current layout of src/, because the wiki is edited by contributors over time and can drift from the tree. Nothing in the README promises that they always match.

## CI runs on Windows, Ubuntu and MacOS, which constrains where the server realistically lives

The README carries build badges for three workflows: windows.yml, ubuntu.yml and macos.yml. Read literally, that says the project is expected to compile on all three of those operating systems, and it says nothing about what happens at runtime on each one.

A WoW server emulator is a long-running process with a network listener, a database connection and a tick loop, and the platform that matters is the one the server runs on, not the one the CI compiles on. The badge set proves portability of the code; it does not promise a packaged server, a systemd unit or a documented deployment layout.

The README also links a Discord server, the GitHub repositories, the issue tracker, the pull request page and the contributing guidelines, which is the standard arrangement for a volunteer project with no formal support desk. Anyone planning to run a private server for paying users is choosing to be their own operations team.

The Windows and MacOS workflows are useful to know about for two narrower jobs: producing a debug build on a workstation, and checking that a change compiles across platforms before proposing it.

## GPL-2.0-or-later with a written exception for linking OpenSSL

The licence statement is the clearest part of the README, and it is worth reading in full because of the exception appended to it. The base grant is the standard GNU General Public License, version 2 or any later version:

```
CMaNGOS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
```

On top of that, the project gives permission to link the released MaNGOS code with the OpenSSL library, or with modified versions of OpenSSL that keep the same licence, and to distribute the linked executables. The catch is stated just as plainly: the GPL still applies to everything in the build that is not OpenSSL. The exception can also be extended by whoever modifies the file, and it can be deleted by whoever does not want it.

That arrangement matters to a server operator who wants to ship a binary to a community or a hosting provider. A linked executable is distributable under the stated terms, while the underlying code stays copyleft. This is a licensing description and not a legal opinion, and it does not cover anything outside the project.

Separately, the README records a hard boundary. World of Warcraft content and assets are copyrighted by Blizzard Entertainment or its licensors, the project states that it is not affiliated with Blizzard, and a list of Blizzard names and trademarks is set out for reference. The emulator code is open; the game content is not.

## The alternative is a patched retail server, and the difference is ownership

There are two broad ways to get a World of Warcraft server running outside the official service. One is emulation: reimplement the server behaviour in source code, as mangos-tbc does. The other is modification: take a retail server build, patch the binary, and change its data files to open a private server.

The difference is ownership. Emulation gives you source, a licence, a commit history and an issue tracker, which means behaviour can be argued about in the open and fixed in a way that a patch against an opaque binary cannot. The cost is that every behaviour the emulator has not yet reproduced is a behaviour your server does not have, and the priority order of that work is set by contributors rather than by your operation.

A patch-based server inherits the fidelity of the build it was made from but inherits its licensing problem too, since it distributes Blizzard binaries and data. The README's licence text shows the other side of that coin, an open GPL project that explicitly disclaims any affiliation and leaves all content rights where they are.

For an operator, the deciding question is not fidelity alone. It is whether you intend to distribute anything, and whether you want a codebase whose decisions you can trace.

## The repository root keeps a WARNING file next to the licence

Two details in the top-level listing are easy to overlook and both bear on how the project is maintained.

The first is the WARNING file. It sits in the repository root, next to LICENSE, THANKS and NEWS.md, which is where a project puts a notice it expects contributors and operators to read before they start. The README does not explain its contents, so its wording has to be checked directly in the clone. Until you have read it, treat the code as unreviewed.

The second is the release record. The only published release is tagged "latest (Development Build(2026-10-20))", and the repository also carries ChangeLog.md and NEWS.md for the running commentary. A tag named latest that carries a development build label tells you there is no curated stable channel to pin to; the artifact naming itself is a signal about the intended upgrade path.

On maintenance activity, the last push was on 2026-10-19, so work is landing on the master branch continuously rather than in scheduled batches. The practical upgrade cost for a server operator is therefore a merge and a schema check rather than a versioned upgrade, and the SQL side is where that cost concentrates.

## Conclusion

mangos-tbc fits operators who want a self-hosted World of Warcraft server for private play, protocol study or custom content, and it does not fit anyone who needs Blizzard support, official client compatibility guarantees or permission to redistribute game assets. Before adopting it, check the wiki installation pages against the sql/ imports for the revision you clone, read the WARNING file in the repository root, and confirm that your server distributes no Blizzard data.

## FAQ

### What is mangos-tbc and who is it for?

It is the C++ server emulator maintained in the CMaNGOS project, described in the README as developing a server software able to emulate a well known MMORPG service. It is aimed at operators of private servers, protocol and behaviour researchers, and people who want to add custom content.

### How do I build mangos-tbc from source?

The README contains no build commands and points to the GitHub wiki and the doc/ subdirectory for installation details. The repository root shows a CMake build setup through CMakeLists.txt and cmake/, with a createprojects.bat helper for Windows.

### What licence is mangos-tbc released under?

The code is released under the GNU General Public License, version 2 or any later version, with a special exception permitting linking and distribution of the linked executable with the OpenSSL library. Third-party libraries bundled in dep/ carry their own licences that must be upheld.

### Does mangos-tbc include World of Warcraft game content?

No. The README states that World of Warcraft content and assets are copyrighted by Blizzard Entertainment or its licensors, and that the CMaNGOS project is not affiliated with Blizzard Entertainment or its licensors. Only the emulator code is open under the GPL.

### Which platforms does the mangos-tbc build cover?

The README shows CI workflow badges for Windows, Ubuntu and MacOS, which indicates the code is expected to compile on all three. The README does not document supported runtime platforms or packaged server builds.

### Is mangos-tbc actively maintained?

The last push was on 2026-10-19. The only published release is tagged latest (Development Build(2026-10-20)), and ChangeLog.md and NEWS.md at the root carry the running commentary on changes.

## Sources

- [cmangos/mangos-tbc on GitHub](https://github.com/cmangos/mangos-tbc)
- [License: GPL-2.0](https://github.com/cmangos/mangos-tbc/blob/master/LICENSE)
- [Project website](http://cmangos.net)
- [README](https://github.com/cmangos/mangos-tbc/blob/master/README.md)
- [Releases](https://github.com/cmangos/mangos-tbc/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/cmangos-mangos-tbc
