Battle for Wesnoth

Bonjour à tous !

Aujourd'hui je vais vous présenter (pour ceux qui ne le connaissent pas déjà) le jeu Battle For Wesnoth. C'est un très beau jeu mono- et multijoueur en tour par tour, stratégique, et qui fait aussi appel à la chance, le tout dans un univers de type médiéval fantastique.

Battle for Wesnoth est un logiciel libre écrit en C++ et disponible  sous licence GPLv2. Il s'installe très facilement sous Windows (binaires disponibles) GNU/Linux, et sous Mac aussi, quoique je n'ai pas testé. Sur ma debian (idem sur Ubuntu) je l'ai installé ainsi :

apt-get install wesnoth

Vous avez la possibilité de jouer une campagne pour vous familiariser avec le jeu, après avoir fait le tutoriel. Comme vous le voyez ci-dessous, le jeu est facile à prendre en main, puisqu'on vous indique ce qu'il faut faire.

Dans le jeu, on se déplace sur des cases hexagonales, vous pouvez voir un hexagone jaune autour de la pièce que mon roi a recruté.

Les bases de la stratégie

Le héros/roi

Vous avez un roi qu'il ne faut pas perdre sans quoi vous perdez le jeu, et qui est le seul qui permette de recruter de nouvelles unités, seulement quand il est à certains endroits stratégiques de la carte : ici à une place particulière du château, celle entourée par des tours pointues.

L'or

Vous avez une certaine quantité d'or qu'il faut bien gérer, il s'agit de l'unique ressource du jeu. L'or diminue quand vous recrutez des combattants, et à chaque tour, proportionellement au nombre de combattants. Vous gagnez d'autant plus d'or que vous avez de villages (ceux avec un drapeau rouge au dessus).

Se déplacer

La distance de déplacement dépend du terrain pour les unités qui ne volent pas. Certaines unités vont plus vite sur l'eau, d'autres sur terre. Ici, on voit que mon roi se défend mieux dans la forêt (50%) que sur un chemin (40%).

On se déplace mal dans les cases adjacentes à des ennemis, une partie de la stratégie repose donc parfois sur la création d'un "mur" de personnages pour empêcher la prise de villages. Pour un mur, il suffit d'espacer les unités de 0 ou 1 ou 2 cases pour que l'adversaire ne puisse pas passer.

Combattre

Il y a deux types d'attaques : corps-à-corps et à distance. Ici je suis dans le tutoriel, donc je n'ai qu'une attaque : "6-3" signifie que j'attaque 3 fois en faisant 6 points de dommage. Le hasard fait que j'ai touché deux fois sur trois, et que mon adversaire a riposté trois fois sur cinq. Il a "3-5", qui signifie qu'il attaque cinq fois, en faisant trois points de dommages

Il y a des armes qui sont plus efficaces que d'autres sur un adversaire, il faut donc choisir qui attaque qui sera la plus efficace. Par défaut le jeu propose souvent l'attaque la plus utile.

Vous pouvez voir le détail des attaques avec des statistiques avancées.

Par exemple si un adversaire n'a pas d'attaque à distance, il peut être utile de l'attaquer à distance pour ne pas subir de dommages. Lorsque lui nous attaquera, on pourra riposter avec notre attaque corps-à-corps. Les attaques à distance se font aussi quand on est sur une case adjacente à notre adversaire, ce qui fait qu'il pourra aussi attaquer à son tour.

La stratégie minimale

Il y a beaucoup de modificateurs de chance qu'il faut bien utiliser (c'est une grande partie de la stratégie). Premièrement le terrain, on attaque mieux à certains endroits que d'autres. Deuxièmement le jour est divisé en deux tours ou il fait "jour", deux ou il fait "nuit", et deux périodes liminaires. Certains combattants sont avantagés le jour, d'autre la nuit, certains lors des périodes limites, enfin d'autres ne sont pas affectés.

Il faut aussi choisir ses combattants en fonction de l'adversaire si possible. Je vous l'ai déjà dit, certaines armes sont plus efficaces que d'autres.

Pour la suite, je vous conseille le tutoriel, il est très facile. Le jeu vient en anglais par défaut mais est complètement traduit en français.

Vous pourrez vous diriger vers cette page du wiki pour en apprendre plus sur la stratégie, et défaire plus facilement l'IA, qui est assez fûtée.

Une partie à plusieurs

Sur la machine d'un joueur

Retrouvons les passionnés du code et de l'adminsys en installant un serveur Wesnoth.

Sous Windows, on peut lancer le serveur Wesnoth à partir du jeu. Sous debian, wesnoth est un service.

Tout d'abord, installer le serveur wesnoth à l'aide de la commande :

apt-get install wesnoth-1.10-server

ou

apt-get install wesnoth-1.12-server

La version du serveur importe moins que celle du client, et c'est un problème que l'on verra plus tard.

Puis démarrez le service. Il tourne sur le port 15000.

service wesnoth-1.10-server status 
service wesnoth-1.10-server start # si status == stop.

Sur un serveur dédié

Pour pouvoir jouer avec des personnées n'étant pas sur votre sous-réseau local, il faut installer le service sur un ordinateur exposé à internet. Personnellement, j'ai installé un serveur Wesnoth sur une machine virtuelle Qemu-KVM de mon serveur. Pour la simple raison que mon serveur est sous debian 8 stable codename Jessie, et que la version de Wesnoth par défaut est la 1.10, qui est l'ancienne version stable. Sous debian testing codename Stretch, on a la version 1.12 de Wesnoth.

Je n'ai pas eu de problèmes de compatibilité client-serveur, mais j'en ai eu client-client, donc pour une partie à plusieurs, choisissez la même version (1.10 ou 1.12 au moment de publication de l'article).

Voici la configuration que j'ai utilisée (il faut rediriger le trafic IP du port 15000 depuis le serveur vers la machine virtuelle). Cette machine virtuelle a pour adresse 192.168.122.145, il faudra que vous adaptiez en fonction de votre propre configuration :

#!/bin/bash

IP_FWD_ON=`/sbin/sysctl net.ipv4.ip_forward | cut -d '=' -f2 | tr -d '[:space:]'`
if [ "${IP_FWD_ON}" = "1" ] ; 
then
    /sbin/iptables -t nat -I PREROUTING -p tcp -d 192.168.1.16 --dport 15000 -j DNAT --to-destination 192.168.122.145:15000
    /sbin/iptables -t nat -I PREROUTING -p tcp -d 192.168.1.16 --dport 15000 -j DNAT --to-destination 192.168.122.145:15000
    /sbin/iptables -I FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
else
    echo "Err: Routage NAT désactivé."
fi

Ce script (à utiliser en tant que root sur la machine hôte) vérifie que l'IP forwarding est activé, et si oui route le trafic du port 15000 vers l'IP 192.168.122.145.

Le jeu est assez complet et mériterait une description plus avancée, notamment des races (Loyalistes, Rebelles, Nordiques, Morts-Vivants, Aliance knalgane, Dracans) des types d'attaques (perforantes, tranchantes, froid, chaud) , mais ça ferait un article long comme le bras, et c'est déjà assez bien documenté dans le jeu et dans le wiki, donc je vous laisse là avec largement de quoi jouer, et même de quoi mettre en place un serveur, éventuellement public. Vous pouvez aussi rejoindre des serveurs officiels.

Bonne partie !

Motius