Comment transformer son raspberry en serveur de jeu Quake3 ?

ioquake3

 

Qui n’a jamais joué à Quake3 le fameux jeu de FPS ? Si vous êtes passés à côté , il est encore temps de vous rattraper .
Les sources du célèbre jeu ont été améliorés par des bénévoles et sont désormais disponibles sous le doux nom de ioquake3.
Quand je vois que certains cherchent encore des prétextes pour pour pouvoir faire quelque chose de leur raspberry
Bah voilà, une idée fun , un petit serveur de jeu maison pour pas cher !

Prérequis
1/ Installation du client ioquake3
2/ Installation du serveur de jeu 
3/ Configuration du serveur
4/ Administration du serveur

Prérequis

  • un Raspberry2 ou 3 , (ici pour le tuto ce sera un rpi3)
  • une carte SD avec Raspbian
  • une connexion ethernet (wifi si rpi3)
  • 15 minutes de son temps libre

1/ Installation du client ioquake3

Installation du client sous son pc portable Linux par exemple mais Ioquake3 est multiplateforme.
C’est à dire qu’on peut aussi l’installer sous Mac/os ou Windows.

Télécharger le jeu ICI en fonction de votre OS client. Pour ma part ce sera Linux

Exécuter les fichiers .run.

D’abord le fichier « engine »:

wget https://ioquake3.org/files/1.36/installer/ioquake3-1.36-7.1.i386.run

sh ioquake3-1.36-7.1.i386.run

Puis l’installeur :

wget https://ioquake3.org/files/1.36/data/ioquake3-q3a-1.32-9.run

sh ioquake3-q3a-1.32-9.run

Si tout s’est bien passé, le chemin du répertoire d’installation du jeu sur le client est :

/usr/local/games/ioquake3

2/ Installation du serveur de jeu

Alors je passe les étapes de la création de la carte SD avec l’image RASPBIAN .
Se référer à ce précédent tuto en cas de trou de mémoire ^_^
Booter sur la raspbian et s’assurer qu’elle possède bien une @IP.

Connexion en ssh sur le raspberry qui dans ce tuto aura pour adresse 192.168.0.10:

ssh pi@192.168.0.10

Attention si vous avez opté pour installer une raspbian lite , il sera nécessaire d’activer le service ssh avec un clavier connecté directement au pi.

/etc/init.d/sshd start

  • Création d’un utilisateur unix dédié au contexte quake3

sudo adduser ioq3srv

passwd ioq3srv

  • On change de contexte et se connecte sous la session de l’utilisateur « ioq3srv« 

su -ioq3srv

  • On télécharge le script « server_compile.sh » qui va servir à compiler les sources du jeu.

wget https://raw.githubusercontent.com/ioquake/ioq3/master/misc/linux/server_compile.sh

Avant de l’exécuter, on vérifie ou on installe en fonction les 3 paquets suivants:

=> git, gcc, make

sudo apt-get update

sudo apt-get dist-upgrade

sudo apt-get install git gcc make

Maintenant que tous les packages nécessaires à l’installation sont installés , reste plus qu’à compiler et installer le jeu sur le serveur.

Pour cela ,on exécute le script de compilation: « server_compile.sh »

sh server_compile.sh

Normalement, le répertoire « ioquake3  » est créé à partir de l’emplacement d’exécution du script « server_compile.sh« , soit le chemin suivant:

ls -l /home/ioq3srv/ioquake3/baseq3/

Intégrer à partir de Quake III Arena CD, le fichier « pak0.pk3«  dans « /home/ioq3srv/ioquake3/baseq3/ ».

Si vous ne possédez pas ce fichier il est facilement trouvable sur le web 🙂

cp pak0.pk3 /home/ioq3srv/ioquake3/baseq3/

Télécharger larchive patch « quake3-latest-pk3s.zip«  qui contient toutes les maps à jour:

wget https://www.ioquake3.org/data/quake3-latest-pk3s.zip

unzip quake3-latest-pk3s.zip -d .

Copier les contenus dans les répertoires « base3 » et « missionpack« .

Télécharger le script « start_server.sh » de démarrage du serveur:

wget https://raw.githubusercontent.com/ioquake/ioq3/master/misc/linux/start_server.sh

Donner les droits d’exécution au script:

chmod u+x start_server.sh

3/ Configuration du serveur

Par défaut,dans « start_server.sh » on trouve la ligne suivante :

~/ioquake3/ioq3ded.arm +set dedicated 2 +set sv_allowDownload 1 +set sv_dlURL «  » +set com_hunkmegs 64 « $@ » vim start_server.sh

Nous allons modifier cette ligne par la suite , mais dans un premier temps nous devons créer 2 fichiers de configuration indispensables au serveur:

  • q3ded-osp.cfg,
  • maprotation.cfg

Créer ces 2 fichiers dans le répertoire « /home/ioq3srv/ioquake3/baseq3/ ».

Fichier de configuration générale ioquake3:

vim q3ded-osp.cfg

Copier les lignes suivantes dans le fichier q3ded-osp.cfg:
(les informations à changer et à personnaliser sont en gras)

// ********************** START OF Q3A SERVER FILE **********************
// FILENAME : q3ded-osp.cfg

// q3a server config
// vq3 ffa
// make sure the map rotation file ‘maprotate-osp-ffa.cfg’ exists
// written by spirit, based on the config from holarse.net

// — contact and admin —
sets « .Admin » « change_me » // admin name
sets « .email » « change_me » // admin email
sets « .www » « change_me » // www site that offers maps rotated on the server etc

// — basic stuff —
seta rconPassword « change_me » // remote console admin password
seta g_gametype « 0 » // gametype (0 = ffa, 1 = tourney, 2 = ffa, 3 = tdm, 4 = ctf)

// — banner stuff —
seta sv_hostname « change_me » // how the server shows up in q3a game browser
seta g_motd « change_me » // message of the day, shown on client connect

// — misc —
seta r_smp « 0 » // whether the server has multiple CPUs
seta sv_pure « 1 » // whether .pk3-files are cheat checked

// — clients and slots —
g_password « change_me » // server password for clients who try to connect
g_needpass « 0 » // whether the password is enabled / needed to connect
seta sv_maxClients « 8 » // max players allowed on server, includes spectators
seta sv_privateClients « 2 » // reserved slots for players who know the private password
seta sv_privatePassword « change_me » // private slot password
seta g_syncronousClients « 0 » // whether clients are allowed to record demos
seta g_allowvote « 0 » // map – map restart – kick – g_gametype

// — annoyances —
// Note that you need to turn punkbuster off on the command line when you start the server (q3ded +set sv_punkbuster 0 …)
// because you can’t change the setting anymore once the server process has started! Removing the next line (or putting ‘sv_punkbuster 0’
// into your config file will NOT turn off punkbuster.
pb_sv_enable // enable punkbuster server
pb_sv_guidrelax 7 // disable punkbuster CD-check
seta sv_strictauth « 0 » // whether CD-key is checked on client

// — network —
seta sv_allowdownload « 0 » // whether clients are allowed to d/l maps etc from server
seta sv_maxRate « 10000 » // download speed limit
seta sv_floodProtect « 1 » // whether server uses flood-protection
seta sv_master1 « master0.gamespy.com:28900 » // master servers where the server registers itself
seta sv_master2 « master.gamershut.de:27950 » // to be found by players.
seta sv_master3 « master.gnw.de:27950 » // use +set dedicated x to tell the server whether or not
seta sv_master4 « master3.idsoftware.com:27950 » // to register itself there, x = 2 : register x = 1 : don’t

// — weapons —
seta g_quadfactor « 3 » // quad damage multiplier, default = 3
seta g_weaponrespawn « 5 » // weapon respawn time in secs, default = 5
seta g_friendlyfire « 0 » // whether you can do damage to your team members
seta g_teamAutoJoin « 0 » // whether players are automatically added to a team
seta g_teamForceBalance « 0 » // whether teams are auto-balanced by the server
seta g_forcerespawn « 2 » // time after which players are forced to respawn, 0 = never

// — movement —
seta pmove_fixed « 1 » // whether movement is independent of client framerate
seta pmove_msec « 16 » // dont ask me
seta sv_fps « 30 » // server frame rate

// — bots —
seta bot_enable « 1 » // whether bots are allowed on the server
seta bot_minplayers « 0 » // minimum players number, filled up with bots if fewer
seta bot_nochat « 1 » // whether bots are allowed to chat

// — map rotation —
exec maprotation-osp.cfg

// ********************** END OF Q3A SERVER FILE **********************

Fichier de rotation automatique des map « maprotation-osp.cfg« :

vim maprotation-osp.cfg

Copiez y les lignes suivantes:

// ********************** START OF Q3A MAPROTATION FILE **********************
// FILENAME : maprotation-osp.cfg

// map-rotation for q3a osp free for all (ffa)
// gametypes : 0 = ffa, 1 = tourney, 2 = ffa, 3 = tdm, 4 = ctf

set m1 « fraglimit 50; timelimit 0 ; g_gametype 0 ; map ospdm12 ; set nextmap vstr m2 »
set m2 « fraglimit 50; timelimit 0 ; g_gametype 0 ; map ospdm8 ; set nextmap vstr m3 »
set m3 « fraglimit 50; timelimit 0 ; g_gametype 0 ; map ospdm9 ; set nextmap vstr m4 »
set m4 « fraglimit 50; timelimit 0 ; g_gametype 0 ; map ospdm6 ; set nextmap vstr m5 »
set m5 « fraglimit 50; timelimit 0 ; g_gametype 0 ; map ospdm5 ; set nextmap vstr m6 »
set m6 « fraglimit 50; timelimit 0 ; g_gametype 0 ; map ospdm4 ; set nextmap vstr m1 »
vstr m1

// ********************** END OF Q3A MAPROTATION FILE **********************

Il reste maintenant à indiquer au script « start_server.sh » la présence des 2 fichiers de conf créés précédemment:

vim /home/ioq3srv/ioquake3/baseq3/start_server.sh

~/ioquake3/ioq3ded.arm +set dedicated 2 +set sv_allowDownload 1 +set sv_dlURL «  » + map q3dm17 +set com_hunkmegs 64  » + exec q3ded-osp.cfg $@ »

Démarrer le serveur:

screen sh start_server.sh

ctrl+a puis d => quitte l’affichage du serveur et redonne la main au niveau du prompt.

Vérifier que le script tourne bien en fond de tâche:

ps -ef|grep ioq

Pour reprendre la main sur l’affichage du serveur:

screen -drU

4/ Administration

Pour jouer, faut lancer le jeu « ioquake » à partir de son pc portable ou fixe puis pour trouver le serveur:

Menu

=>Multiplayer=> server local

quake3

q3servlocal

Activer la console lorsqu’on a lancé le jeu sur son pc:

=> shift + esc

Prendre la main à distance sur son serveur via le client ioquake3:

/set rconaddress server_ip:server_port

Les différentes commandes utiles à connaitre si vous êtes l’administrateur du serveur:

g_gametype 1
Change le mode de jeu :
[1] c’est pour mode deathmatch,
[2] match en un contre un,
[3] c’est team deathmatch,
[4] pour ctf, capture the flag.
bot_enable 1 or 0
Active (si c’est à 1) ou désactive (si c’est mis à 2) les « bots » sur le serveur.
addbot <botname> <difficulty range> <teamcolor>
Ajouter manuellement 1 bot, avec en option possibilité de mettre la difficulté ainsi que la couleur de l’équipe à laquelle il devra appartenir.(red ou blue)
La difficulté est comprise entre 1 et 5, sachant que 5 est le niveau de difficulté le plus élevé. Le bot vous « fraggera » quasi à coup sûr ^_^
g_allowvote 1 or 0
Une fonction qu’elle est bien pour permettre aux joueurs de voter pour le choix d’une map. Mais aussi de voter pour exclure un joueur ou pour changer de mode de jeu.
banaddr <range>
Bannir une adresse ip ou une plage d’adresses en utilisant la notation CIDR
bandel <range>
annule le ban dune ip
game_restart <fs_game>
Pour basculer dans un autre mode de jeu
kicknum <client number>
kicker un joueur par son ID
kickbots
Pour kicker en une seule commande , TOUS les bots
tell <client num> <msg>
Envoyer un message à un seul client

Be the first to comment

Leave a Reply

Votre adresse de messagerie ne sera pas publiée.


*