Emulazione di World of Warcraft

Da sempre tutte le dinamiche ed i processi di sviluppo che stanno dietro il funzionamento dell’emulazione di World of Warcraft sono sconosciute alla maggioranza dei giocatori.

In questa pagina vogliamo abbattere il muro che c’è tra giocatori e sviluppo tecnico, spiegando come funziona e chi lavora all’emulazione di WoW per i server privati, con termini semplici e comprensibili a tutti.

 

Differenza tra applicazione Client e Server di WoW

Il funzionamento di World of Warcraft si basa su due applicazioni principali: il client ed è il server.

CLIENT: è il programma originale World of Warcraft che ogni giocatore installa nel proprio computer e che usa per connettersi al server e giocare. Contiene tutti i modelli grafici, i suoni, le mappe, etc…  e comunica con il server per interagire con gli altri giocatori ed il mondo circostante.

SERVER: è il programma principale con il quale dialogano tutti i giocatori tramite il proprio client. Costituisce il “motore” del gioco, coordinando tutti i giocatori e gli elementi del gioco.

Le applicazioni server che vengono utilizzate dai server non ufficiali vengono spesso chiamate emulatori in quanto “emulano” il funzionamento dell’applicazione server originale.

 

Le applicazioni server non ufficiali (emulatori)

Breve storia dell’emulazione di World of Warcraft

Subito dopo l’uscita di World of Warcraft alcuni programmatori svilupparono diverse applicazioni per emulare server di World of Warcraft.

Essendo però WoW un gioco dotato di un numero molto elevato di caratteristiche, la qualità dei primi emulatori di WoW era molto scarsa in quanto un numero ristretto di programmatori non poteva supportare tutto il carico di lavoro necessario per rendere tali applicazioni simili a quella ufficiale. Solo poche tra le tante caratteristiche basilari del gioco erano state rese funzionanti da questi emulatori.

Se dovessimo fare una stima in percentuale, i primi emulatori riuscivano a far funzionare solo il 10% delle meccaniche del gioco, mentre quelli attuali riescono a far funzionare oltre il 90%.

Ma come è stato possibile tutto ciò?

 

MaNGOS ed il modello di sviluppo open source

MaNGOS_Logo

L’applicazione server per World of Warcraft che rivoluzionò più di ogni altra la qualità dell’emulazione di World of Warcraft, fu MaNGOS (nato nel 2005) con il suo modello di sviluppo open source.

La grande novità di MaNGOS, che fu anche il suo punto di forza, fu proprio il fatto che essendo un’applicazione open source, il suo codice veniva reso completamente pubblico, e qualunque utente da qualunque parte del mondo poteva studiarlo e proporre il proprio contributo (sia in termini di aggiunta o fix di meccaniche del gioco, ma anche in termini di segnalazione dei bug presenti).

Solo in questo modo, grazie ai contributi di tantissimi volontari di diverse nazionalità, si riuscì a sviluppare un’applicazione server che riesce ad emulare World of Warcraft garantendo una qualità di un certo livello.

 

TrinityCore, l’applicazione server di oggi

Emulazione di World of Warcraft: TrinityCore

TrinityCore è un’applicazione server basata su MaNGOS nata nel 2008. Di fatto la maggior parte dei server privati di World of Warcraft (compreso AzerothShard) utilizza attualmente TrinityCore (o altri emulatori che si basano su di esso).

Anche TrinityCore segue il modello di sviluppo open source, ovvero il suo codice è reso pubblico e viene costantemente migliorato da programmatori volontari di diverse nazionalità.

La sua licenza GNU GPL proibisce di modificare il codice di TrinityCore e non pubblicare la versione modificata. La licenza verrebbe quindi violata se si realizzasse un emulatore basato su TrinityCore senza pubblicarne a sua volta il codice sorgente.

Il sito ufficiale del progetto è trinitycore.org.

 

Server buoni e server cattivi: perchè scegliere AzerothShard

“Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela ciascuno. Ma se tu hai un’idea, ed io ho un’idea, e ce le scambiamo, allora abbiamo entrambi due idee.”

~ George Bernard Shaw

Sostanzialmente, in termini di sviluppo dell’emulatore, ci sono due categorie di server privati:

1° CATEGORIA: I server privati che collaborano con la comunità, condividendo il proprio lavoro con le varie community di sviluppo ufficiali.

2° CATEGORIA: I server privati che non collaborano con la comunità, in quanto non condividono il proprio codice e lo mantengono privato.

Se si è letto e compreso tutto ciò che è stato scritto in questa pagina, è facile intuire che se tutti i server privati fossero appartenuti alla seconda categoria, non ci sarebbe di fatto nessun emulatore avente una qualità di gioco decente, poichè NESSUN singolo team di sviluppo sarebbe capace di implementare da capo tutte le dinamiche del gioco, per questo TUTTI i server privati si basano di fatto sul lavoro realizzato da altri.

Oggi siamo arrivati a godere di una qualità di gioco abbastanza elevata rispetto ai primi emulatori, e questo lo dobbiamo a tutti gli sviluppatori di tutti i server privati (di oggi e di ieri) che hanno deciso di contribuire con lo sviluppo collettivo.

 

Il team di sviluppo di AzerothShard è molto fiero di appartenere alla prima categoria, i nostri sviluppatori infatti contribuiscono attivamente con lo sviluppo dell’applicazione server.

Siamo gli unici italiani che lavorano seguendo questo modello di sviluppo nell’ambito dell’emulazione di World of Warcraft, e alcuni dei nostri sviluppatori lo fanno già da circa 10 anni.

Questo ovviamente comporta per noi dei vantaggi considerevoli: lavorando insieme agli altri sviluppatori, siamo costantemente in contatto con altri programmatori esperti, ed il nostro codice viene revisionato dagli altri sviluppatori, che ci aiutano a migliorarlo ed a trovare molto più facilmente eventuali difetti e bug.

Diffidate dai server che si vantano di avere caratteristiche che gli altri server non hanno, perchè è evidente che il loro modello di sviluppo non è affatto produttivo!

 

Alcuni server privati addirittura impongono ai propri sviluppatori di firmare un contratto in cui vietano espressamente di divulgare il codice che egli stessi scrivono, costringedoli di fatto a mantenerlo privato.

Noi ovviamente siamo ben lungi dal fare una cosa del genere. Anzi, facciamo proprio l’esatto contrario. Infatti, come spiegato nei nostri standard di sviluppo, AzerothShard incoraggia tutti i nuovi sviluppatori ad interagire e collaborare con la comunità di sviluppo, migliorando il proprio codice e crescendo professionalmente.

Update: AzerothCore

AzerothCore

Il nostro dev team ha recentemente avviato un nuovo progetto, basato su  MaNGOS, TrinityCore e SunwellCore che mira a continuare lo sviluppo dell’applicazione server per World of Warcraft 3.3.5a riorganizzando la struttura del codice in maniera da renderlo modulare ed introducendo parecchie migliorie su diversi fronti.

Il progetto è ovviamente open source e segue le logiche collaborative dei progetti da cui deriva. Nonostante il nome stesso del progetto contenga il nome di Azeroth, si tratta di un progetto che non dipende da nessun server privato in particolare e che abbiamo lanciato su scala internazionale in modo da poter godere di una vasta community di sviluppo.

Il sito ufficiale del progetto è  www.azerothcore.org