Les campagnes sont une partie très intéressante de Wesnoth mais elles s'avèrent souvent trop dures ou trop longues à jouer. La seule que j'ai réussi à finir est « L'héritier du trone », la plus longue mais pas la plus difficile. Je suis allé assez loin dans d'autres campagnes mais je suis resté finalement bloqué sur tel ou tel tableau. Frustrant ! Il y a déjà longtemps que j'avais envie de réaliser des campagnes Wesnoth collaboratives pour éviter de rester ainsi coincé. À plusieurs on dispose de plus de talents et de temps. L'idée de base étant que chacun puisse reprendre un tableau de campagne joué par un autre, le rejouer et l'améliorer. Finalement je me suis décidé à me lancer dans cette entreprise sur la base de programmation web en langage PHP. Après avoir discuter à Vauréal avec l'ami Grosbill aussi intéressé par la chose, j'avais les idées assez claires sur ce qu'il était possible de faire et de comment le faire. Alors je l'ai fait !
Wesnoth sauvegarde ses campagnes dans un format qui lui est spécifique : le WML (Wesnot Markup Langage). C'est un dérivé du XML mais on ne peut pas le décoder aussi facilement que du XML. J'ai donc commencé par comprendre le WML et en extraire les données dont j'avais besoin. Ceci fait j'ai enregistré les données extraites dans un fichier XML. Il est clair que si Wesnoth avait choisi d'enregistrer les campagnes en XML cela aurait été plus simple et moins aléatoire. Ensuite les fichiers XML sont relus, les données contenues dans les fichiers sont affichées à l'écran. Ensuite j'ai continué par une création automatique de l'arborescence d'une campagne. Wesnoth conserve pour chaque tableau les statistiques des tableaux déjà joués. Ainsi lorsqu'un nouveau tableau est posté on sait à quelle étape de la campagne il se situe. Cela se complique un peu car parfois la campagne peut prendre des chemins alternatifs et qui ne sont pas tous de même longueur. Finalement, il suffit de trouver le chemin le plus long et de numéroter les tableaux suivant ce chemin. Parfois il peut y avoir un trou, on passe de l'étape 6 à l'étape 8 mais ce n'est pas vraiment génant, cela veut dire qu'on a trouvé un raccourci :). Plus dur était de relier les tableaux entre eux, si je joue le tableau n°7 suivi du n°8 et que je poste les 2, alors ils seront reconnus comme se suivant bien que cette information ne soit contenue nulle part dans le fichier WML de Wesnoth. Ce miracle est possible grace aux statistiques communes entre les 2 fichiers et à l'astuce donnée par Grosbill qui m'a dit de tatouer chaque tableau par un chiffre issu des statistiques, ainsi j'arrive à identifier des fichiers qui se suivent. Les films de Wesnoth contiennent aussi les mêmes statistiques donc par le même procédé je peux relier un film à un tableau joué. Fantastique ! finalement la seule information que je n'ai pas pour tout automatiser c'est le nom du joueur.
J'ai mis en ligne une première version du moteur de campagnes collaboratives Wesnoth qui ne demande qu'à être testé : Campagnes Wesnoth. Il n'y a encore aucune mise en page de faite donc ne critiquez pas la présentation SVP.
Dans Poster un tableau il faut indiquer un tableau de campagne sauvegardé depuis Wesnoth. Choisissez Par Anonyme et mettez votre nom dans le champ Pseudo. A ce jour seule la campagne l'Invasion orientale est supportée. C'est juste que je n'ai pas encore testé le fonctionnement avec d'autres campagnes, j'en testerai d'autres avant la fin de cette année. La taille des fichiers est limitée à 1000 ko, j'espère que ça passera pour tous les tableaux. Dernière remarque, le fichier ne doit pas être enregistré en binaire, décocher Sauvegardes binaires dans les Préférences avancées.
Dans Tester un tableau les données détaillées extraites du fichier Wesnoth seront affichées à l'écran. Vous pouvez ainsi vérifier ce que le moteur arrive à extraire avant de le poster. Toutes les campagnes sont ici supportées.
Dans Campagne L'invasion orientale vous avez la liste des tableaux déjà postés. OK c'est en anglais, il faut encore que je fasse une extraction des traductions depuis les fichiers po. Les tableaux sont rangés par ordre chronologique. S'il y en a plusieurs à la même étape c'est qu'il y a des chemins alternatifs. En cliquant sur un tableau vous accédez à un résumé du contenu de chaque sauvegarde déjà postées. En dessous, en cliquant sur Détails vous accéderez à toutes les données extraites de la sauvegarde (comme dans Tester un tableau), vous pouvez télécharger la sauvegarde (Fichier / Enregistrer sous...) ou le film affecté à la sauvegarde. Notez que tous mes films joués avec la version de développement sont aujourd'hui corrompus, donc ils sont perdus et il va falloir que je les efface.
Si vous avez envie de poster une sauvegarde de la campagne Invasion orientale, ou bien de télécharger une sauvegarde et l'améliorer, n'hésitez pas. Il faut tester le moteur et récolter les avis !! Je laisse les commentaires de ce post ouverts un certain temps pour récolter d'éventuelles réactions.