Mettre à jour Mangos et les bases SQL

Dans un post récent, je vous ai présenté le Projet Mangos, projet qui permet de mettre en oeuvre un serveur WOW local. En regardant les requêtes qui ont amené des visiteurs sur ce site (ce que je ferai plus souvent), je me suis rendu compte de beaucoup cherchaient comment mettre à jour les bases SQL.

Lorsque j’ai écrit le précédent article, je voulais l’agrémenter de quelques bons principes. je vais profiter de ce post pour vous les soumettre.

Un brin d’organisation

S’il est un élément pas évident à suivre, ce sont les numéros de version. J’ai choisi pour ma part de clairement les nommer dans mon répertoire mangos. J’ai deux dossiers: un "current" qui est la version de mangos en exploitation et correspondant aux bases de données et un répertoire "Next" de travail pour préparer la mise à jour. Dans le répertoire "Current", en plus des fichiers et dossiers classiques de mangos, je stocke un répertoire nommant chaque élément et sa version. Voici une copie de mes répertoires :

Mangos-2-1 

Vous remarquerez les répertoires en vert, sources des imports de tortoiseSVN. En cas de doute sur la version extraite d’un SVN, il suffit de cliquer droit sur le répertoire > Propriétés > Subversion :

Mangos-2-2

Mettre à jour Mangos

Concernant Mangos, rien de bien compliqué, il suffit de compiler Mangos puis ScriptDev comme la première fois. Donc, on copie les exe et dll dans le nouveau répertoire Next en y ajoutant les dossiers indiquant les nouvelles versions. Il ne faut pas oublier non plus d’y préparer une copie des fichiers conf.

Les répertoires "maps", etc… ne sont à refaire que si WoW lui-même est patché. En effet, le contenu de WoW ne change que lors des patches.

Mettre à jour les bases

C’est généralement la partie la plus stressante parce que c’est là qu’on risque de ne plus faire marcher correctement le bouzin. Il suffit de répérer celles dont on a besoin en fonction des numéros de version et de le faire dans l’ordre de la compilation et des ajouts que l’on a fait. D’abord mangos, puis SD2, puis Acid, puis UDB et enfin, UDB-fr. Si un des projet n’a pas eu de mises à jour, on s’en moque, on passe au suivant sauf alerte bien explicite dans les changelogs (je ne l’ai pas dit, mais, il faut les lire quand même hein !!!)

Si on prend donc l’exemple affiché sur l’image ci-dessus, Mangos exécuté est à la version 6386. A l’heure où j’écris ces lignes, Mangos est à la version 6420. Il faut donc regarder dans le répertoire \Mangos-sources\sql\updates pour trouver celles dont on a besoin (je les ai sélectionnée) :

Mangos-2-4

La 6381 a déjà été appliquée puisque je suis en 6386. Il faudra donc lancer, avec SQLyog chaque mise à jour sur la base qui lui correspond. Le nommage est ainsi:
VersionSVN_BaseAffectée_TableAffectée.sql

Vous comprendrez l’interet de suivre les mises à jours fréquemment. Mais n’oubliez surtout pas qu’il faut limiter les mises à jour à la version de mangos en exécution.

C’est pourquoi j’ai un répertoire "Next". J’y prépare tout compilation + Conf et dans chaque répertoire utilisé pour noter les versions, je copie les scripts SQL concernés. Ainsi, je coupe mangos (ne pas faire de MAJ Sql si le serveur tourne hein !!!), je remplace les fichiers, je lance les différentes scripts et je relance.

ScriptDev, Acid, UDB et consors fonctionnent au niveau de SQL et des MAJ sur le même principe.

Bon patchage ! N’oubliez pas de le faire souvent et n’hésitez pas à poser des commentaires si vous avez des questions ou des demandes d’aide.

Creative Commons License: Attribution, Share-AlikeExcept where otherwise noted, this content is
licensed under a Creative Commons License.



Le projet Mangos

Dans le post de l’autre jour : "Ce que je deviens", je vous avais dit avoir passé du temps sur le Projet Mangos et que j’allais y revenir.

Mangos est un projet de serveur simulant l’environnement et le fonctionnement d’un serveur MMORPG bien connu: World Of Warcraft. Afin d’améliorer la base de ce projet et d’y apporter des modifications, comme la traduction, d’autres projets s’y sont gréffés. Je ne parlerai ici que des logiciels Windows, sachez que Mangos tourne aussi sur linux.

Le projets mangos fournit les sources du serveur qu’il faut ensuite compiler. Je vous rassure, ils se trouvent aussi des gens qui le font et le mettent à disposition. Mais, c’est techniquement plus sympa d’avoir "son" serveur. J’ai donc fait un peu le tour de la question et me suis arrêté aux élements que je décrirai un peu plus loin. Mais avant de se pencher sur Mangos, il faut aussi disposer d’outils :

  • Pour obtenir les sources
    • Celles que j’ai trouvées sont toutes distribuées sur des serveurs SubVersion (SVN). Il faut donc un client pour windows : Tortoisesvn
  • Pour pouvoir compiler
    • Il faut de quoi compiler du c/c++ sous Windows. Le mieux et gratuit, si vous n’avez rien, est d’installer Visual C++ Express ainsi que le platform SDK (pour les librairies)
  • Pour pouvoir le faire tourner
    • Une base de données MySQL. Personnellement, j’ai carrément installé WAMP.
    • De quoi gérer les données et scripts SQL très nombreux de mise à jour. J’ai toujours eu une préférence pour le client SQLyog MySQL GUI – Community Edition

Maintenant, les sources ! Les adresses SVN sont à entrer dans Tortoise pour les imports.

Les deux premiers sont des programmes à compiler et installer dans cet ordre, les 3 autres sont des patchs SQL à apporter à la base de données (dans cet ordre) pour modifier le comportement des PNJ (Personnages non joueurs) et pour le dernier, traduire certaines données. Je vous ai pour chacun, copié le lien vers les forums de discussion.

Maintenant, comment faire ?

Tout d’abord, je vous invite à lire ces deux articles qui traitent de la compilation, puis de l’utilisation de Mangos :

[guide] Compiling Mangos For Windows
[guide] Mangos Windows Setup

Vous devriez à terme savoir compiler et installer autant mangos que les bases SQL.

Il vous faudra ensuite faire de même avec ScriptDev2 (ScriptDev2 SVN and quick Installation guide) puis passer tous les patchs SQL des 3 derniers liens.

J’espère que cette introduction vous plaira, j’attend vos commentaires. Par la suite, je traiterai plus en détails les mises à jour dans un futur article.