AzerothCore and our modules is following directory structure standard from hw-core:
This structure is conformed to our modular architecture.
azerothcore/
├── apps
├── bin
├── conf
├── data
├── deps
├── env
├── modules
├── src
└── var
Utilities and applications with an higher level of awareness compared to modules. They can act in the lifecycle operations of the project such as the CI, the installation of modules, database migration etc.
An example of app is the installer in apps/installer, which acore.sh uses to install the dependencies, compile the core and manage modules.
Contains binaries/scripts for this project. This folder can be placed inside the PATH env variable of your OS allowing you to integrate the project CLI scripts with your shell.
An example is bin/acore-installer, a shortcut to the same installer that acore.sh runs.
The configuration files needed by the apps/ and other tools included in our repo. It's not the folder where the worldserver and authserver conf files are stored because the conf/ folder is used only for the repository and it's not compiled.
An example of configuration file is conf/dist/config.sh. It's the conf used by the apps such as the installer and the compiler. To change a setting, copy it to conf/config.sh and edit the copy.
All static data not compiled with the sources.
An example of data are the sql files, the assets etc.
You can learn more about the SQL Directory here.
This is a domain-oriented folder structure. Therefore, all folders define a specific business domain . In this case each folder represent a standalone component that is needed by the project to work. All components are stored with a monorepo strategy. All code that is generic and not related to the logic of Wotlk should be moved under a separated component of the deps layer and handled by a proper VCS. The deps layer of AzerothCore can be used and configured to build other server applications.
An example of deps are the 3rd party library such as acelib and the g3dlite lib, but also libraries created by the azerothcore organization for a generic purpose.
This is a domain-oriented folder structure. In fact, the principal benefit of this structure is its modularity. Each folder represent a standalone module/plugin that is optional and can be used to extend core functionalities. All modules are stored with a multi-repo strategy and they are git-ignored by default.
An example of module are the transmog, the autobalance, the crossbattlegrounds etc.
This folder is used for the default distribution environment. By default the compiler will generate binaries, configuration files and everything is needed by the server application inside the /env/dist folder. However, as explained in the directory-structure standard, this folder can be used to create any kind of nested encapsulated environments.
All sources strictly related to this application/project and wotlk server version. It follows a role-oriented folder structure. This is a classic directory structure seen in many frameworks. The files are organized by their roles (game, scripts, tools etc.). Its main benefit is to quickly get the picture of all files for specific roles.
This is a folder in which the content is ignored by git. Var folder contains volatile data such as temporary build files. Note: var folder is not used to store worldserver/authserver logs, even though they are volatile data, because those data are not related to the repository lifecycle and reside inside the application environment (/env/dist).