Voila, la révision 2 du tutoriel « Créer son serveur World Of Warcraft privé (Avec Ascent/Linux) » est enfin arrivé ! Pour cela j’ai tout repris a zéro, avec l’expérience que j’ai acquise dans le domaine de l’émulation j’espère pouvoir vous proposer un article complet et pas trop foireux, mais avant tout accessible a tous… Allez sans plus attendre, on attaque.
# -> Loggué en tant que root.
$ -> Loggué en tant qu’utilisateur (wowsvr, ici)
Mysql
Si vous n’avez pas déj� installé Mysql sur votre serveur:
1 | # apt-get install mysql |
Puis on se connecte sur ce serveur:
1 | # mysql -uroot -p |
La, on va créer un utilisateur ascent, une base de son nom et les 3 tables puis lui alouer les droits dessus:
1 2 3 4 5 6 7 8 | > CREATE USER 'ascent'@'localhost' IDENTIFIED BY 'MotDePasseAscent'; (DeF4Vv%e31E) > GRANT USAGE ON *.* TO 'ascent'@'localhost' IDENTIFIED BY 'MotDePasseAscent'; > create database world; > create database logon; > create database characters; > GRANT ALL PRIVILEGES ON `world` . * TO 'ascent'@'localhost'; > GRANT ALL PRIVILEGES ON `logon` . * TO 'ascent'@'localhost'; > GRANT ALL PRIVILEGES ON `characters` . * TO 'ascent'@'localhost'; |
On recharge les privilèges et on quitte:
1 2 | > FLUSH PRIVILEGES; > quit |
Compilation du Core
Tout d’abord, installons les outils dont on aura besoin par la suite:
1 | # apt-get install subversion libmysql++-dev libssl-dev libtool gcc automake g++ autoconf build-essential openssl libtool libpcre3-dev unrar |
Puis ajoutons l’utilisateur qui fera ‘tourner’ le serveur:
1 2 3 | # adduser wowsvr # su wowsvr $ cd |
Rapatrions les derniers fichiers de Ascent sur notre machine:
1 2 | $ svn co http://mmoforge.org/svn/ascent/ $ cd ascent/trunk/ |
On configure:
1 2 | $ autoreconf --install --force $ ./configure --prefix=/home/wowsvr/ascent-server |
(j’ai eu des soucis de compilation avec gcc4.2.. par contre nickel avec gcc4.1)
# aptitude install gcc-4.1 gcc-4.1-base
# update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.1 40 –slave /usr/bin/g++ g++ /usr/bin/g++-4.1
(update-alternatives –config gcc pour changer de version de gcc/g++)
1 | $ sh make_precompiled_header.sh |
On compile:
1 | $ make -j2 |
Et on installe:
1 | $ make install |
Configuration
Passons maintenant a la configuration – Attention, ici je vous ais détaillé la configuration minimale pour que le serveur fonctionne, mais je vous invite a lire les fichiers, ils sont très détaillés et compréhensibles)
1 2 3 4 | $ echo "/home/wowsvr/ascent-server/lib" > /etc/ld.so.conf.d/ascent.conf $ mkdir /home/wowsvr/ascent-server/etc $ cp src/*.conf /home/wowsvr/ascent-server/etc/ $ cd /home/wowsvr/ascent-server/etc/ |
Editez les lignes suivantes (pour passer en mode édition tapez: « i » et « Echap » pour quitter le mode. Pour sauvegarder tapez: « :wq! »)
1 2 3 4 5 6 7 8 | $ vim ascent-logonserver.conf 032: 033: Username = "ascent" 034: Password = "MotDePasseAscent" 035: Name = "logon" 112: 113: AllowedIPs = "127.0.0.1/24" 114: AllowedModIPs = "127.0.0.1/24"> |
1 2 3 4 5 | $ vim ascent-realm.conf 036: 038: Name = "DonnezLuiUnNom" 064: 066: Icon = "PVP" (ici: PVP, Normal, RPPVP, RP) |
1 2 3 4 5 6 | $ vim ascent-world.conf 031: 032: 210: # (commenter: rajouter un # en debut de ligne) 480: RemotePassword = "MotDePasseRemoteAscent"> 698: # (commenter: rajouter un # en debut de ligne) |
Bon, la on a déj� fait un grand morceau du chemin! Allez courage !
1 | $ cd ../bin |
Maps, vMaps, DBC
On crée les 3 dossiers qui vons contenir les maps, les vmaps et les DBC
1 | $ mkdir maps; mkdir vmaps; mkdir DBC; |
Je met a votre disposition les fichiers que j’ai pu trouver sur le net:
DBC: http://www.megaupload.com/fr/?d=QF5KGDWH ou http://www.megaupload.com/fr/?d=EY3C7NLV
maps: http://dl.free.fr/iHWpvBSjy/maps.rar ou http://www.megaupload.com/fr/?d=657UAN8X
vmaps: http://dl.free.fr/kjaMn7jDb/vmaps.rar ou http://www.megaupload.com/?d=ZPTMQYY3 ou http://www.megaupload.com/?d=BPNLKG40
a copier dans les 3 dossiers qu’on a créé ci-dessus…
Retour sur Mysql
Bon maintenant, on va creer la structure des tables:
1 2 3 | $ mysql -uascent -p world < /home/wowsvr/ascent/trunk/sql/2785_world_structure.sql $ mysql -uascent -p logon < /home/wowsvr/ascent/trunk/sql/2785_logon_structure.sql $ mysql -uascent -p characters < /home/wowsvr/ascent/trunk/sql/2785_character_structure.sql |
Puis on va appliquer les mises a jours – attention, il peut y avoir des erreurs, ignorez les.. rien de grave.
1 2 3 4 5 6 7 | $ cd world_updates $ for LIST in *; do mysql -uascent --password=MotDePasseMysql world < $LIST; done; $ cd ../logon_updates $ for LIST in *; do mysql -uascent --password=MotDePasseMysql logon < $LIST; done; $ cd ../character_updates $ for LIST in *; do mysql -uascent --password=MotDePasseMysql characters < $LIST; done; $ cd /home/wowsvr/ |
Maintenant, on va télécharger une Base de données des PNJ, Mobs, Skills… bref le contenu du jeu !
1 | $ svn co http://svn2.assembla.com/svn/Wow_Ascent_Arbonne_DB/WAAD/ |
Puis a l’aide du script fourni, on va l’injecter ! Pour cela, il va falloir configurer un petit peu la moulinette:
1 2 3 4 5 6 7 | $ cd WAAD/ $ vim Waad.sh 02: user="ascent" 03: pass="MotDePasseMysql" 04: wdb="world" 05: cdb="characters" $ chmod +x Waad.sh |
Et convertir les fin de lignes format windows ^M au format Linux:
1 | $ perl -pi -e 's/r//g' Waad.sh |
Allez, on lance le tout !
1 | $ ./Waad.sh |
Tapez w
Tapez x
A ce niveau la je ne peut que vous conseiller de jeter un œil au fichier Notes de version, il y aura peut être des correctifs (.sql) a appliquer en fonction de la version utilisée..
Je vous fourni, dans mon extrême gentillesse un script de lancement des binaires:
1 | $ cat < launcher.sh |
Collez y ça:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #!/bin/bash # Logon.. L_SRV="./ascent-logonserver" L_PID="./logonserver.pid" # Core.. C_SRV="./ascent-world" C_PID="./ascent.pid" echo "$(date) Lancement des aplications de Ascent..."; # On coupe tout process du logonserver lancé précedement.. killall logonserver; sleep 1; rm -f $L_PID; sleep 1; screen -dmS wowCore nice $L_SRV; # On coupe tout process du Core lancé précedement.. killall ascent; sleep 1; rm -f $C_PID; sleep 1; screen -dmS wowLogon nice $C_SRV; echo "$(date) Lancé." while [ true ]; do sleep 15; echo "$(date) Test si les processus son démaré..."; if [ "0" = "$(ps x | grep -e logonserver | grep -v grep | wc -l)" ]; then echo "$(date) Erreur: LogonServer serveur a crashé!"; echo "$(date) mise en attente..."; sleep 5; if [ "0" = "$(ps x | grep -e logonserver | grep -v grep | wc -l)" ]; then echo "$(date) Crash! Relancement du serveur LogonServer..."; # On Relance... killall logonserver; sleep 1; rm -f $L_PID; sleep 1; screen -dmS wowCore nice $L_SRV; # On détruit les eventuelles sessions "mortes" screen -wipe; echo "$(date) lancé."; else echo "$(date) Processus déja démaré."; fi fi if [ "0" = "$(ps x | grep -e ascent | grep -v grep | wc -l)" ]; then echo "$(date) Erreur: Ascent serveur a crashé!"; echo "$(date) mise en attente..."; sleep 5; if [ "0" = "$(ps x | grep -e ascent | grep -v grep | wc -l)" ]; then echo "$(date) Crash! Relancement du serveur Ascent..."; # On relance ... killall ascent; sleep 1; rm -f $C_PID; sleep 1; screen -dmS wowLogon nice $C_SRV; # On détruit les eventuelles sessions "mortes" screen -wipe; echo "$(date) lancé."; else echo "$(date) Processus déja démaré."; fi fi echo "$(date) Analise complété."; done EOF |
On le rend executable:
1 | $ chmod +x launcher.sh |
Allez, vite, on lance !
A ce stade votre serveur est installé, il ne vous manque plus qu’as ajouter un utilisateur, pour ça,
la solution la plus simple: phpmyadmin. vous pouvez inserer dans la table ‘logon’ vos joueurs.
ça y est, le moment tant attendu est arrivé, on lance le schmilblik:
1 | $ screen -dmS wowsvr ./launcher.sh |
Page web
En option, voila un petit script php qui permetra au joueurs de s’inscrire sur votre serveur !
Il est tard j’en ai un peu marre, alors je vous lache ça en vrac:
1 | # aptitude install apache2 php5 |
1 | # cd /var/www/ |
1 | # wget http://www.crashdump.fr/~polux/wow-spora/spora-server-page.rar |
1 | # unrar x spora-server-page.rar |
1 | # vim index.php |
Configurez.. enregistrez.. ça roule !
rendez vous sur http://adresse-de-votre-serveur/
N’hésitez pas a commenter le tutoriel si vous avez eu des galères, des trucs-qui-marchent-pas ou simplement un merci ? ça fait toujours plaisir, pour moi et pour ceux qui aurais le même souci :)



Sympa ton tuto, a un détail près… l’accès au SVN de Ascent nécessite un identifiant et mot de passe…
Merci !
Ha, oui…. pour le détail:
Login: anonymous
Password: anonymous
Super tuto
je suis sur debian etch sur un rps pour test, aucune des 3 commandes de mise à jour n’a fonctionné
et j’ai aparement un pb au lancement du realmserver accés refusé à un utilisateur ‘moocow’ que je ne trouve dans aucun fichier de configuration et le worldserver bloque à logoncommclient avec le résultat authentification timed out.
le script que tu à donner n’a pas l’air de fonctionner sur mon serveur mais il ne me retourne aucun message d’erreur.
C’est tout a fait normal en fait, le « realmserver » n’est pas encore utilisé et ne sert donc a rien. (d’après le peu que j’en sais il servira ultérieurement pour créer un cluster).
les deux seuls binaires a lancer sont: « ascent-logonserver » et « ascent-world ».
Pour le script, l’as tu bien copié/lancé dans le dossier bin ?
(essaye déjà de lancer les deux binaire cité plus haut indépendamment.. ça évitera bien des galères)
Très bon tuto merci :)
Cependant j’obtient un crash au lancement du logonserver:
Config/Config.cpp:260 ASSERTION FAILED:
current_variable == « »
ascent-logonserver: Config/Config.cpp:260: bool ConfigFile::SetSource(const char*, bool): Assertion `current_variable == « »‘ failed.
une idée ? svp merci
Merci,
cependant ton erreur est vraiment étrange et je ne l’ai jamais rencontré.. :(
Pourrais tu m’envoyer tes fichiers configuration a adrien.pujol(arobase)crashdump.fr ? Que je puisse y jeter un oeil ? ;)
Problème réglé, mise a jours du tutoriel ;)
J’ai un petit souci lors de l’exécution d’une commande, et je vois pas comment m’en débarrasser…
Je vous laisse voir :
Building Precompiled Header…
make_precompiled_header.sh: 5: g++: not found
Done. Now you can run make, and experience much faster build times. Remember to re-run this script every time you svn update.
wowsvr@ubuntu-test:~/ascent/trunk$ make -j2
make all-recursive
make[1]: entrant dans le répertoire « /home/wowsvr/ascent/trunk »
Making all in extras
make[2]: entrant dans le répertoire « /home/wowsvr/ascent/trunk/extras »
Making all in collision
make[3]: entrant dans le répertoire « /home/wowsvr/ascent/trunk/extras/collision »
Making all in collision_dll
make[4]: entrant dans le répertoire « /home/wowsvr/ascent/trunk/extras/collision/collision_dll »
source=’vmap/BaseModel.cpp’ object=’BaseModel.o’ libtool=no
DEPDIR=.deps depmode=none /bin/bash ../../../depcomp
g++ -DHAVE_CONFIG_H -I. -I../../.. -I/usr/include -I/usr/local/include -I. -I./g3dlite -I./vmap -I/usr/include -I/usr/local/include -Wall -pthread -I/usr/include/openssl -DHAVE_SSL -I/usr/include/mysql -DBIG_JOINS=1 -fPIC -c -o BaseModel.o `test -f ‘vmap/BaseModel.cpp’ || echo ‘./’`vmap/BaseModel.cpp
source=’vmap/CoordModelMapping.cpp’ object=’CoordModelMapping.o’ libtool=no
DEPDIR=.deps depmode=none /bin/bash ../../../depcomp
g++ -DHAVE_CONFIG_H -I. -I../../.. -I/usr/include -I/usr/local/include -I. -I./g3dlite -I./vmap -I/usr/include -I/usr/local/include -Wall -pthread -I/usr/include/openssl -DHAVE_SSL -I/usr/include/mysql -DBIG_JOINS=1 -fPIC -c -o CoordModelMapping.o `test -f ‘vmap/CoordModelMapping.cpp’ || echo ‘./’`vmap/CoordModelMapping.cpp
../../../depcomp: line 571: exec: g++: non trouvé
make[4]: *** [BaseModel.o] Erreur 127
make[4]: *** Attente des tâches non terminées….
../../../depcomp: line 571: exec: g++: non trouvé
make[4]: *** [CoordModelMapping.o] Erreur 127
make[4]: quittant le répertoire « /home/wowsvr/ascent/trunk/extras/collision/collision_dll »
make[3]: *** [all-recursive] Erreur 1
make[3]: quittant le répertoire « /home/wowsvr/ascent/trunk/extras/collision »
make[2]: *** [all-recursive] Erreur 1
make[2]: quittant le répertoire « /home/wowsvr/ascent/trunk/extras »
make[1]: *** [all-recursive] Erreur 1
make[1]: quittant le répertoire « /home/wowsvr/ascent/trunk »
make: *** [all] Erreur 2
J’ai vu que le tuto parle de g++ 4.1 au lieu de 4.2…
Si vous pensez que c’est ca, pouvez vous m’indiquer comment mettre en place le 4.1 au lieu du 4.2… la je sais pas comment faire… :s
(je venais de faire un bon gros post.. mais j’ai tout perdu a cause d’une connexion de merde, alors je vais faire plus court)
D’après ce que je peux voir tu doit avoir oublié d’installer g++.. essaye donc d’installer toutes les applications requises pour ce tuto:
# apt-get install subversion libmysql++-dev libssl-dev libtool libtool libpcre3-dev
# apt-get install gcc automake g++ autoconf build-essential openssl unrar
Bonjour,
D’abord GG pour ce tuto tres simple et performant. j’ai 2 questions a poser tres simple :
1°) quelle est la version de ce core ? (2.4.1, 2.4.2, ???)
2°) est-ce que l’on peut m’expliquer comment créer un compte a partir de la table logon sous phpmyadmin ?
d’avance merci.
Urbaniz.
Dans ce tutoriel c’est une version « trunk » en perpétuelle évolution que nous utilisons, donc il faut lire les notes de version pour en savoir plus.. pour le moment ascent supporte les versions 2.4.x. ;)
a corriger:
ce n'es plus :
svn co http://mmoforge.org/svn/ascent/
mais:
svn co svn://svn.ascentemulator.net/ascent
sinon gg pour le tuto,je suis entrain d'installes ascent pour le moment :D