Installation d'un serveur Counter-Strike: Source

par Flubber, pour Gandi

I - Téléchargement de HL-Dedicated Server

Le principe du serveur source est le même pour tout les mods (du moins ceux proposés officiellement par valve) conçus sous ce moteur, par exemple Counter Strike Source, Half Life 2 Deathmatch ou encore Team Fortress 2.
Il faut en premier lieu télécharger le serveur puis les fichiers correspondants au jeu à installer.

Commençons par créer un répertoire pour le déploiement de l'utilitaire d'installation puis téléchargeons le fichier. (Source Dedicated Server soit srcds)

cd srv
mkdir srcds
cd srcds
wget http://storefront.steampowered.com/download/hldsupdatetool.bin
chmod +x hldsupdatetool.bin

Lançons maintenant la mise à jour de cet utilitaire et de steam.

./hldsupdatetool.bin
./steam

II - Installation des fichiers du jeu

Il faut maintenant récupérer les fichiers du jeu correspondants à celui voulant être installé, dans notre cas Counter-Strike Source. Créons tout de même un répertoire pour ceux-ci.

mkdir css
./steam -command update -game "Counter-Strike Source" -dir css

Autant vous prévenir que cette partie de l'installation est de loin la plus longue ! Si vous souhaitez accélérer le téléchargement et le traitement de tous les fichiers, vous pouvez prendre quelques parts de plus le temps de l'installation.

Cette commande est la même à utiliser lorsque vous voulez mettre à jour votre serveur si vous n'utilisez pas l'autoupdate, comme nous le verrons plus bas

Nous indiquons donc à steam de mettre à jour l'installation (-command update) du jeu Counter Strike Source (-game “Counter-Strike Source”) dans le répertoire actuel (-dir .). Dans notre cas elle est inexistante : le jeu sera donc intégralement téléchargé.

Pour installer d'autres mods, il suffit de changer “Counter-Strike Source” par le nom du mod, par exemple “TF” pour Team Fortress 2, “hl2mp” pour HL2-Deathmatch.

Une fois le téléchargement terminé, il est bon de vérifier que les fichiers sont tous en bon état. Cette étape n'est pas obligatoire mais elle prend peu de temps et nous assure le bon fonctionnement du serveur.

./steam -command update -game Counter-Strike Source -dir css -verify_all

Le serveur de jeu est maintenant complètement téléchargé et prêt à être lancé. Mais il faut le configurer afin d'obtenir un serveur personnalisé et surtout optimisé.

III - Personnalisation du serveur

A - Le server.cfg

Toute les informations nécessaires au serveur se trouve dans le fichier server.cfg qui se trouve lui même dans le répertoire cfg qui est lui-même dans le répertoire cstrike qui se trouve dans css. Je résume :

cd /srv/srcds/css/cstrike/cfg/

Si il n'existe pas, créez le.
Voici les informations de base à lui fournir. Il existe énormement de variables qu'il serait inutile de présenter toutes ici, mais que vous trouverez sans soucis sur le web. C'est assez indigeste comme ça, mais il est nécessaire de connaitre un minimum ces variables pour bien administrer son serveur.

server.cfg

// Nom du serveur - Mettez ici le nom de votre serveur
hostname "Server Counter-Strike Chez le Père Flubber @ Gandi"
 
// Mot de passe rcon (ceci est le mot de passe pour l'administration de votre serveur ne le communiquez à personne)
rcon_password "motdepasse"
// Mot de passe du serveur (Ici vous pouvez mettre un mot de passe pour accéder au serveur, laissez le vide si vous désirez ouvrir un serveur public)
sv_password ""

cvars Serveur (ici commence la longue liste des variables serveurs)
Dans la majorité des cas :
0 désactive la fonction
1 active la fonction
Parfois il faut rentrer une valeur, en particulier sur les variables de temps.
Les valeurs commentées (par //) sont les plus importantes.

// active le tir-amis
mp_friendlyfire 0
mp_footsteps 1
mp_autoteambalance 1
// Ejection automatique du joueur
mp_autokick 0
// Autorise la lampe de poche
mp_flashlight 0
//Punition automatique pour team-killing
mp_tkpunish 1
//Bloque la caméra des joueurs morts 
mp_forcecamera 0
//active la discussion vocal pour les deux équipes
sv_alltalk 0
//Permet de mettre le serveur en pause
sv_pausable 0
//Autorise la triche
sv_cheats 0
//Vérifie l'intégrité des données afin que le client et le serveurs aient bien les mêmes fichiers
sv_consistency 1
//Autorise l'upload et le download. (des tags par exemple ou des cartes que vous avez ajoutées)
sv_allowupload 1
sv_allowdownload 1
sv_maxspeed 320
mp_limitteams 2
mp_hostagepenalty 5
sv_voiceenable 1
mp_allowspectators 1
//Durée de chaque carte (en minute)
mp_timelimit 25
mp_chattime 10
//Durée avant l'éjection d'un joueur qui ne répond plus (en seconde)
sv_timeout 65
// variables de round
//Durée ou les joueurs sont immobilisés en début de round (en seconde)
mp_freezetime 6
//Durée d'un round (en minute)
mp_roundtime 5
//Montant avec le quelle les joueurs commencent le round
mp_startmoney 800
//Durée du timer de la bombe
mp_c4timer 45
//Nombre maximum de round avant de changer de carte
mp_maxrounds 0
//Nombre maximum de victoire pour une équipe avant de changer de carte
mp_winlimit 0
//Durée de protection des joueurs avant le début d'un round (en seconde)
mp_spawnprotectiontime 5

Réglages du réseau
Ces paramètres permettent de forcer les machines des joueurs à transmettre les informations à la même vitesse, afin que tout les joueurs soient logés à la même enseigne et ce quelque soit la rapidité de leur connexion.

sv_minrate 4000
sv_maxrate 8000
decalfrequency 60
sv_maxupdaterate 100
sv_minupdaterate 60
// Logs du serveur
//Active l'enregistrement des journaux du serveurs (répertoire /logs) variables:on/off
log on
//Enregistre les joueurs bannis
sv_logbans 1
sv_logecho 1
sv_logfile 1
sv_log_onefile 0
//Divers
//Défini si le serveur est un serveur locale ou en ligne (Toujours laissé cette variables sur 0)
sv_lan 0
//Définis la région on se trouve le serveur (Pour l'Europe c'est 3)
sv_region 3
//désactive le système de prix dynamique de valve (très peu de serveurs l'utilisent)
mp_dynamicpricing 0
// execute ban files
//Le serveur va lire la liste des steam_id bannis
exec banned_user.cfg
//Le serveur va lire la liste des ips bannis
exec banned_ip.cfg

Si vous ne voulez pas faire vous même votre server.cfg, il existe des générateurs automatiques qui vous permettent de générer un cfg configuré avec vos variables.
Par exemple : http://www.cstrike-planet.com/cfgmaker?cfg=srcds

B - Ajouter des maps

Aujourd'hui, peu de serveurs ne tournent qu'avec les cartes d'origines. En effet, les joueurs les ont joués des centaines de fois, voire plus.
Il convient d'ajouter des cartes qui correspondent au ton de votre serveur et aux désirs des membres de votre clan ou de vos visiteurs.
Difficile ici de vous donner des conseils sur quelles cartes il est préferable d'installer. Je ne peux que vous conseiller un site qui, pour moi, est une référence : fpsbanana.com qui liste quasiment toutes les cartes créées par les mappeurs et qui met à disposition un top des cartes les plus téléchargées.

Les cartes doivent être copiées dans le répertoire “maps” qui se trouve à la racine de votre installation.
Une fois copié, il faut les ajouter au mapcycle. Pour cela, rien de plus simple : il suffit d'éditer le fichier mapcycle.txt qui se trouve lui aussi à la racine de votre serveur et d'y rajouter le nom de la carte récemment installée et enfin de le sauvegarder.
Il sera pris en compte dès la prochaine carte jouée sur votre serveur, sans même avoir besoin de le redémarrer.

Le moteur d'half-life 2 inclu un décompresseur bzip. Celui-ci permet d'accélérer grandement le téléchargement des cartes par les clients connectés car ceux-ci récupèrent la version compressée de la carte au lieu de la version complète.
Tout les fichiers devant être récupérés par le client peuvent être compressés. Il convient de procéder ainsi :

cd maps
bzip2 nouvellecarte.bsp

Vous obtiendrez alors un fichier nouvellecarte.bsp.bz2 qui prendra moitié moins de place que la carte d'origine, divisant ainsi par deux la durée de téléchargement pour les joueurs.
à savoir qu'il est possible de tout compresser, les fichiers .bsp pour les cartes, mais aussi les fichiers texte les accompagnant ainsi que les sons que vous voudriez ajouter.

:!: Il est possible de créer un miroir de téléchargement afin de ne pas surcharger le serveur lorsqu'un joueur ne possède pas la carte. Sur ce serveur il est impératif de conserver la même architecture que sur le serveur de jeu.
Par exemple, imaginons que mon miroir se trouve sur "http://www.miroircss.com". Je dois alors créer un répertoire css dans lequel je crée un répertoire maps où je placerais les nouvelles cartes ainsi que leurs versions .bz2 (il est nécessaire de mettre les deux). Une fois le miroir en place il faut ajouter ceci dans le fichier server.cfg :

// Taille maximum autorisée pour les fichiers à télécharger (Valeur d'origine 15Mo)
net_maxfilesize 60
//Indique l'adresse du miroir
sv_downloadurl "http://www.miroircss.com/css/"

Une fois le miroir mis en place, plus rien n'est téléchargé sur le serveur de jeu : le miroir devient la source exclusive de fichiers pour les joueurs. Si vous installez une carte sur votre serveur de jeu et que vous oubliez de la mettre sur le miroir, les joueurs ne pourront pas la télécharger.

IV - Lancement du serveur

Après cette longue, mais nécessaire, phase de configuration, il est temps maintenant de lancer notre serveur CS:S.
Placez-vous dans le répertoire /srcds/ et lancez le Source Dedicated Server de la manière suivante :

Dans notre exemple le serveur va avoir 24 places, un tickrate de 100 et va se lancer sur la carte de_dust2.

cd /srv/srcds/css/
./srcds_run -console -game cstrike +map de_dust2 -maxplayers 24 -autoupdate -tickrate 100

L'information tickrate permet de définir la fréquence de mise à jour des informations clients elle peut aller de 40 (par défaut) à 100. Plus elle est élevé moins il y aura de décalage entre les informations client et serveurs.
Un tickrate élevé permet par exemple de ne pas avoir un joueur qui viens de se mettre à l'abris tué par un joueur qui ayant un décalage dans les information de position le voit toujours en face de lui.
Pour faire bref, plus le tickrate est élevé plus les informations relatives à la position des joueurs sont précises et moins nombreuses sont les plaintes des joueurs :)

Il est évidemment tout à fait possible de lancer le serveur CS:S dans un screen, afin de conserver un accès à la machine, pour cela il suffit de lancer le serveur de cette manière :

screen -A -m -d -S css-server ./srcds_run -console -game cstrike +map de_dust2 -maxplayers 24 -autoupdate -tickrate 100

Un screen css-server sera créé, pour y accéder tapez :

screen -x css-server

Voila, amusez-vous bien, et n'hésitez pas à poser vos questions à la communauté.

Dernière modification: le 03/06/2013 à 16:42 par Alexandre J. (Gandi)