The Modular Structure

Yehonal edited this page Aug 21, 2016 · 5 revisions

The Modular Structure

The project of AzerothCore is based on a fully modular structure that is composed by:

  • Custom Modules
  • Core Modules


The main purpose of AzerothCore modules is to add/extend functionalities to your server avoiding as much possible the modification of AzerothCore code ( patching ).

Currently you are able to:

Create scripts that don’t need any patches for CMake / ScriptLoader

Use script hooks that can operate from the very first start of the server ( as soon as the World initialization starts ) In this way you can handle / overwrite the server configurations.

Use cmake special hooks, allowing you to inject your instructions during specific events ( e.g. after/before game library configuration )

Create, Install and load your custom .conf files during the server startup, avoiding worldserver.conf.dist patching.

Install other module dependencies using udw/joiner , a special bash script used by AzerothCore to maintain deps.

Create and use in your root directory to interact with our bash system ( extend db_assembler, runner, compiler etc )

*NOTE: *Even if core file modification is not suggested by AzerothCore project, developing as much as possible under your module and patching the core with small rows of code could be a good practice. You can eventually provide an install/uninstall script that can automatically patch/unpatch the core using our bash system.

Read guide on how to create a module


Core modules instead are composed by following projects:

  • AzerothCore: The platform that includes all shared tools and sources to develop a WoW Server
  • World Engine: Our MMO framework on which the AzerothCore is based
  • HW-Core: Generic Libraries for c++
  • UWD: Generic tools used by our project

You can see a model of the Software Layers here:

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.