Personal tools
You are here: Home Groupes de travail Groupe jeux Articles et docs Tutoriaux Monter un serveur Cube
Document Actions

Monter un serveur Cube

by françois Barriere last modified 08-02-2006 20:14

Compte rendu d'expérience de la mise en place du serveur de jeu Cube pour héberger les petits frags amicaux de l'AXUL.

Pourquoi Cube?

Et bien parce que!

En fait, Cube fonctionne assez bien meme sur des machines pas trop puisssantes (la ou des jeux comme Nexuiz necessitent une bonne carte graphique et un CPU un peu rapide).
En mode serveur, il ne prend que quelques mega octets en memoire et peut donc tourner sur une machine pas trop récente.

Le matos

Prevoir, si possible:

  • Un serveur
  • Un client

Pour le serveur, j'ai pris mon vieux PII-200 MHz, je lui ais ajouté un peu de RAM (en fait tout ce que j'ai trouvé, ~128 MB), et j'ai un peu modifié la liste des services démarrés pour l'alléger au maximum.

Pour faire cela, sur une base de Debian, il faut savoir que le niveau de fonctionnement par defaut est le 2. Dans ce mode tout tourne. Donc pour creer un mode serveur de jeu et pouvoir booter directement dessus, le plus simple est d'utiliser un autre niveau. Le niveau 3 fera l'affaire. Dans le répertoire /etc/rc3.d supprimer les fichiers dont le nom commence par S et qui servent a démarrer des services qui ne servent pas en temps de frag. Dans mon cas, il s'agissait de CUPS, SAMBA et les démons d'impression de l'imprimante HP.

Ensuite, il faut booter dessus. Pour cela, il faut editer le fichier de config Grub et ajouter une nouvelle entrée. Passer comme dernier parametre le niveau dans lequel vous souhaiter fonctionner: 3.

Voici l'extrait de mon fichier /boot/grub/menu.lst:

title Game server
root (hd1,1)
kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/hdb2 ro 3
initrd /boot/initrd.img-2.6.8-2-386
savedefault
boot
Et voila, au prochain boot vous devriez voir une nouvelle entrée, "Game server"...

Le routeur, le firewall

Ensuite, il faut ouvrir les bon ports pour permettre aux invités de venir se faire pulveriser a coup de lance roquettes. Pour cela, il faut ouvrir les ports 28765 et 28766, en UDP. Je vous laisse a la doc de votre routeur et aux pages de manuel de Iptable pour savoir comment faire...

Selon le routeur et la topologie de votre petit reseau, vous ne pourrez pas forcement tester simplement la connection venant de l'exterieur. Pour cela, donnez votre IP ou votre nom de domaine a quelqu'un d'autre qui testera de l'exterieur.

Si vous n'avez pas d'IP fixe, je vous conseille de creer un compte et une adresse sur dynDNS et de mettre en place un client dynDNS sur votre machine. Pour ma part j'utilise ddclient et il marche tres bien (et le fichier de config est simple). Cela permet ensuite de simplement donner votre nom de domaine chez dynDNS a vos partenaires pour qu'ils se connectent.

Le serveur de jeu

Maintenant il vous faut le serveur de jeu. Allez donc le chercher sur sourceforge

 Ce que vous téléchargez est un paquet contenant des binaires et les sources. Le binaire devrait fonctionner sans probleme. Pour lancer un serveur, a partir du repertoire "cube", lancez: ./bin_unix/linux_server

Le serveur comprend un certain nombre d'option passées sur la ligne de commande. Les plus importantes sont:

  • -m<une-adresse> (pour spécifier le serveur maitre aupres duquel vous allez vous enregistrer).
  • -c<un-nombre> (le maximum de clients autorisés a se connecter).
  • -n<un-nom> (le nom de votre serveur tel qu'il sera listé dans le navigateurs de serveurs).
  • -p<un-mot-de-passe> (pour démarrer un serveur dont la connection necessite un mot de passe).


Par défaut, si vous ne spécifiez rien concernant le serveur maitre, votre serveur Cube va se déclarer aupres du serveur maitre Cube (sur internet) et sera ensuite proposé au monde entier. Si vous souhaitez garder votre partie pour vous et ne pas en faire a pub, utilisez -mlocalhost. De cette façon votre serveur ne se declarera qu'aupres de lui meme.

Un petit example est toujours mieux qu'un grand discours. Pour démarrer mon serveur que je ne souhaite pas ouvert au monde entier, pouvant accueillir 6 joueurs et nommé AXUL:

./bin_unix/linux_server -mlocalhost -nAXUL -c6

Une fois le serveur démarré, testez le avec un client...

Le client

Maintenant le test avec un client. Je reviens quelques instants sur ce que j'ai écrit au début de l'article: il faut une machine pour le serveur et une pour le client. Ce n'est pas necessaire, mais cela permet d'optimiser le serveur (en arretant certain service ou en ne démarrant pas X11) afin de le rendre plus réactif et cela fait que le rendu graphique fait pour le client n'impacte pas la réactivité du serveur.

Configurez vous un client avec un nom de joueur et un petit menu permettant de vous connecter au serveur. Par défaut vous devrez certainement vous connecter a votre serveur en donnant son adresse local (adresse privée sur votre réseau local) alors que les autres joueurs devront donner votre adresse public.

Pour configurer Cube il faut editer le fichier autoexec.cfg. Voici un example qui permet en utilisant la touche F1 d'acceder a un menu a partir duquel il est possible de définir son nom (c'est utile dans une partie de ne pas tous avoir le meme pseudo par defaut) et de se connecter a un serveur local (en 192.168.1.2) ou au serveur tuxfamily:


crosshairsize 25

newmenu AXUL
menuitem "Connection serveur local" "connect 192.168.1.2"
menuitem "Connection tuxfamily" "connect games.tuxfamily.net"
menuitem "Mon nom" "name MonNom"

bind F1 "showmenu AXUL"

Et voila. Il reste cependant quelques parametres qui ne passent pas par le fichier autoexec.cfg: la taille et la résolution graphique du client. Pour cela, utilisez les parametres -w<largeur> et -h<hauteur>. Pour démarrer le client Cube en 1024x768:

./bin_unix/linux_client -w1024 -h768

Bon frag.


Powered by Plone, the Open Source Content Management System

This site conforms to the following standards: