AzerothCore is a C++ MMORPG server emulator for World of Warcraft 3.3.5a (WotLK), built with CMake, backed by MySQL.
- Do not configure or build unless explicitly asked. Builds are slow and rarely needed for code changes.
- Never edit SQL files outside
data/sql/updates/pending_db_*/unless explicitly requested.data/sql/base/,data/sql/archive/, anddata/sql/updates/db_*/are immutable. - Formatting follows
.editorconfig: UTF-8, LF, max 120 cols, trailing newline, no trailing whitespace; 4-space indent for C++ (tabs forbidden), 2-space for JSON/YAML/sh/ts/js.
Read the matching doc(s) BEFORE starting the task:
- Compiling, configuring, or running tests →
.agents/docs/build.md - Writing or modifying C++ →
.agents/docs/cpp-guidelines.md- Script work (under
src/server/scripts/) → also.agents/docs/cpp-scripts.md
- Script work (under
- Creating or modifying SQL →
.agents/docs/sql-guidelines.md- SmartAI work (
smart_scriptsdata) → also.agents/docs/cpp-scripts.md
- SmartAI work (
- Touching a subsystem that has a doc in
.agents/docs/systems/→ read that doc too - Capturing a lesson or adding/updating agent docs →
.agents/docs/README.md
src/common/— networking (Asio), crypto, config, logging, shared utilities.src/server/game/— core gameplay; compiled into worldserver.src/server/scripts/— content scripts grouped by region (EasternKingdoms/,Northrend/, …), class (Spells/spell_mage.cpp, …), and domain (Commands/,Pet/,OutdoorPvP/,World/).src/server/database/— DB abstraction and schema updater.src/server/shared/— code shared by auth and world servers.src/server/apps/{authserver,worldserver}/— entry points (ports 3724 and 8085).src/test/— unit tests + mocks.data/sql/—base/(historical schema),updates/db_*/(merged),updates/pending_db_*/(in-flight),custom/(gitignored).modules/— external modules (see below).apps/— helper scripts;apps/codestyle/holds the lint scripts.conf/dist/— distributed config templates;conf/*.confis gitignored.deps/— vendored third-party dependencies.
External modules live in modules/, each a subdir with its own CMakeLists.txt. Disable with -DDISABLED_AC_MODULES="mod1;mod2". See modules/how_to_make_a_module.md.
When a user correction reveals a lesson that generalizes, offer to persist it into these docs (placement per .agents/docs/README.md): use the /self-improve skill if installed, otherwise suggest the user to install it and read this page: https://www.azerothcore.org/wiki/agentic-engineering