Pourquoi installer un serveur Arma II sous Linux plutôt que sous Windows ? Les performances annoncées par Bohemian paraissent identiques et elles le sont surement. Dans l'absolu, une fois recompilé pour un système d'exploitation ou l'autre, le serveur devrait avoir sensiblement la même performance, mais dans la réalité il n'en est rien.
Et oui, le serveur ne tourne pas tout seul. Son comportement est largement influencé par ce qui l'entoure. C'est à dire que si vous lancez votre serveur Arma II et en même temps un traitement lourd, Arma va subir les ralentissement infligé par l'autre programme.
Dans ce cas, des différences importantes apparaissent entre le fonctionnement sous Linux ou Windows.
En fait il n'y a quasiment aucun avantage à faire tourner son serveur sous Windows.
Les avantages et inconvénients de chacun:
| Linux | Windows |
|---|---|
| + Système d'exploitation gratuit | - Système d'exploitation payant |
| + Multi-tâche performant | - Médiocre |
| + Sécurisation du system | - C'est quoi ? |
| + Administration distance | - Lol |
Vous l'avez compris, il n'y a aucun intérêt à installer un serveur Arma II sous Windows.
Choisir Linux c'est avant tout choisir la distribution. Je recommande Debian (Lenny) parce que c'est LA distribution pour les raisons évoquées dans ce liens : pourquoi Debian
Le reste de ce tutoriel se réfèrera donc à cette distribution. Ce n'est pas un tuto sur l'installation d'une distrib aussi je m'etendrait pas sur le sujet. Si vous n'avez pas les compétences requises pour administrer votre système à distance, oubliez.
Donc pour commencer, installez votre Lenny en mode texte uniquement. Pas besoin de gestionnaire de fenêtre, ou je ne sais quoi d'autres. Installez le minimum, nous n'avons besoin de rien.
Comme nous sommes des grandes filles et que nous n'avons peur de rien et qu'on est un minimum responsable et que nous sommes des R3F et qu'en plus on sait ce qu'on fait et qu'on les meilleurs et qu'on les encule, tremblez bonnes gens, nous travaillerons en mode root !!!!
Arrêtez la bibine et les substances bizarres, ici la faute se paye cash et chers souvent.
Alors les fiotes du terminal, les usés de l'index (mouse man), les chiasseux chronique, les anxieux de l'octet, circulez c'est pas pour vous ici.
Ames sensibles s'abstenir, on travaille sans filet.
Mais si vous aimez les petites poussées d'adrénaline…
L'installation se fera dans /home donc prévoyez de la place sur cette partition.
Ajoutez de quoi compiler un programme (build essential devrait suffire) et ia32-libs si votre Debian est en 64bits Ajoutez à l'installation tout ce qui permet de décompresser des archives Windows. C'est utiles pour installer les addons qui sont des fois en rar, zip , voire exe
Nous y voila, votre machine distance a reboutté, vous êtes loggé dessus en root, les choses sérieuses peuvent commencer.
Créer un répertoire arma dans /home
mkdir /home/arma cd /home/arma
Copiez dans ce répertoire tout votre répertoire d'installation Arma2 de votre machine locale vers ce répertoire. Utilisez par exemple WinScp qui fait ca très bien. C'est aussi la que vous allez comprendre ce que veut dire la petite lettre A de ADSL. Lol Et oui c'est long les téléchargements dans ce sens là, quand c'est vous qui envoyez les fichiers.
Avec votre navigateur et sur la machine locale, téléchargez le serveur Arma2 pour Linux. Vous pouvez consulter la page officielle de Bohemian Interactive à propos du serveur dédié sous Linux. Téléchargeons le serveur Arma2 sous Linux chez Bohemian Interactive.
Une fois le téléchargement initié, récupérez l'adresse (URL) du fichier et copiez la dans le presse papier. Dans le terminal entrez :
wget -O arma2server.bz2 [SHIFT+INSERT]
[SHIFT+INSERT] est la séquence de touche qui permette de coller le contenu du presse papier dans la console. (l'URL du fichier serveur Arma2 sous linux)
Le téléchargement effectué vous devriez avoir un fichier nommé arma2server.bz2
Décompressez l'archive
tar -xjf arma2server.bz2
une fois la décompression effectuée, tapez :
gcc -O -o tolower tolower.c
ce qui aura pour effet de compiler un petit programme nommé “tolower” qui nous sera utile par la suite.
Effacer tous les fichiers inutiles
rm -f *.exe *.chm *.dll *.o
On va maintenant utiliser tolower pour convertir tous les noms de fichiers en minuscule. Sous Linux le serveur Arma ne fonctionne qu'avec des noms de fichier en minuscule.
./tolower
Si tout c'est bien passé, vous devriez avoir un répertoire ressemblant à ça en tapant :
ls -l
| drwxr-x— | 2 | root | root | 4096 | jan 9 17:20 | addons |
| -rw-r—– | 1 | root | root | 0 | mai 16 11:55 | ban.txt |
| drwxr-x— | 2 | root | root | 4096 | mar 4 12:21 | battleye |
| drwxr-x— | 2 | root | root | 4096 | jan 6 14:54 | dta |
| drwxr-x— | 2 | root | root | 4096 | mai 9 22:48 | keys |
| drwxr-x— | 2 | root | root | 4096 | mai 16 17:32 | logs |
| drwxr-x— | 2 | root | root | 4096 | jun 19 2009 | missions |
| drwxr-x— | 2 | root | root | 4096 | mai 14 18:09 | mpmissions |
| -rwxr-x— | 1 | root | root | 16138960 | déc 21 14:08 | server |
| drwxr-x— | 4 | root | root | 4096 | mai 16 17:32 | tmp2302 |
| -rwxr-x— | 1 | root | root | 11258 | jan 9 17:20 | tolower |
Nous voila prêt. Ou presque.
L'installation est terminée et il nous reste à configurer et à lancer.
Créer les fichiers suivants :
touch /home/arma/run_arma chmod +x /home/arma/run_arma touch /home/arma/basic.cfg touch /home/arma/server.cfg mkdir /home/arma/server touch /home/arma/server/server.armaprofile mkdir /home/arma/logs
Les fichiers de configuration vont être rempli.
Le fichier 'basic.cfg' contiendra :
language="French"; adapter=-1; 3D_Performance=1.000000; Resolution_W=800; Resolution_H=600; Resolution_Bpp=32; MinBandwidth = 320000; MaxBandwidth = 10000000000; MaxMsgSend = 256; MaxSizeGuaranteed = 1024; MaxSizeNonguaranteed = 64; MinErrorToSend = 0.005; MaxCustomFileSize = 1000000;
Vous pouvez consulter Wiki de Bohemian Interactive pour de plus amples exmplications.
Le fichier server.cfg contiendra :
hostname = "Serveur de test"; password = ""; passwordAdmin = "xyz"; reportingIP = "armedass.master.gamespy.com"; logFile = "logs/server.log"; motd[] = { "Bienvenue sur le serveur de test", "", "O.E.L.M.E.O.L.E" }; motdInterval = 5; checkfiles[] = {}; maxPlayers = 30; kickDuplicate = 1; verifySignatures = 1; equalModRequired = 0; voteMissionPlayers = 1; voteThreshold = 0.33; disableVoN = 1; vonCodecQuality = 0; persistent = 1; onUserConnected = ""; onUserDisconnected = ""; doubleIdDetected = ""; regularCheck = ""; onUnsignedData = "kick (_this select 0)"; onHackedData = "ban (_this select 0)"; onDifferentData = ""; BattlEye = 1; class Missions {};
Vous pouvez consulter Wiki de Bohemian Interactive pour de plus amples explications.
Ce fichier contient la configuration “in game”, c'est à dire la facon dont vont se comporter les IA, va-t-on avoir une vue en 3D, la difficulté, la précision des IA etc etc.
class Difficulties { class recruit { class Flags { Armor=1; FriendlyTag=1; EnemyTag=0; HUD=1; HUDPerm=1; HUDWp=1; HUDWpPerm=1; HUDGroupInfo=1; AutoSpot=1; Map=1; WeaponCursor=1; AutoGuideAT=1; ClockIndicator=1; 3rdPersonView=1; Tracers=1; UltraAI=0; AutoAim=0; UnlimitedSaves=1; DeathMessages=1; NetStats=1; VonID=1; }; skillFriendly=1; skillEnemy=0.55; precisionFriendly=1; precisionEnemy=0.3; }; class regular { class Flags { Armor=1; FriendlyTag=1; EnemyTag=0; HUD=1; HUDPerm=1; HUDWp=1; HUDWpPerm=1; HUDGroupInfo=1; AutoSpot=1; Map=1; WeaponCursor=1; AutoGuideAT=1; ClockIndicator=1; 3rdPersonView=1; Tracers=1; UltraAI=0; AutoAim=0; UnlimitedSaves=1; DeathMessages=1; NetStats=1; VonID=1; }; skillFriendly=1; skillEnemy=0.7; precisionFriendly=1; precisionEnemy=0.5; }; class veteran { class Flags { HUD=1; HUDGroupInfo=0; WeaponCursor=1; 3rdPersonView=1; UltraAI=0; DeathMessages=1; NetStats=1; VonID=0; }; skillFriendly=1; skillEnemy=0.9; precisionFriendly=1; precisionEnemy=0.75; }; class mercenary { class Flags { UltraAI=0; DeathMessages=0; NetStats=0; VonID=0; }; skillFriendly=1; skillEnemy=1; precisionFriendly=1; precisionEnemy=1; }; };
Vous pouvez consulter Wiki de Bohemian Interactive pour de plus amples explications.
On va écrire dans le fichier 'run_arma' le script Bash qui nous permettra de lancer facilement le serveur. Ce script à l'avantage aussi de relancer le serveur automatiquement en cas de plantage.
#!/bin/bash ARMA_DIR=/home/arma2 CONFIG=server.cfg NAME=server CFG=basic.cfg PROFILES=server PORT=2302 PIDFILE=${ARMA_DIR}/logs/${PORT}.pid RUNFILE=${ARMA_DIR}/logs/${PORT}.run LOGFILE=${ARMA_DIR}/logs/log.${PORT}.txt SERVER=${ARMA_DIR}/server MODS=""; #======================================================================= ulimit -c 1000000 case "$1" in start) if [ -f ${RUNFILE} ]; then $0 stop fi echo "Démarrage du serveur Arma..." echo "go" >${RUNFILE} nohup </dev/null >/dev/null $0 watchdog & ;; stop) echo "Arret du serveur Arma..." if [ -f ${RUNFILE} ]; then rm -f ${RUNFILE} fi if [ -f ${PIDFILE} ]; then kill -TERM $(< ${PIDFILE}) if [ -f ${PIDFILE} ]; then rm -f ${PIDFILE} fi fi ;; status) if [ -f ${RUNFILE} ]; then echo "Le serveur Arma fonctionne" else echo "Le serveur Arma ne tourne pas" fi if [ -f ${PIDFILE} ]; then PID=$(< ${PIDFILE}) echo "PID file exists (PID=${PID})..." if [ -f /proc/${PID}/cmdline ]; then echo "Le serveur semble tourner" fi fi ;; check) echo -n "Répertoire ArmA : ${ARMA_DIR} " if [ -d ${ARMA_DIR} ]; then echo "OK" else echo "MANQUANT!" fi echo -n "Le serveur : ${SERVER} " if [ -x ${SERVER} ]; then echo "OK" else echo "ERREUR!" fi echo "Numéro de port : ${PORT}" echo -n "Fichier de configuration : ${CONFIG} " if [ -f ${CONFIG} ]; then echo "OK" else echo "MANQUANT!" fi echo "PID file: ${PIDFILE}" echo "RUN file: ${RUNFILE}" ;; restart) $0 stop /bin/sleep 2 $0 start ;; watchdog) while [ -f ${RUNFILE} ]; do cd ${ARMA_DIR} echo >>${LOGFILE} "ELRON ($$): [$(date)] Démarrage du serveur (port ${PORT})..." ${SERVER} >>${LOGFILE} 2>&1 -server -config=${CONFIG} -port=${PORT} -pid=${PIDFILE} -name=${NAME} -cfg=${CFG} -profiles=${PROFILES} -mod=${MODS} if [ -f ${RUNFILE} ]; then echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Serveur mort, attente de redémarrage..." sleep 5s else echo >>${LOGFILE} "WATCHDOG ($$): [$(date)] Serveur arrête intentionnellement, Arrêt de la surveillance par ELRON" fi done ;; *) echo "$0 (start|stop|restart|status|check)" ;; esac
Pour lancer le serveur :
/home/arma/run_arma start
Pour arrêter le serveur :
/home/arma/run_arma stop
Pour avoir le status du serveur :
/home/arma/run_arma status
Une fois lancé, vous pourrez tracer en live ce qui se passe sur votre serveur en tapant :
tail -f /home/arma/logs/log.2302.txt
Quand tout à été testé et approuvé par vous même, vous pouvez linkez /home/arma/run_server dans /etc/init.d
ln -s /home/arma/run_server /etc/init.d/arma_server
puis pour le lancement automatique, entrez :
update-rc.d arma_server defaults
A ce stade normalement votre serveur est prêt configuré et paré pour recevoir des joueurs. Il ne reste plus qu'à régler le firewall. Ouvrez les ports en entrée * 2032 en UDP * 2033 en UDP * 2035 en UDP
iptables -f filter -A INPUT -p udp --dport 2032 -j ACCEPT iptables -f filter -A INPUT -p udp --dport 2033 -j ACCEPT iptables -f filter -A INPUT -p udp --dport 2035 -j ACCEPT
Vous pouvez consulter http://community.bistudio.com/wiki/ArmA:_Dedicated_Server#Firewall_issues pour de plus amples explications.