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

CUSTOM 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 include.sh 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:

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: