====== Serveur "dédié" pour JCloisterZone ====== ===== Kécécé JCloisterZone ===== [[https://jcloisterzone.com/en/|JCloisterZone]] est une implémentation libre du jeu de société Carcassonne, édité par Hans im Glück et par Asmodee en France, ainsi que ses extensions. Écrit en Java, il est possible de jouer seul contre une IA ou en ligne via un serveur "maître". {{ :informatique:serveur:jcloisterzone.jpg?direct&600 |}} ===== Pourquoi un serveur dédié ? ===== Malheureusement il nous est arrivé de voir nos parties interrompues par les serveurs principaux qui plantent, problème à priori réglé mais passons. En fouillant dans le peu de documentations qui existent sur le jeu (une [[http://www.carcassonnecentral.com/community/index.php?topic=778.0|FAQ]] sur le forum Carcassonne Central et la maigre documentation sur [[https://github.com/farin/JCloisterZone|GitHub]]. La solution est alors de lancer une partie sur un ordinateur, de se connecter via le port adéquat. Ce qui implique d'avoir tout le temps le jeu de lancé. Pas tip top. J'ai donc envoyé un mail à Roman Krejčík alias Farin, le développeur du jeu, qui m'a rapidement en gentiment répondu : il faut utiliser la classe com/jcloisterzone/wsio/server/SimpleServer du programme, qui lance, d'après le développeur un serveur "stupide". ===== Mise en place ===== Cette opération a été réalisée sur un Raspberry Pi 3B+ sous Raspbian, mais doit aussi fonctionner sur n'importe quelle plate-forme exécutant Java. ==== Installer Java et 7zip ==== Comme nous n'avons pas besoin d'affichage, nous allons utiliser la version headless de Java en installant le paquet default-jre-headless. Les exécutables de JCloisterZone sont compressés via 7zip, nous allons aussi installer p7zip. apt install default-jre-headless p7zip ==== Récupérer le jeu ==== Un simple wget du lien de téléchargement sur [[https://jcloisterzone.com/en/|le site officiel]] fait l'affaire : wget http://play.jcloisterzone.com/builds/JCloisterZone-x.x.x.7z Décompresser : 7zr e JCloisterZone-x.x.x.7z -oJCloisterZone **Options :** * e : extraire * -o : le répertoire de sortie. Le nom doit être collé. ==== Exécuter le serveur JCloisterZone ==== Pour exécuter le serveur "stupide" il faut lancer le jeu via Java avec la commande suivante : java -cp JCloisterZone.jar com.jcloisterzone.wsio.server.SimpleServer **Options :** * -cp : permet d'appeler une classe dans le fichier JAR Il est ensuite possible de se connecter au serveur en allant sur **Connexion** dans le menu principal, puis saisir l'IP. ==== Maintenir le serveur lancé ==== Si on ferme le terminal, le serveur se ferme avec la session. Logique. Il faut exécuter Java avec nohup pour maintenir le processus ouvert après la fermeture de session : nohup java -cp JCloisterZone.jar com.jcloisterzone.wsio.server.SimpleServer & Il est aussi possible de passer par [[https://doc.ubuntu-fr.org/screen|screen]] Java, ou rien de moins que 16 processus... {{ :informatique:serveur:jcloister-htop.png?direct&600 |}} ==== Règles de pare-feu ==== Si tout va bien, votre routeur ou votre box ne permet pas n'importe quelles connexion entrantes. Pour permettre à des joueurs de se connecter il faut ouvrir le port 37447, ou faire une NAT, sur votre routeur. ===== Héberger un serveur maître ===== J'ai posé la question au développeur : ce n'est pas possible pour l'instant d'auto-héberger un serveur public comme play.jcloisterzone.com où l'on peut créer des parties.