← GeekServers.gg
⚠ Archive en lecture seule — Retour sur GeekServers.gg
[Guide initialement posté sur NG, mais fonctionne de la même façon pour TGC]


Salutation !

Je ne compte plus le nombre de fois où un joueur est tombé des nues lorsque je lui ai appris que n'importe qui peut proposer son script pour aider le serveur. Mais je comprends que ce domaine soit peu abordable au premier coup d’œil et c'est pourquoi je vous propose un petit guide sur comment fonctionne le scripting et comment débuter.


I - Introduction

Avant de commencer, il est important d'aborder quelques notions :

* Un serveur WoW, c'est quoi ? *
Un serveur comme Nostalgeek est un émulateur reproduisant au mieux le comportement d'un serveur officiel de l'époque. Cela signifie notamment que TOUT a été reconstruit de A à Z. Il existe plusieurs projets d'émulateur, la plus part open-source, celui sur lequel est basé NG se nomme C-Mangos.


* Un langage informatique, c'est quoi ? *
Un ordinateur n'est qu'une énorme calculatrice. Il ne peut réaliser que des opérations mathématiques et en plus, il ne comprend que les 0 et 1... Pas facile de communiquer avec lui ! Un langage informatique est justement là pour cela. Il permet de créer une série d'instruction lisible pour nous qui sera ensuite "traduite" en langage machine.

C-Mangos utilise le langage nommé C++.


* Et un script alors..? *
Ce qui est appelé un "script" (souvent sans vraiment savoir ce que c'est réellement) est une série d'instruction visant à créer un effet quelconque souhaité. Lorsqu'on souhaite que notre serveur fasse une nouvelle chose, il faut lui dire de le faire et lui expliquer comment le faire. Scripter le serveur revient à écrire des séries d'instruction qui, une fois implémentée, feront ce pour quoi on les a créées (et si elles le font mal, ça crée des bugs, dont vous connaissez sûrement déjà l’existence).


* Une DB ? *
Une DB (DataBase) est un énorme tableau (comme une grande étagère avec pleins de niveaux et pleins de rangement) dans lequel est rangé plein de données. Pour le cas de notre serveur, c'est là où sont stockés les informations des pnjs, des quêtes, des objets, des chemins de patrouille, ... et même certains scripts simples.


* Un développeur sur NG ? *
Un développeur n'est pas une sorte de magicien qui peut résoudre tous les problèmes d'un claquement de doigt (ce n'est pas non plus un pygargue). Ce n'est pas non plus forcément un Maître du jeu, qui ne sont pas non plus des magiciens.

C'est un joueur comme tous les autres qui a décidé d'arrêter d'attendre (et de se plaindre) sans agir et a pris son courage à deux mains pour aider du mieux qu'il peut le serveur. Il n'est donc pas nécessaire de lui taper sur les doigts si le bug que vous souhaitez voir mourir est toujours là, bien au contraire.

Son passe-temps, c'est de créer ou corriger des scripts afin que les autres puissent jouer tranquille.



II - Je suis volontaire ! Par quoi débuter ?

Afin de bien débuter, il vous faut commencer par apprendre à coder en un langage, et autant commencer par celui qui nous intéresse, le C++. De nombreux guides sont disponibles, tel que celui d'Openclassroom. N'ayez pas peur, cela n'a rien d'insurmontable pour le commun des mortels. Il existe même des langages pour enfant en bas âge pour programmer des robots.

Commencez par faire des petits programmes. Prenez le temps de bien vous exercer.


Même s'il est préférable d'avoir une bonne base en programmation avant, vous pouvez toutefois suivre mon guide pas à pas pour lancer votre propre serveur en local (pas en ligne) et commencer à bidouiller. Cela vous donnera un bon aperçu de l'étendu du travail.


N'essayez pas de résoudre un problème complexe dès le premier jour. Modifiez un peu un script d'instance pour vous entraîner et vous familiariser avec C-Mangos, cela sera déjà pas mal.


Sans même toucher au code, vous pouvez déjà faire beaucoup avec la DB. De la documentation (souvent fragmentaire) est disponible un peu partout sur le net, comme par exemple ici.



III - Premiers scripts

Vous êtes arrivé jusqu'ici ? Félicitations !

Avant de mal coder votre premier correctif, voilà quelques conseils sur comment bien le réaliser :


* Vérifier et revérifier les sources. *
Si vous passez 60h sur un bug et que finalement, cela n'en était pas un ou cela n'était pas comme ça qu'il fallait le corriger... Vous allez l'avoir mauvaise, très mauvaise. Vérifier la solidité des sources avant de vous lancer !


* Bien comprendre le problème *
Pour bien coder votre correctif, il faut déjà bien comprendre comment cela devrait se passer. Assurez-vous d'avoir compris l'ensemble du problème et d'avoir déjà une plus ou moins vague idée de comment résoudre celui-ci.


* Faites relire votre travail par un dev plus expérimenté *
N'hésitez pas à demander de l'aide et surtout à faire corriger/ajuster votre script par un dev avec de l'expérience.


* Ne vous découragez pas ! *
Vous allez passer plusieurs jours rien que pour vous faire à la structure de C-Mangos. Cela va être long et flou, surtout au début. C'est normal de vous sentir perdu sur un projet de cette taille.

Avancez à votre rythme, ne cherchez pas à brûler les étapes et vous y arriverez !



IV - La NostalGeek Scripting Collaboration

Afin de mettre en commun nos efforts et former les nouveaux, j'ai créé une petite équipe avec les autres développeurs amateurs volontaires. Elle est ouverte à tous, en particulier aux débutants.

Nous travaillons ensemble afin d'augmenter la cadence de correction des bugs et permettre à Lorh de s'occuper plus rapidement d'autres développements en attente. Chaque bug corrigé par la communauté, aussi petit soit-il, est un bug en moins sur lequel Lorh n'aura pas besoin de perdre son temps.

J'insiste bien sur le fait que n'importe qui peut apprendre à coder. Cela ne demande aucune compétence physique ou mentale particulière, juste quelques notions de logique à apprendre et beaucoup d'expérience à acquérir avec la pratique.

Je me propose personnellement comme formatrice à tout volontaire le souhaitant. Ne restez pas sur un à priori.



V - Respectez les développeurs (et tous les autres)

Essayez de ne pas oublier que tous les développeurs sont des bénévoles (et qu'en dehors de Lorh, ils sont tous amateurs). Ils ne vous doivent rien et travaillent sur leur temps libre pour votre plaisir.

Evitez donc de vous plaindre que "votre" bug, si facile à corriger, n'est pas résolu avant un autre (surtout si vous n'avez même pas essayé de participer à son correctif). Personnellement, lorsque ce genre de messages désagréables apparaît sur un report, le bug, aussi embêtant soit-il, passe en dernière position sur ma todo-list.

Chaque développeur n'a que 2 mains, est souvent également un joueur et a une vie à côté. Ce que vous pouvez faire de mieux pour l'aider, c'est de participer au scripting.



Si quelque chose n'est pas clair, s'il y a des fautes, ou que vous avez la moindre question, n'hésitez pas à vous exprimer en réponse à ce guide.
Alizia

Maître de jeu


Je me propose personnellement comme formatrice à tout volontaire le souhaitant. Ne restez pas sur un à priori.


Et faut pas croire, on rigole souvent !

Alizia étant NGiste, je ne sais pas elle regardera souvent ses MP's du fofo TGC, donc n'hésitez pas à me le signaler, je me ferais un plaisir de transmettre votre appel ou même à répondre à vos questions si elles entrent dans mes compétences.
Babybelle


Un retraité TGC qui vous veut du bien.
Babybelle a écrit:même à répondre à vos questions si elles entrent dans mes compétences.


Ça va pas faire grand chose... :p
Alizia

Maître de jeu


Merci infiniment pour les liens etc! Ca va être une grande aide, je ne savais pas vraiment par quoi commencer! :)
Merci merci!
Lekowalski


Question, qui peut paraître bête mais peut-on appliqué des patch de script faire sur un core trinity ?
Autre question, je suis actuellement en train de m'amuser sur un local en core mangos, est-ce que si la version du core differe nous pouvons quand même proposé des patchs ? Et si oui, si je corrige un bug de tgc sur mon core qui est sur une base mangos est-ce qu'il y aura des conflits ?
Felgibson

<Carbonaaru>


Felgibson a écrit:Question, qui peut paraître bête mais peut-on appliqué des patch de script faire sur un core trinity ?


De ce que je sais, TrinityCore est très proche de CMangos, il ne sera pas bien dur d'adapter les scripts d'un à l'autre.

Felgibson a écrit:Autre question, je suis actuellement en train de m'amuser sur un local en core mangos, est-ce que si la version du core differe nous pouvons quand même proposé des patchs ?


Si par Mangos tu veux dire CMangos oui, si c'est Mangos tout court, comme pour Trinity, il faudra l'adapter pour CMangos.

Felgibson a écrit:Et si oui, si je corrige un bug de tgc sur mon core qui est sur une base mangos est-ce qu'il y aura des conflits ?


Dans tous les cas, oui, le serveur TGC s'est éloigné de CMangos suffisamment pour créer des conflits. Mais cela n'est pas si grave, il sera toujours possible pour Lorheb d'adapter votre code au sien.

Le mieux reste d'avoir la dernière version de CMangos, pour pouvoir profiter des fixs déjà présents et de la structure proche du serveur.
Alizia

Maître de jeu





Conditions Générales d'Utilisation et Mentions légales - Code de conduite des forums - Contact