Amusons-nous un peu avec Open Arena, un First Person Shooter basé sur le moteur libéré sous GPL du génialissime Quake 3 Arena. Mais pour bien s'amuser, mieux vaut être plusieurs. Comme héberger soi-même la partie c'est lourd, utilisons une machine dédiée.

D'abord, on récupère OA 0.7.0 et le patch 0.7.1 soit via le site officiel, soit via votre gestionnaire de paquets favoris (à ma connaissance, Ubuntu et Fedora n'ont pas de version à jour dans leur dépôts, mais cela a pu changer depuis que j'ai vérifié. Aucun problème avec une Mandriva 2008), soit via mon miroir perso http://downloads.anotherhomepage.org/ , rubrique Programs. On récupèrera optionnellement le mod OSP 1.03.

On décompresse les archives, à la racine de son répertoire home. Pour un utilisateur "quakeur" sur une machine "campgrounds", cela donne comme arborescence :

quakeur@campgrounds:~ $pwd
/home/quakeur
$ls -hlF openarena/
total 11M
drwxr-xr-x  2 quakeur quakeur 4,0K 2007-11-11 20:50 baseoa/
-rwxr--r--  1 quakeur quakeur 6,8K 2007-07-07 07:09 CHANGES*
-rwxr--r--  1 quakeur quakeur  18K 2006-11-10 17:50 COPYING*
-rwxr--r--  1 quakeur quakeur 2,1K 2007-07-07 03:56 CREDITS*
-rwxr--r--  1 quakeur quakeur 765K 2007-07-07 09:50 ioq3ded.i386*
-rwxr--r--  1 quakeur quakeur 877K 2007-07-07 09:50 ioq3ded.x86_64*
-rwxr--r--  1 quakeur quakeur 1,6M 2007-07-07 09:50 ioquake3.i386*
-rwxr--r--  1 quakeur quakeur 1,6M 2007-07-07 09:50 ioquake3-smp.i386*
-rwxr--r--  1 quakeur quakeur 1,8M 2007-07-07 09:50 ioquake3-smp.x86_64*
-rwxr--r--  1 quakeur quakeur 1,8M 2007-07-07 09:50 ioquake3.x86_64*
-rwxr--r--  1 quakeur quakeur  16K 2006-11-26 05:25 libogg-0.dll*
-rwxr--r--  1 quakeur quakeur 154K 2006-11-26 05:25 libvorbis-0.dll*
-rwxr--r--  1 quakeur quakeur  29K 2006-11-26 05:25 libvorbisfile-3.dll*
-rwxr--r--  1 quakeur quakeur   64 2006-11-25 18:35 LINUXNOTES*
-rwxr--r--  1 quakeur quakeur 2,0M 2007-07-07 09:50 openarena.exe*
-rwxr--r--  1 quakeur quakeur 1,4K 2007-07-07 09:50 README*
quakeur@campgrounds:~ $ls -hlF openarena/baseoa/
total 261M
-rwxr--r--  1 quakeur quakeur  30M 2007-07-07 08:41 pak0.pk3*
-rwxr--r--  1 quakeur quakeur  27M 2007-07-07 08:38 pak1-maps.pk3*
-rwxr--r--  1 quakeur quakeur  23M 2007-07-07 08:43 pak2-players-mature.pk3*
-rwxr--r--  1 quakeur quakeur  65M 2007-07-07 08:46 pak2-players.pk3*
-rwxr--r--  1 quakeur quakeur  25M 2007-07-07 08:47 pak3-music.pk3*
-rwxr--r--  1 quakeur quakeur  67M 2007-07-07 08:48 pak4-textures.pk3*
-rwxr--r--  1 quakeur quakeur 117K 2007-07-07 08:49 pak5-TA.pk3*
-rwxr--r--  1 quakeur quakeur  16M 2007-07-07 08:49 pak6-misc.pk3*
-rw-r--r--  1 quakeur quakeur  12M 2007-08-08 14:36 pak7-patch.pk3

2 choses : la première, le zip contient les binaires 32 et 64 bits x86 pour Linux, mais aussi un binaire 32 bits pour Windows. On peut optionnellement dégager ce dernier ainsi que les dll, vu qu'ils ne serviront pas, je pars du postulat qu'on tourne sous un OS propre, voire terreux, mais pas sale.

La seconde, c'est l'endroit où se situe le fichier du patch 0.7.1 : on vérifiera bien que le fichier pak7-patch.pk3 est dans ~/openarena/baseoa/ .

ensuite, il faut se faire un fichier de configuration. OpenArena étant basé sur le moteur libre de Quake 3 Arena, tout bon tuto qui se respecte pour ce bon vieux Q3A est à peu près valide pour OA. Voici ma configuration, utilisée pour la micro lan-party des JM2L 2007 (téléchargeable ici):

//Fichier de config server OA, chaque commentaire commence par "//" et dure jusqu'à la fin de la ligne.
   //on met gametype à 0 pour Free for All (chacun pour sa pomme) 
     g_gametype 0
   //Free For All Settings 
   //Limite de frag. Au-delà, on change de map. Pour enlever la limite, mettre à 0
     fraglimit 20
   //Limite de temps. Au-delà, on change de map. Pour enlever la limite, mettre à 0
     timelimit 10
   //Nombre max de n00bz sur le serveur
     sv_maxclients 8
   //Nom qui apparait dans l'interface de recherche
   sv_hostname "Open Arena JM2L FFA Server"
   //Message du jour (Message of the day). Optionnel
   set g_motd "JM2L Open Arena serveur, amusez-vous bien !"
   //On peut réclamer un mot de passe à l'entrée du servur 1="je veux un mot de passe", 0="je m'en cogne" (Défaut: 0)
     sv_privateClients 0
   //Si t'as mis 1 à la valeur précédente, indique ici ton mot de passe (on commente si c'est 0)
   //sv_privatePassword ""
   //Mot de passe de la console d'admin
     rconpassword "lamepassword"
   //Sorte d'anti-triche qui vérifie l'intégrité des fichiers pak 1=activé, 0=désactivé (Défaut: 1)
     sv_pure 1
   //Rafraîchissement max des n00bz qui viennent jouer, on recommande une valeur de 8000 à 10000 Max: 25000 
   //(Défaut: 0)
     sv_maxRate 10000
   //Sélection des map, dans quel ordre, et ensuite on charge la première map
     set d1 "map oa_rpg3dm2; set nextmap vstr d2"
     set d2 "map q3dm6ish; set nextmap vstr d3"
     set d3 "map oa_dm1 ; set nextmap vstr d4"
     set d4 "map fan; set nextmap vstr d5"
     set d5 "map suspended ; set nextmap vstr d1"
     vstr d1
   //temps de réapparition (respawn) des armes en secondes. S'il y a plein de n00bz sur le serveur,
   // mieux vaut augmenter la valeur (Défaut: 5)
   set g_weaponrespawn 5
   //Possibilité de voter 1=oui, 0=non (Défaut: 1)
   set g_allowvote 1
   //multiple de puissance du quad damage 
   //(Défaut: 3. donc un coup de roquette fait 3 fois plus de dégâts quand on a le quad damage)
   set g_quadfactor 3
   //variable nécessairement à 1 pour les clients qui veulent enregistrer la partie, 
   //mais cela ralentit légèrement le jeu (Défaut: 0)
   set g_syncronousClients 0
   //petites infos parfois utiles
     sets "Administrator" "r00t"
     sets "Email" "mail@domain.tld"
     sets "URL" "http://www.domain.tld"
     sets "Location" "au fond à droite"
     sets "CPU" "Quadri Xeon"
   // Si on utilise un pack de maps persos, il faut en faire profiter les autres :))
     //sets "mappack" "http://www.myserver.com/mappack.zip"
// --- bots ---
seta bot_enable "1"				// Activer les bots : 1 = activé, 0 = désactivé
seta bot_minplayers "3" 			// Nombre minimum de n00bz pour que les bots se barrent
seta bot_nochat "1"				// Les bots peuvent parler. 1 = ils peuvent faire les piplettes, 0 = ils la bouclent
// End of file.

Ce fichier, appelons-le ffa.cfg (puisque c'est un serveur Free For All) et plaçons-le dans notre répertoire de configuration OA (le jeu fonctionne dans un mode plus ou moins chrooté, alors mieux vaut qu'il puisse trouver la config) :

quakeur@campgrounds:~ $pwd
/home/quakeur
quakeur@campgrounds:~ $cd .openarena/
quakeur@campgrounds:~/.openarena $ls -hlF
total 4,0K
drwxr-xr-x  2 quakeur quakeur 4,0K 2007-11-11 22:19 baseoa/
quakeur@campgrounds:~/.openarena $cd baseoa/
quakeur@campgrounds:~/.openarena/baseoa $ls -hlF
total 88K
-rw-r--r--  1 quakeur quakeur  75K 2007-11-11 22:28 games.log
-rwxr-xr-x  1 quakeur quakeur 3,1K 2007-11-11 21:00 ffa.cfg*
-rw-r--r--  1 quakeur quakeur  956 2007-11-11 22:20 q3config.cfg
quakeur@campgrounds:~/.openarena/baseoa $

les fichiers games.log et q3config.cfg peuvent ne pas exister, ils seront créés après un premier lancement du jeu. A la rigueur, selon la quantité de mémoire vive de votre serveur dédié, il peut être bien de positionner la variable com_hunkMegs à la quantité de mémoire vive que vous désirez allouer.

Et maintenant? Et bien on lance le serveur :

quakeur@campgrounds:~ $cd openarena/
quakeur@campgrounds:~ $./ioq3ded.i386 +set dedicated 1 +set net_ip 192.168.0.3 +set net_port 27960 +set g_log games.log +exec ffa.cfg

Spécifier l'adresse IP est une bonne chose si vous avez de multiples interfaces réseau, mais c'est optionnel. Idem pour le port, mis par défaut à 27960 si ma mémoire est bonne (utile si on a un monstre de puissance et qu'on fait tourner plusieurs instances du jeu avec des confs différentes). Il est possible, si on utilise un mod, d'ajouter l'option +set fs_game nomdumod , sachant que le répertoire du mod doit être dans le répertoire de configuration (je ne comprend pas pourquoi, mais ça marche comme ça chez moi :/). Le fichier de config, et celui de log seront aussi dans ce répertoire :

quakeur@campgrounds:~/.openarena/baseoa $cd osp/
quakeur@campgrounds:~/.openarena/baseoa/osp $$ls -hlF
total 92240
-rw-rw-rw-    1 quakeur  quakeur      738B 14 déc  2001 1v1.cfg
drwxrwxrwx   20 quakeur  quakeur      680B 17 fév  2003 Docs/
-rw-rw-rw-    1 quakeur  quakeur        3K 28 fév  2003 INSTALL.txt
-rw-r--r--    1 quakeur  quakeur      348K 23 jan  2002 OSP Config Generator.exe
-rw-rw-rw-    1 quakeur  quakeur        2K  4 déc  2001 OSP Match Quick Start.txt
-rw-rw-rw-    1 quakeur  quakeur       12K 16 fév  2003 README.txt
-rw-rw-rw-    1 quakeur  quakeur       27K 14 déc  2001 VoodooStats-ReadME.txt
drwxrwxrwx    9 quakeur  quakeur      306B 23 fév  2002 cfg-DefaultModeReference/
drwxrwxrwx    4 quakeur  quakeur      136B 23 fév  2002 cfg-GfxExample/
drwxrwxrwx    8 quakeur  quakeur      272B 23 fév  2002 cfg-maps/
-rw-rw-rw-    1 quakeur  quakeur      762B 14 déc  2001 clanarena.cfg
-rw-rw-rw-    1 quakeur  quakeur        1K 14 déc  2001 ctf-public.cfg
-rw-rw-rw-    1 quakeur  quakeur      736B 14 déc  2001 ctf.cfg
-rw-rw-rw-    1 quakeur  quakeur       30B  2 mar  2003 description.txt
-rw-rw-rw-    1 quakeur  quakeur      738B 14 déc  2001 ffa.cfg
-rw-rw-rw-    1 quakeur  quakeur        1K  4 déc  2001 filters.txt
-rw-rw-rw-    1 quakeur  quakeur      885B 16 fév  2003 freezetag-vanilla.cfg
-rw-rw-rw-    1 quakeur  quakeur      856B 16 fév  2003 freezetag.cfg
-rw-r--r--    1 quakeur  quakeur       96K 10 nov 15:26 games.log
-rw-rw-rw-    1 quakeur  quakeur      728B 14 déc  2001 instagib.cfg
drwxrwxrwx    4 quakeur  quakeur      136B 23 fév  2002 locs/
-rw-r--r--    1 quakeur  quakeur       10K 11 nov 16:09 q3config.cfg
-rw-r--r--    1 quakeur  quakeur       49B  9 nov 22:01 q3history
-rw-------    1 quakeur  quakeur      167B 11 nov 16:09 q3key
-rw-rw-rw-    1 quakeur  quakeur        3K  5 déc  2000 spectool.cfg
-rw-rw-rw-    1 quakeur  quakeur      760B 14 déc  2001 team.cfg
drwxrwxrwx    3 quakeur  quakeur      102B 23 fév  2002 vm/
drwxrwxrwx   14 quakeur  quakeur      476B 23 fév  2002 voodoo/
-rw-rw-rw-    1 quakeur  quakeur       35M 14 déc  2001 zz-osp-pak0.pk3
-rw-rw-rw-    1 quakeur  quakeur        8M 31 jan  2002 zz-osp-pak1.pk3
-rw-rw-rw-    1 quakeur  quakeur      162K 17 fév  2003 zz-osp-pak2.pk3
-rw-rw-rw-    1 quakeur  quakeur      158K 28 fév  2003 zz-osp-pak3.pk3
-rw-rw-rw-    1 quakeur  quakeur      239K  4 mar  2003 zz-osp-server3a.pk3
quakeur@campgrounds:~/.openarena/baseoa $

On note la présence d'un fichier ffa.cfg, d'un q3config.cfg, d'un games.log et de plein d'autres fichiers très intéressants à lire si on souhaite approfondir le sujet (connaissance de l'anglais obligatoire). Le fichier "OSP Config Generator.exe" permet, sous Windows, de générer des fichiers de configuration en mode graphique. Je ne l'ai pas testé sous wine.

Pour plus d'informations :

Planet Quake sur Gamespy

FAQ TuxFamily sur OpenArena

Wiki Open Arena

Une autre doc très bien faite

GLHF !