azerothcore/azerothcore-wotlk

Complete Open Source and Modular solution for MMO

25
Hotness score
59
Reliability score
8,627
Stars
about 10 years
Age
0
Published reviews
0
Questions

Scores

Hotness and reliability

The two headline scores, measured daily, with 30, 90, and 180 day views.

Hotness score

Jul 19, 2026

Current25

Previous21

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Hotness formula

40% Hot today + 40% Hot this week + 20% Breakout.

  • 40% Hot today: 14
  • 40% Hot this week: 35
  • 20% Breakout: 7
  • Stars gained: 1d: 3
  • Stars gained: 7d: 37
  • Stars gained: 14d: 70
  • Stars gained: 30d: 132
  • Stars gained: 90d: 386

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Jul 19, 2026

Current59

Previous59

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Reliability formula

30% Continuity + 30% Closure + 20% Shipping + 10% Liveness + 10% Support burden.

  • 30% Continuity: 88
  • 30% Closure: 77
  • 20% Shipping: 0
  • 10% Liveness: 100
  • 10% Support burden: 0

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

Reliability breakdown

What drives the reliability score

Component scores measured daily from GitHub activity (2026-07-17).

Continuity30% of headline88

Activity on 87 of 90 tracked days in the last 90 and 27 of 30 in the last 30.

Closure30% of headline77

Merged 464 of 624 PRs opened and closed 395 of 493 issues opened over the last 90 tracked days — PR flow carries 55% of this component, issue flow 45%.

Shipping20% of headline0

0 releases in the last 180 days, 0 in the last 90 and 0 in the last 30 — a steady cadence scores highest.

Liveness10% of headline100

Last push 0 days ago — freshness decays as pushes age (roughly halves every 83 days without a push).

Support burden10% of headline0

2,416 open issues against 8,627 stars — about 280 open issues per 1,000 stars. Lighter backlogs score higher.

Adoption confidence54

Modeled — how confidently teams are adopting this repo. Stargazers

Maintenance quality61

Modeled from PR/issue responsiveness and upkeep signals. Activity pulse

Risk score48

Modeled — lower is better; adoption and continuity risk. Repository

Stays active (30d)85%

Modeled chance the repo stays active over 30 days. Activity pulse

Stays active (90d)79%

Modeled chance the repo stays active over 90 days. Activity pulse

Release rhythm (180d)0

Regularity of releases over the last 180 days. Releases

Maintainer bus risk (90d)6%

Modeled — lower is better; concentration of commits in few maintainers. Contributors graph

Topics

Explore related topics

Jump into the topic listings this repository belongs to.

Measured history

Project metrics

Weekly GitHub totals with 30, 90, and 180 day views.

Weekly star gains

Jul 19, 2026

Current44

Previous31

Weekly star gains

7331-10
Full metrics details

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Cumulative stars

Jul 19, 2026

Current8,624

Previous8,580

Cumulative total

8,6244,3120
Full metrics details

Running total of the GitHub GraphQL stargazer count over time (not weekly deltas), reconstructed from starredAt events and totalCount in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Issues opened

Jul 12, 2026

Current42

Previous46

Weekly total

51260
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Jul 12, 2026

Current15

Previous43

Weekly total

102510
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

177 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Jul 12, 2026

Current38

Previous71

Weekly total

113570
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Jul 12, 2026

Current27

Previous91

Weekly total

107540
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

177 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Jul 12, 2026

Current16

Previous58

Weekly total

103520
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue

Issue close ratio (daily)

Jul 17, 2026

Current1.00

Previous6.00

Daily ratio — a gap means nothing was opened that day

How this works: each day's value is issues closed that day ÷ issues opened that day. Days when nothing was opened render as gaps — never a rolling average or a made-up zero. Values above 1 mean the project closed more issues than arrived that day.

21.5010.750.00
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

167 observed daily rows. Missing days are not fabricated.

Per-day formula: issues closed that day ÷ issues opened that day; blank when nothing was opened (a gap, not a zero).

DateIssues openedIssues closedStored score

Pull request close ratio (daily)

Jul 17, 2026

Current2.00

Previous0.64

Daily ratio — a gap means nothing was opened that day

How this works: each day's value is pull requests closed that day ÷ pull requests opened that day. Days when nothing was opened render as gaps — never a rolling average or a made-up zero. Values above 1 mean the project closed more pull requests than arrived that day.

10.005.000.00
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

177 observed daily rows. Missing days are not fabricated.

Per-day formula: pull requests closed that day ÷ pull requests opened that day; blank when nothing was opened (a gap, not a zero).

DatePRs openedPRs closedStored score

Project Overview

AzerothCore is an open-source C++ server emulator for World of Warcraft: Wrath of the Lich King (patch 3.3.5a). If you want to run a private WoW server — a personal sandbox, a development environment, or a community-hosted realm — it is the most actively maintained and extensible option targeting the WotLK client.

The project descends from TrinityCore and, before that, the original MaNGOS emulator. AzerothCore forked from TrinityCore's 3.3.5a branch and added a dedicated module system on top, which separates custom game logic from core engine code. That separation is the project's defining feature.

AzerothCore is released under GPL-2.0. You can run it privately, modify it, and build on it freely, but any modifications you distribute must also be open-source. Running a public private server using this emulator occupies legal grey territory regardless of the software license — that is a risk you accept separately.

Key Challenges Addressed

WoW server emulation is not a simple project to get right. AzerothCore specifically addresses:

  • Game database correctness: WoW's world database is enormous — millions of NPC entries, quest records, spell definitions, and loot tables. AzerothCore maintains a curated game database updated continuously by contributors with quest fixes, NPC behavior corrections, and world data patches.

  • Core stability: Accurately emulating WoW's server-side logic in C++ requires handling hundreds of interacting subsystems — combat math, pathfinding, spell chaining, channeling, world event states. AzerothCore carries years of TrinityCore fixes plus its own corrections.

  • Safe extensibility: Customizing earlier WoW emulators meant patching core C++ files directly. Every upstream update then required hand-merging your changes. AzerothCore's module hook system lets you attach custom behavior at registered extension points without touching core files, keeping your customizations mergeable against upstream.

  • Cross-platform build: C++ MMO servers are notoriously hard to build reliably across Linux, macOS, and Windows. AzerothCore ships maintained CMake configs and a Docker Compose setup that handles most of the platform friction.

Getting Started

The fastest path is Docker:

git clone https://github.com/azerothcore/azerothcore-wotlk.git
cd azerothcore-wotlk
docker compose up

This pulls prebuilt images and starts the world server, auth server, and database. You still need to supply your own WoW 3.3.5a client data files — AzerothCore cannot distribute them.

For a source build:

mkdir build && cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=$HOME/azeroth-server/ \
  -DTOOLS=1 -DSCRIPTS=static
make -j$(nproc)
make install

Sharp edges to handle before your first launch:

  • Run all four map extractors before starting the worldserver: If you skip mapextractor, mmaps_generator, vmap4extractor, and vmap4assembler, NPC pathfinding is disabled and every creature moves in a straight line through walls. There is no warning — the server starts, players log in, and pathfinding is silently broken. Run the extractors first, verify the Data/ directory matches the wiki's layout, then start the server.
  • Database assembly must complete cleanly: If acore.sh db-assembler fails partway through because of a MySQL charset mismatch (utf8 vs utf8mb4), the worldserver connects to an empty database and rejects every player login. Check your MariaDB charset configuration before running the assembler.
  • Module load order is your responsibility: Two modules hooking the same event in conflicting ways do not fail loudly. AzerothCore does not enforce dependency ordering automatically — you configure it in each module's CMake setup. If you see incorrect behavior after adding a second module that touches the same system, check hook registration order first.

Features and Use Cases

Module system: You extend the server by writing C++ modules that hook into registered event points. AzerothCore's hook API covers creature scripts, player events, spell casts, map loads, and dozens of other game systems. The community maintains a module catalog with actively developed additions for transmogrification, solo LFG queuing, custom item shops, and bot players.

C++ creature and quest scripting: NPC behavior is implemented by writing a script class that overrides virtual methods — OnDeath, OnSpellCast, OnGossipHello — and registering it with the script manager. This is how you implement custom boss encounters, NPC quests, and triggered world events.

Raid and dungeon scripting: Major WotLK content — Naxxramas, Ulduar, Trial of the Crusader, Icecrown Citadel — is scripted in the core. Completeness varies by instance; some are fully playable, others have known gaps tracked in the issue list. Check the issue tracker before committing to specific progression content.

Lua scripting via mod-eluna: Adding the mod-eluna module embeds Lua scripting into the server, letting you write game scripts in Lua instead of C++. This lowers the barrier for content contributors who are not C++ engineers. Not all hooks are exposed through Lua, so verify coverage for the specific systems you need.

Server management APIs: AzerothCore ships with a SOAP interface and a REST module for banning accounts, resetting instances, and modifying character data without direct database access.

Ecosystem and Dependencies

AzerothCore's core dependencies:

  • MySQL/MariaDB (MariaDB 10.6+ recommended): all game world, character, and auth data.
  • Boost: threading, networking, and filesystem operations throughout the codebase.
  • OpenSSL: authentication handshake with WoW clients.
  • recastnavigation/recastnavigation: movement map generation and NPC pathfinding. Without compiled mmaps, pathfinding is disabled entirely.

Community modules that see regular use:

  • mod-eluna: Lua scripting embedded into the server.
  • mod-transmog: Transmogrification system for WotLK.
  • mod-solo-lfg: Allows solo players to queue for group content.
  • mod-npc-bots: Adds bot players that function as party members.

The AzerothCore wiki covers installation, module authoring, the scripting API, and database schema. It is the primary reference for anything beyond the repository's README.

Architectural Overview

AzerothCore runs as two processes: authserver and worldserver.

authserver handles login authentication and realm list delivery. It is stateless between connections — it validates credentials against the auth database and tells the WoW client which worldserver to connect to. You can run multiple worldservers under one authserver for separate realms.

worldserver is a single multi-threaded C++ process managing the entire game world: map instancing, player session handling, spell resolution, combat calculations, NPC AI ticks, and scripted world events. The map update loop runs on a fixed tick rate; player sessions are dispatched through a session update thread pool.

The scripting system centers on ScriptMgr, a singleton that dispatches events to registered script objects. When a creature dies, ScriptMgr::OnCreatureDeath() iterates registered handlers in order. Modules register their script objects at startup through the module hook interface, which runs before the world fully loads.

Database I/O uses a connection pool with async dispatch. Synchronous database queries in the map update loop are a performance footgun — if a module makes blocking DB calls per-player per-tick, server lag scales linearly with player count. Use async queries and tune connection pool sizing for anything beyond a small private realm.

The module system's core mechanism is a macro-generated shim layer around ScriptMgr that lets modules intercept any hook without modifying core source files. Modules compile as shared libraries or link statically; load order and inter-module dependencies are declared per-module in CMake configuration.

Pros and Cons

Pros

  • Active upstream development: the main branch receives regular commits covering bug fixes, DB corrections, and core improvements.
  • Module system that works cleanly: custom gameplay systems attach at well-defined extension points without forking the core, keeping your customizations mergeable against upstream updates.
  • Solid Docker setup: the official Compose configuration reliably runs a working development server with no manual dependency resolution.
  • Strong community knowledge base: years of issues, PRs, and documented solutions mean most common problems are already answered.
  • Scripting API is well documented: the wiki covers creature scripting, player events, and module authoring in enough depth to build substantial custom content without reverse-engineering source.

Cons

  • WotLK-only scope: if you need a different expansion — vanilla, TBC, Cataclysm — you need a different emulator.
  • C++ is the primary extension language: the full hook surface is C++ only. Lua via mod-eluna covers a subset; verify coverage before depending on it for a specific system.
  • Raid script coverage gaps: not every WotLK instance is fully scripted. Audit content you need against the issue tracker before building a progression server around it.
  • Single worldserver architecture: horizontal scaling is limited. High concurrent player counts require significant tuning; default settings are not optimized for production load.
  • GPL-2.0 copyleft: modifications you distribute must also be GPL-2.0. If you need to keep customizations proprietary, this is a hard blocker.

Comparison and Alternatives

Measured 90-day trends for this project and its alternatives.

GitHub stars

Weekly star gains

7331-10
Full metrics details

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

Azerothcore Wotlk

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
TrinityCore

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
CMaNGOS WotLK

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
vMaNGOS

GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Issues opened

Weekly total

51260
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Azerothcore Wotlk

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue
TrinityCore

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue
CMaNGOS WotLK

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue
vMaNGOS

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue

Issues closed

Weekly total

102510
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Azerothcore Wotlk

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

177 observed daily rows. Missing days are not fabricated.

DateValue
TrinityCore

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

143 observed daily rows. Missing days are not fabricated.

DateValue
CMaNGOS WotLK

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

143 observed daily rows. Missing days are not fabricated.

DateValue
vMaNGOS

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

143 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests opened

Weekly total

71360
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Azerothcore Wotlk

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue
TrinityCore

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue
CMaNGOS WotLK

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue
vMaNGOS

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests closed

Weekly total

91460
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Azerothcore Wotlk

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

177 observed daily rows. Missing days are not fabricated.

DateValue
TrinityCore

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

143 observed daily rows. Missing days are not fabricated.

DateValue
CMaNGOS WotLK

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

143 observed daily rows. Missing days are not fabricated.

DateValue
vMaNGOS

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

143 observed daily rows. Missing days are not fabricated.

DateValue

Pull requests merged

Weekly total

58290
Full metrics details

GitHub API observation. Historical values render only when the source provides a real observation for that day.

Azerothcore Wotlk

GitHub API observation. Historical values render only when the source provides a real observation for that day.

177 observed daily rows. Missing days are not fabricated.

DateValue
TrinityCore

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue
CMaNGOS WotLK

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue
vMaNGOS

GitHub API observation. Historical values render only when the source provides a real observation for that day.

143 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed pull request ratio

Weekly average

100500
Full metrics details

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

Azerothcore Wotlk

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
TrinityCore

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
CMaNGOS WotLK

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
vMaNGOS

GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Open/closed issues ratio

Weekly average

100500
Full metrics details

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

Azerothcore Wotlk

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
TrinityCore

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
CMaNGOS WotLK

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue
vMaNGOS

GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.

180 observed daily rows. Missing days are not fabricated.

DateValue

Releases

Weekly total

110
Full metrics details

GitHub release published_at events bucketed by UTC day; drafts are excluded.

Azerothcore Wotlk

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
TrinityCore

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
CMaNGOS WotLK

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue
vMaNGOS

GitHub release published_at events bucketed by UTC day; drafts are excluded.

180 observed daily rows. Missing days are not fabricated.

DateValue

Hotness score

Weekly average

100500
Full metrics details

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

Azerothcore Wotlk

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
TrinityCore

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
CMaNGOS WotLK

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score
vMaNGOS

Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.

  • Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
  • Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
  • Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
  • Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
  • Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
  • Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
DateStarsStars 1dStars 7dStars 14dStars 30dStars 90dSame-day multiplierWeekly multiplierFortnight multiplierHot todayHot weekBreakoutStored score

Reliability score

Weekly average

100500
Full metrics details

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

Azerothcore Wotlk

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
TrinityCore

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
CMaNGOS WotLK

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score
vMaNGOS

Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.

180 observed daily rows. Missing days are not fabricated.

Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.

  • Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
  • Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
  • Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
  • Support burden = 100 − 2 × open issues per 1,000 stars
  • Liveness = 100 × exp(−pushed days ago ÷ 120)

Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.

DateIssues openedIssues closedPRs openedPRs mergedReleasesStarsOpen issuesPushed days agoContinuityClosureShippingLivenessSupport burdenLicenseObserved daysMissing daysNeeds healingStored score

The WoW private server emulator space has several actively maintained C++ projects, differentiated primarily by target expansion and extensibility architecture.

Project Repo Hotness (~6mo) PRs merged (~6mo) Star growth (~6mo)
Azerothcore Wotlk https://github.com/azerothcore/azerothcore-wotlk 58.98 1715 1376
TrinityCore https://github.com/TrinityCore/TrinityCore metrics pending 0 42
CMaNGOS WotLK https://github.com/cmangos/mangos-wotlk metrics pending 0 3
vMaNGOS https://github.com/vmangos/core metrics pending 0 16

TrinityCore is AzerothCore's direct parent codebase. It targets multiple WoW versions across separate branches (3.3.5a, 4.x, and newer client versions) and has a larger active contributor base than AzerothCore. TrinityCore has no module system comparable to AzerothCore's — all customization requires forking the core. If you need multi-expansion support, or you want the broadest contributor pool for the 3.3.5a codebase itself, TrinityCore is the stronger foundation.

CMaNGOS WotLK descends from the original MaNGOS codebase, which predates TrinityCore. The architecture differs from AzerothCore in several places. CMaNGOS has a smaller active community and less tooling, but offers a distinct implementation lineage if that matters for your use case.

vMaNGOS targets Vanilla WoW (1.12.1), not WotLK. It is not a direct alternative for WotLK content but is the primary option if you want a vanilla-era realm instead.

The best overall alternative is TrinityCore. It has the most active development, the widest expansion coverage, and the deepest institutional knowledge — and it is the only major project that covers WoW client versions beyond WotLK.

Conclusion

AzerothCore is the right pick for developers who want to run and customize a WotLK server without merging upstream diffs into a forked core on every patch. The module system genuinely delivers on that promise, and the Docker path makes onboarding fast. Start with the official AzerothCore wiki installation guide before attempting a source build.

Do not launch the worldserver before running all four map extractors — skipping mmaps_generator leaves NPC pathfinding silently disabled, and every creature in the game will walk through solid geometry instead of around it, breaking all scripted encounters. Before your first server start, run mapextractor, vmap4extractor, vmap4assembler, and mmaps_generator against your 3.3.5a client, then verify your Data/ directory contains the maps/, vmaps/, mmaps/, and dbc/ subdirectories.

Join the conversation

Reviews · Questions · Posts

Share what you know about azerothcore-wotlk — write a review from your real experience, ask an implementation question, or publish a post about how you use it.

Share your experience

Write or update your review

Explain what worked, what broke down, and what another team should know before adopting azerothcore-wotlk.

Write your review now — it saves locally and publishes automatically after you sign in.

Rating
Positive attributes
Negative attributes

Project Q&A

Questions and answers

Browse implementation threads tied directly to azerothcore/azerothcore-wotlk. Each question links through to the full answer page.

Q&A No threads yet

Be the first to ask how teams run azerothcore-wotlk in production. Every question you post becomes a durable, searchable answer page other developers can find.

Ask the first question

Related posts

Posts tagged with the same topics

These posts come from the same topic surface as this repo, so readers can move from project evaluation into practical writeups and migration notes without leaving context.

Posts No topic-linked posts yet

Share how your team uses azerothcore-wotlk — a migration note, an architecture writeup, or a comparison. Your post reaches everyone browsing these same topics.

Write the first post
Get a weekly email with the hottest new projects in the Emulators & System Emulation and Emulator world.
No Spam. Unsubscribe easily at any time.

Copyright 2018-2026 Awesome Open Source.  All rights reserved.