Serveur de jeu OpenArena sur FreeBSD

Open Arena est un jeu libre basé sur le moteur de Quake 3 Arena. Comme il est entièrement libre, contrairement à ioquake3, on peut jouer sans posséder le CD original de Quake 3 Arena.
Open Arena utilise ses propres graphismes et cartes, le tout propulsé par le moteur ioquake3. Ce dernier est présent dans les ports de FreeBSD, il est donc facilement installable. Seulement, tel quel, il est conçu pour fonctionner avec les données de Quake 3 Arena issues du CD officiel.
Pour l'utiliser avec les données libres d'Open Arena, il faut modifier les sources avant la compilation. Cela se fait simplement grace au patch fourni par Open Arena.

Voilà, en quelques étapes, comment on peut procéder :

1- récupération des sources de ioquake3, et du patch d'Open Arena

cd /usr/ports/games/ioquake3/
make extract
wget http://openarena.ws/svn/source/060-oachanges.diff

2- modification du patch
Le numéro de version d'ioquake3 ne correspond pas à celui que le patch contient. Pour que tout se passe sinon bien, au moins correctement, il faut synchroniser ce numéro de version. On lit donc le fichier work/ioquake3_1.34-rc3/code/qcommon/q_shared.h à la recherche de la ligne #define Q3_VERSION... et on reproduit le numéro de version trouvé dans le patch 060-oachanges.diff (lignes 105 et 106).

3- patch des sources, et compilation de ioquake3

cd work/ioquake3_1.34-rc3/
patch < ../../060-oachanges.diff 
cd ../../
make install

On décoche toutes les options sauf "Build dedicated server" et "Enable compilation optimizations", et on valide.

4- chargement des pak*.pk3 sur le serveur
On peut récupérer dans son Open Arena local le dossier baseoa et l'envoyer tel quel sur le serveur. C'est encore le plus simple. Si le jeu n'est pas déjà disponible en local, il faudra télécharger les données et les mettre sur le serveur. J'ai choisi de mettre le dossier baseoa dans /usr/local/share/openarena/. Les données se trouvent par ici.

5- création d'un fichier de configuration pour le serveur
Un point important pour qu'un serveur de jeu soit agréable, c'est de travailler un peu les réglages. Voici un rapide exemple de fichier de configuration. Ce fichier se nomme server.cfg et se place dans /usr/local/share/openarena/baseoa/.

sv_hostname "Mon Serveur OA 0.6"
sv_maxclients 6
sv_master1 ""
sv_maxPing 100
sv_pure 0            // 0 = off, 1 = on
sv_maxRate 10000
sv_allowdownload 1   // 0 = off, 1 = on
sv_privateClients "0"
//sv_privatePassword "<privpass for privclients>"
capturelimit 4
timelimit 10
fraglimit 10
rconPassword "<rconpass>" // for remote ingame servercontrol
g_motd "there is no place like 127.0.0.1"
g_quadfactor 4
g_inactivity 0
g_allowvote 1        // 0 = off, 1 = on

set bot_enable "1"   // 0 = off, 1 = on
set bot_minplayers "4" 

set d1 "map aggressor; set nextmap vstr d2"
set d2 "map czest1dm; set nextmap vstr d3"
set d3 "map ce1m7; set nextmap vstr d4"
set d4 "map dm4ish; set nextmap vstr d5"
set d5 "map dm6ish; set nextmap vstr d6"
set d6 "map kaos; set nextmap vstr d7"
set d7 "map void4; set nextmap vstr d8"
set d8 "map oa_rpg3dm2;set nextmap vstr d9"
set d9 "map q3dm6ish; set nextmap vstr d1"
vstr d1 // start loop at d1

Plus de variables par ici.

6- lancement du serveur
Une fois que le fichier de configuration est en place, on peut lancer le serveur et commencer à jouer si tout se passe bien :

cd /usr/local/share/openarena/
ioq3ded +set dedicated 2 +set net_port PORT +exec server.cfg

Il faut remplacer PORT par le numéro de port choisi pour accepter les connexions au serveur de jeu. La connexion se fait en UDP.
Pour lancer le serveur en passant la commande en tâche de fond et en redirigeant les sorties stderr et stdout vers le vide, on peut ajouter ceci à la fin de la commande précédente : >/dev/null 2>&1 &, cela donne :

cd /usr/local/share/openarena/
ioq3ded +set dedicated 2 +set net_port PORT +exec server.cfg >/dev/null 2>&1 &

Il est quand même utile dans les premiers temps de garder la console ouverte avec les sorties stderr et stdout de ioquake3.

À partir de là, il doit être possible de jouer. J'ai constaté quelques soucis de rotation de carte en fin de partie, et des comportements étranges sur une carte où je suis resté coincé dans un bout de mur, mais rien de vraiment alarmant. La cause pourrait aussi bien être la différence de version entre le serveur (ioquake3) et le client (openarena 0.6), qu'un défaut dans les cartes fournies.

Bon jeu.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.