# TrinityCore

TrinityCore (traducido literalmente como "Núcleo de la Trinidad") es un Framework de Código Abierto escrito principalmente en el lenguaje C/C++, el cual utiliza la programación orientada a objetos para el funcionamiento de su núcleo principal, a la vez que posee una base de datos de tipo MySQL para el almacenamiento de aquella información que pueda hacer uso el emulador en su conjunto.
El proyecto se distribuye bajo una licencia perteneciente a la fundación GNU conocida como General Public License, generalmente en su segunda versión de lanzamiento, además de utilizar git como controlador único de versiones para el mantenimiento del repositorio principal; este último se encuentra alojado en GitHub y se actualiza dependiendo de la versión del juego sobre la cual decidan trabajar.
La comunidad de TrinityCore es también conocida por promover la filosofía del software libre, y al igual que su proyecto matriz del cual deriva, denominado MaNGOS, no pretende ni ha pretendido obtener ganancias directas de sus operaciones. Sin embargo y lo que sí tiene implementado es un sistema conocido como BountySource, 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, las cuales si se diesen estarían a disposición de todo aquél que quisiera añadirlos dentro de su propio proyecto.
Muchos servidores alternos, creados y administrados por personas ajenas a Blizzard Entertainment utilizan TrinityCore como su emulador principal, siendo así el emulador para World of Wacraft con más bifurcaciones y estrellas en GitHub (un total de 5.700 bifurcaciones y 8.400 estrellas respectivamente al momento de la consulta). Si bien esto es una buena noticia tanto para emulador como para su comunidad, no llega a serlo del todo si se tiene en consideración que es también a su vez el emulador más clonado y desarrollado de forma privada por distintos grupos y servidores ajenos al entorno de desarrollo público en el que se maneja, siendo que esta práctica ya citada incumple los parámetros de la licencia incorporada originalmente dentro de su código fuente.
A pesar de ello y de la monetización por parte de este tipo de servidores a costa de un emulador que no les pertenece (como bien puede ser el caso de la comunidad de Nostalrius y su emulador basado en MaNGOS Zero, perteneciente a la fundación MaNGOS), TrinityCore se ha mantenido vigente y funcional por su propia cuenta gracias al aporte de diversas personas que sí llegan a compartir sus arreglos, sin la espera de nada más a cambio que su simple reconocimiento dentro del repositorio principal.

## Historia

En el año 2008 y con la ayuda de algunos miembros pertenecientes a la comunidad de MaNGOS, decidieron optar por conformar otra comunidad de desarrollo aparte dentro del mismo proyecto en el que ya se encontraban previamente (proyecto que posteriormente sería conocido bajo el nombre en clave de TrinityCore). Para lograrlo bifurcaron primero el código fuente ya existente de MaNGOS y partiendo de éste comenzaron una nueva línea de desarrollo que sigue vigente hasta nuestros días.
Los motivos del porqué hicieron esto varían y difieren dependiendo de las perspectivas de cada miembro del grupo, sin embargo aquello puede resumirse en la siguiente explicación:
   MaNGOS era lento en aceptar parches de desarrollo que eran considerados estables años antes, y por tanto carecían del soporte adecuado para los desarrolladores de las Bases de Datos del emulador.
El proyecto fue sugerido inicialmente dentro de la comunidad de UDB (Unified Database), comunidad afiliada a MaNGOS y encargada del desarrollo de una Base de Datos que pudiera hacer uso el núcleo principal del emulador. Se pretendía que UDB apoyase la iniciativa en todo momento, sin embargo uno de los partidarios del nuevo equipo propuso la disolución completa de esta comunidad a cambio de la conformación de TrinityCore como tal, lo que decantó por completo a quienes estaban a su favor en un principio, a excepción de unas 3 personas.

### Diferencias con MaNGOS

Quizá, una de las diferencias más notables en lo que respecta su progreso en comparación con MaNGOS es la unificación del desarrollo del núcleo, la Base de Datos y el scripting en 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, ya que para ello se preferiría optar porque lo hiciera todo un mismo equipo de personas, cada uno a su manera y dependiendo de sus capacidades y conocimiento.

## Funcionamiento Interno

Su funcionamiento interno y operación en general es similar a la de MaNGOS, con la diferencia más notable previamente citada más arriba, en relación con un tipo de desarrollo unificado de todos los distintos entes y/o programas que hacen técnicamente funcional al emulador en su conjunto.

## Versiones de Juego Compatibles

Existen varias versiones del juego desarrolladas por la comunidad de TrinityCore, unas más funcionales que otras, esto dependiendo de qué tanto interés se le haya puesto a cada expansión y qué tantos commits hayan sido fusionados para la actualización del grupo de programas que conforman el framework.
Aquí mismo se darán a conocer algunos ejemplos a modo de divulgación.

### World of Warcraft: Wrath of The Lich King

La rama 3.3.5a de World of Wacraft: Wrath of The Lich King es quizá la versión más completa y desarrollada dentro del repositorio, con un total de 35.000 commits hasta la fecha.
Hasta el mes octubre del año 2014 fue la rama principal del proyecto, sustituyéndose por otras versiones más recientes del juego a raíz del lanzamiento de nuevas expansiones por parte de Blizzard Entertainment.

### World of Warcraft: Dragonflight

La rama máster del proyecto opta por dar soporte a la expansión más actual del juego siendo, a mayo de 2024, World of Wacraft: Dragonflight.
Esta rama ha tenido menos soporte de la comunidad por lo que se puede considerar mayormente un sandbox y no una versión estable.

### Otras Versiones

Si bien existen o llegaron a existir otras versiones más o menos desarrolladas, como por ejemplo la rama 4.3.4 de World of Warcraft: Cataclysm, éstas han debido de ser descontinuadas oficialmente en favor de otras expansiones más actuales del mismo juego, es por ello que existen comunidades aparte de TrinityCore basadas en estos emuladores, las cuales siguen desarrollándolos tanto de forma pública como privada, cada uno bajo distintos nombres y comunidades.
Por ejemplo, bien podría citarse el caso de The Cataclysm Preservation Project para el funcionamiento del parche 4.3.4 de World of Warcraft: Cataclysm o Project Skyfire para la versión 5.4.8 de World of Wacraft: Mists of Pandaria.