# AzerothCore

AzerothCore (traducido como "Núcleo de Azeroth") es un conjunto de programas de código abierto del tipo servidor emulado, escrito principalmente en el lenguaje de programación C/C++ para la ejecución de su núcleo principal, sumado al uso de una Base de Datos propia para la administración de aquellos datos almacenables que pueda hacer uso el núcleo principal en forma de emulador;Al igual que su proyecto matriz del cual deriva (conocido como TrinityCore) posee también la facultad de ser un programa multiparadigma, lo que quiere decir que se encuentra disponible para varios sistemas operativos, además de estar distribuido bajo la licencia GNU Affero GPL desde el 18 de Marzo del año 2022,aunque en algunos casos se siga haciendo bajo la Versión 2 de GNU.
El proyecto comparte la similitud de poseer un sistema de "recompensa por cambios", en donde cualquier persona adquiere la posibilidad de ofrecer una recompensa monetaria a cambio de reparaciones específicas, como también de extensiones o complementos variados para el emulador, los cuales si se diesen estarían a disposición de todo aquél que quisiera añadirlos dentro de su propio proyecto.
Tanto AzerothCore como Trinitycore y a su vez ManGOS existen con el único fin de promover y compartir la filosofía de distribución de código abierto, además de dar accesibilidad para el uso de un emulador compartido entre varios servidores de juego independientes entre sí, esto último solo con fines educativos y de no monetización de sus operaciones, sin embargo esto no siempre suele ser así, en el caso de por ejemplo los servidores derivados de estos emuladores y por ende ajenos al entorno de desarrollo en el que se manejan los emuladores ya citados.
Al momento de la consulta, el proyecto tiene más de 5.200 estrellas en github y más de 2.200 forks o bifurcaciones del proyecto, solo por detrás de TrinityCore.

## Historia

AzerothCore surgiría posteriormente como una alternativa a TrinityCore, si bien sus inicios se remontan como tal a la creación de un servidor italiano llamado AzerothShard, a mediados del año 2015 e iniciando el año 2016, mismo el cual utilizaba hasta ese momento un emulador modificado de Trinitycore, bautizado como "AzerothCore" en referencia al nombre del mismo servidor.
AzerothShard terminaría cerrando en el año 2018, en pos de un desarrollo más enfocado exclusivamente en el emulador, si bien el servidor resucitaría 2 años después bajo un nuevo nombre y dirigido con intenciones más cercanas al desarrollo paulatino del contenido faltante o defectuoso.
Este nuevo proyecto se daría a conocer bajo el nombre ChromieCraft y serviría como una base para solucionar aquellos errores y contenido faltante dentro del emulador con ayuda de los propios jugadores y la comunidad del emulador.

### Diferencias con TrinityCore y MaNGOS

La principal diferencia que tiene con TrinityCore y por consecuencia también con MaNGOS consistiría en su sistema modular de scripts, el cual permite a los propietarios de servidores privados realizar modificaciones sin necesidad de parchear directamente el código fuente principal.
Otra diferencia podría ser el desarrollo del emulador por medio de un servidor propio y dedicado para este mismo fin, como por ejemplo el caso ya citado de Chromiecraft.
Sin embargo tanto AzerothCore como TrinityCore poseen la similitud de tener ambos un desarrollo de núcleo, Base de Datos y scripting dentro de una misma vía de aporte, sin la necesidad de fundar sub-comunidades encargadas de una o varias tareas concretas para el desarrollo del emulador.

## Funcionamiento interno
### Núcleo

Al igual que en MaNGOS, el programa principal o emulador es el que se ocupa básicamente de gestionar las conexiones dentro de los clientes de juego, extrayendo datos desde la Base de Datos hacia el servidor emulado y administrando el Servidor de Juego en su conjunto para hacer completamente funcional el mundo en el que interactúan los jugadores.

### Base de Datos

Al igual que en MaNGOS, la información dentro de la Base de Datos son en su mayoría textos, información de personajes, misiones, información general de los jugadores, objetos del juego, etc. El proyecto se actualiza constantemente gracias a los reportes y arreglos de sus propios usuarios, quienes ayudan informando sobre errores variados, como bien puede ser información faltante dentro de las tablas o también mal insertada y con valores no correspondientes a los originales, entre otras cosas más.