# TrinityCore

TrinityCore è un framework per applicazioni server di tipo MMORPG basato su MaNGOS, è scritto in C++ mediante programmazione orientata agli oggetti e si appoggia ad un database di tipo MySQL. Il progetto viene rilasciato sotto licenza GPL in modalità rolling release, il codice sorgente viene costantemente aggiornato e rilasciato tramite protocollo git presso il repository ufficiale del progetto, ospitato su GitHub.
TrinityCore è considerato un progetto educativo, all'interno del quale chiunque può apportare il proprio contributo. Per questo motivo il team ufficiale si limita a rilasciare il codice sorgente, non vengono infatti rilasciati versioni ufficiali del progetto già compilate. L'utente utilizzatore del progetto deve infatti scaricare i sorgenti e compilarli per il proprio ambiente per poter eseguire TrinityCore.
Attualmente TrinityCore supporta diverse versioni del protocollo di rete del MMORPG World of Warcraft.
Nonostante TrinityCore sia ufficialmente un progetto educativo e dovrebbe essere utilizzato esclusivamente per fini didattici, esso deve la propria popolarità al fatto che la maggior parte dei server privati (non ufficiali) di World of Waracraft utilizza proprio TrinityCore (o progetti da esso derivati) come emulatore. Per questo motivo TrinityCore è dotato di una comunità molto grande rispetto agli altri progetti dello stesso tipo.
Nell'anno 2012 TrinityCore si è classificato al 9º posto tra i progetti con il più grande numero di collaboratori unici su GitHub. Attualmente risulta essere tra le prime posizioni dei progetti C++ dotati di maggiori fork su GitHub.

## Storia

Nell'anno 2008 alcuni membri appartenenti alla comunità di MaNGOS decisero di separarsi dal progetto e fondare TrinityCore (creando come un vero e proprio fork di MaNGOS), criticando l'eccessiva attenzione che gli sviluppatori di MaNGOS avevano per la pulizia e la stabilità del codice in quanto causava ritardi nell'introduzione di nuove caratteristiche e funzionalità, sviluppate da parte di utenti collaboratori, all'interno del codice sorgente ufficiale del progetto.
L'obiettivo di TrinityCore era dunque sviluppare un'applicazione server riuscendo ad introdurre le nuove funzionalità proposte dalla comunità in tempi abbastanza brevi.
Inizialmente TrinityCore veniva visto come una copia di MaNGOS meno stabile ma dotata di maggiori funzionalità. In quel periodo la maggior parte dei server privati di World of Warcraft utilizzava MaNGOS o ArcEMU come emulatore.
Con il passare del tempo il codice di TrinityCore venne ripulito e migliorato, risolvendo i problemi di stabilità di cui veniva criticato, e sempre più server privati rimpiazzarono i loro emulatori con TrinityCore, andando ad accrescere ulteriormente la sua comunità.
Oggi TrinityCore, nell'ambito dell'emulazione open source di World of Warcraft, può essere indubbiamente ritenuto il progetto che maggiormente ha contribuito alla diffusione degli emulatori MaNGOS-based (emulatori basati su MaNGOS) a danno delle altre tipologie di emulatori.

## Differenze rispetto a MaNGOS

A differenza di MaNGOS, che affidava a progetti satelliti (come UDB, ScriptDev2 e ACID) lo sviluppo dei contenuti del database e dell'intelligenza artificiale viene svolta dallo stesso team di TrinityCore.
Vi è infatti un unico forum di sviluppo, diviso in varie sessioni, ognuna dedicata alla discussione riguardante lo sviluppo di diversi componenti del progetto. Analogamente vi è un unico canale di chat IRC #trinity nel server irc.rizon.net all'interno del quale tutti i membri della comunità hanno la possibilità di discutere e scambiarsi informazioni.

## Versioni del client di World of Warcraft supportate

Esistono diverse branch del repository di TrinityCore, ognuna supporta una versione del client di World of Warcraft differente.

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

La branch 3.3.5 di TrinityCore supporta la versione 3.3.5a (12340) di World of Warcraft: Wrath of The Lich King.
Attualmente è la branch più completa e stabile, in cui la maggior parte dei contenuti del gioco originale sono stati replicati fedelmente e senza bug frequenti. Fino ad ottobre 2014 è stata la branch principale del progetto. Nonostante non sia più la branch "di punta" riceve ancora molta attenzione da parte di diversi sviluppatori e da una buona parte della comunità.

### World of Warcraft: Warlords of Draenor 6.x

La branch 6.x di TrinityCore supporta l'ultima attuale versione del client World of Warcraft: Warlords of Draenor.
Nuova branch, ancora incompleta e nata ad ottobre 2014, attualmente è la branch principale del progetto, alla quale viene rivolta più attenzione rispetto alle altre.

### Altre versioni del client

La branch 4.3.4 di TrinityCore supportava la versione 4.3.4 di World of Warcraft: Cataclysm. Rispetto alla branch 3.3.5a è sempre stata meno stabile e con molti contenuti incompleti o mancanti, è sempre stata una branch "secondaria" e non ha mai raggiunto notevole attenzione da parte della comunità. È stata rimossa in data 11 maggio 2015.
Non ci sono altre versioni del client di gioco supportate ufficialmente da TrinityCore. Tuttavia, esistono svariati progetti basati sul codice di TrinityCore e/o MaNGOS in grado di supportare altre versioni del client di gioco, per esempio SkyFire per la versione 5.4.8 World of Warcraft: Mists of Pandaria o CMaNGOS(Classic) per la versione 1.12.x.