User Tools

Site Tools


informatique:serveur:jcloisterzone

Serveur "dédié" pour JCloisterZone

Kécécé JCloisterZone

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

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 FAQ sur le forum Carcassonne Central et la maigre documentation sur 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 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 screen

Java, ou rien de moins que 16 processus…

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.

informatique/serveur/jcloisterzone.txt · Last modified: 2020/04/24 13:20 by yahiko