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.
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.
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.
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 !
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.
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.