Jump to content

Monter/Créer et configurer un serveur Arma3 sous linux


Soldat Ryan
 Share

Recommended Posts

Monter et configurer un serveur Arma3 sous Linux

Nous allons voir ici comment monter un serveur Arma3 sous linux.
Ce tuto a été réalisé sur un serveur Linux (Debian/Wheezy 64bits)

Pour obtenir une aide sur les serveurs "windows" vous pouvez utiliser le lien du forum indiqué en bas du tuto

Prérequis :

- Vous connaissez les bases de l'administration d'un serveur dédié, savoir s'y connecter à l'aide de Putty, etc ...

Pour les besoins du tutoriel sachez qu'on se connectera avec un compte appelé "user" avec pour répertoire de base : "home/user/"
A vous d'appeler votre "user" comme vous l'entendez et de placer son répertoire d'utilisation où vous voulez.

Tutoriel

- La première des choses à faire est d'avoir un serveur toujours à jour?
Avec votre "ROOT" utilisez les commandes suivantes :

aptitude update
aptitude safe-upgrade

- Ensuite installez les lib32 nécessaire au bon fonctionnement de votre application (uniquement à faire si vous tournez avec un OS en 64bit)

aptitude install ia32-libs

Voilà nous avons un serveur à jour.
 

Installation de Steam

A partir de maintenant on utilise "user" à partir de son répertoire "home/user/". On ne travaille plus sous "ROOT".

Arma3 s'installe à partir de Steam il faut donc l'installer.

On créer le repertoire "steamcmd" pour y installer steam et on lance le programme steamcmd :

mkdir steamcmd
cd steamcmd
wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
./steamcmd.sh

Ensuite on charge les fichiers serveurs depuis steam, pour cela il faut se logger avec un compte steam.
Notez qu'un code vous sera demandé lors de votre login si vous avez activer SteamGuard.
On va ensuite installer les fichiers du serveur sur le repertoire /home/user/serveur/arma

login <user steam> <mot de passe steam>
force_install_dir /home/user/serveur/arma
app_update 233780 validate
quit

Vous devez maintenant créer les répertoires dédiés aux profils.

mkdir -p ~/".local/share/Arma 3" && mkdir -p ~/".local/share/Arma 3 - Other Profiles"

Attention : le paramètre "-profiles=" est cassé sous Linux - Vous devez donc impérativement placer vos profils dans ces répertoires. Sachez également que ces répertoires ne se créent pas automatiquement.

Lors du premier lancement de votre serveur les fichiers de profil se créeront automatiquement à cette place. Vous pourrez alors les éditer et adapter les réglages concernant les difficultés.
 

Configuration de votre serveur Arma3

On se place à la racine du serveur.

cd /home/user/serveur/arma

On créé le fichier "server.cfg"

nano server.cfg

Voici un exemple de server.cfg tiré du WIKI de BI

Révélation

//
// server.cfg
//
// comments are written with "//" in front of them.
 
 
// GLOBAL SETTINGS
hostname = "Fun and Test Server";        // The name of the server that shall be displayed in the public server list
password = "";                    // Password for joining, eg connecting to the server
passwordAdmin = "xyz";                // Password to become server admin. When you're in Arma MP and connected to the server, type '#login xyz'
serverCommandPassword = "xyzxyz";               // Password required by alternate syntax of [[serverCommand]] server-side scripting.
 
logFile = "server_console.log";            // Tells ArmA-server where the logfile should go and what it should be called
 
 
// WELCOME MESSAGE ("message of the day")
// It can be several lines, separated by comma
// Empty messages "" will not be displayed at all but are only for increasing the interval
motd[] = {
    "", "",  
    "Two empty lines above for increasing interval",
    "Welcome to our server",
    "", "",  
    "We are looking for fun - Join us Now !",
    "http://www.example.com",
    "One more empty line below for increasing interval",
    ""
};
motdInterval = 5;                // Time interval (in seconds) between each message
 
 
// JOINING RULES
maxPlayers = 64;                // Maximum amount of players. Civilians and watchers, beholder, bystanders and so on also count as player.
kickDuplicate = 1;                // Each ArmA version has its own ID. If kickDuplicate is set to 1, a player will be kicked when he joins a server where another player with the same ID is playing.
verifySignatures = 2;                // Verifies .pbos against .bisign files. Valid values 0 (disabled), 1 (prefer v2 sigs but accept v1 too) and 2 (only v2 sigs are allowed).
allowedFilePatching = 0;                        // Allow or prevent client using -filePatching to join the server. 0, is disallow, 1 is allow HC, 2 is allow all clients (since Arma 3 1.49+)
//requiredBuild = 12345                // Require clients joining to have at least build 12345 of game, preventing obsolete clients to connect
 
 
// VOTING
voteMissionPlayers = 1;                // Tells the server how many people must connect so that it displays the mission selection screen.
voteThreshold = 0.33;                // 33% or more players need to vote for something, for example an admin or a new map, to become effective
 
 
// INGAME SETTINGS
disableVoN = 1;                    // If set to 1, Voice over Net will not be available
vonCodecQuality = 0;                // since 1.62.95417 supports range 1-20 //since 1.63.x will supports range 1-30 //8kHz is 0-10, 16kHz is 11-20, 32kHz is 21-30
persistent = 1;                    // If 1, missions still run on even after the last player disconnected.
timeStampFormat = "short";            // Set the timestamp format used on each report line in server-side RPT file. Possible values are "none" (default),"short","full".
BattlEye = 1;                    // Server to use BattlEye system
allowedLoadFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; //only allow files with those extensions to be loaded via loadFile command (since Arma 3 build 1.19.124216)
allowedPreprocessFileExtensions[] = {"hpp","sqs","sqf","fsm","cpp","paa","txt","xml","inc","ext","sqm","ods","fxy","lip","csv","kb","bik","bikb","html","htm","biedi"}; //only allow files with those extensions to be loaded via preprocessFile/preprocessFileLineNumber commands (since Arma 3 build 1.19.124323)
allowedHTMLLoadExtensions[] = {"htm","html","xml","txt"}; //only allow files with those extensions to be loaded via HTMLLoad command (since Arma 3 build 1.27.126715)
//allowedHTMLLoadURIs = {}; // Leave commented to let missions/campaigns/addons decide what URIs are supported. Uncomment to define server-level restrictions for URIs
 
 
// SCRIPTING ISSUES
onUserConnected = "";                //
onUserDisconnected = "";            //
doubleIdDetected = "";                //
//regularCheck = "{}";                //  Server checks files from time to time by hashing them and comparing the hash to the hash values of the clients. //deprecated
 
// SIGNATURE VERIFICATION
onUnsignedData = "kick (_this select 0)";    // unsigned data detected
onHackedData = "ban (_this select 0)";        // tampering of the signature detected
onDifferentData = "";                // data with a valid signature, but different version than the one present on server detected
 
 
// MISSIONS CYCLE (see below)

/*class Missions
{
class Mission1
{
template="co_xx_mymission.stratis";
difficulty="Regular";
};
};
*/

MissionWhitelist[] = {}; //an empty whitelist means there is no restriction on what missions' available

Ce fichier se lance via le paramètre "-config=" Vous devez l'adapter en fonction de vos besoins.

On crée ensuite le fichier "basic.cfg"

nano basic.cfg

Voici un exemple de basic.cfg tiré du WIKI de BI

Révélation

// These options are created by default
language="English";
adapter=-1;
3D_Performance=1.000000;
Resolution_W=800;
Resolution_H=600;
Resolution_Bpp=32;

// These options are important for performance tuning

MinBandwidth = 131072;			// Bandwidth the server is guaranteed to have (in bps). This value helps server to estimate bandwidth available. Increasing it to too optimistic values can increase lag and CPU load, as too many messages will be sent but discarded. Default: 131072
MaxBandwidth = 10000000000;		// Bandwidth the server is guaranteed to never have. This value helps the server to estimate bandwidth available.

MaxMsgSend = 128;			// Maximum number of messages that can be sent in one simulation cycle. Increasing this value can decrease lag on high upload bandwidth servers. Default: 128
MaxSizeGuaranteed = 512;		// Maximum size of guaranteed packet in bytes (without headers). Small messages are packed to larger frames. Guaranteed messages are used for non-repetitive events like shooting. Default: 512
MaxSizeNonguaranteed = 256;		// Maximum size of non-guaranteed packet in bytes (without headers). Non-guaranteed messages are used for repetitive updates like soldier or vehicle position. Increasing this value may improve bandwidth requirement, but it may increase lag. Default: 256

MinErrorToSend = 0.001;			// Minimal error to send updates across network. Using a smaller value can make units observed by binoculars or sniper rifle to move smoother. Default: 0.001
MinErrorToSendNear = 0.01;		// Minimal error to send updates across network for near units. Using larger value can reduce traffic sent for near units. Used to control client to server traffic as well. Default: 0.01

MaxCustomFileSize = 0;			// (bytes) Users with custom face or custom sound larger than this size are kicked when trying to connect.

Ce fichier se lance via le paramètre "-cfg="
Ce fichier de configuration, vous permet de configurer votre connectivité serveur, pour optimiser les performances. Les règlages dependent des capacités de votre machine.

Vous pouvez à présent lancer une première instance de votre serveur Arma3. Cela permettra de créer les fichiers de profil manquant qui doivent se créer dans le repertoire ".local/share/Arma 3 - Other Profiles"

Le profil se crée via le paramètre "-name=". On va prendre "server" comme nom de profil.

Votre ligne de commande va donc ressembler à cela :

./arma3server -port=2302 -config=server.cfg -cfg=basic.cfg -name=server 

./arma3server : Executable du serveur
-port=2302 : Port d'ecoute de votre serveur
-config=server.cfg : Votre fichier de configuration serveur
-cfg=basic.cfg : Votre fichier d'optimisation du serveur
-name=server : Nom du profil souhaité

Vous pouvez couper votre serveur afin de terminer la configuration serveur

ctrl+C

On se deplace vers le profil nouvellement créé

~/".local/share/Arma 3 - Other Profiles/server"

On peut alors modifier le fichier "server.Arma3Profile" afin de régler la difficulté du serveur.

Révélation

class CfgDifficultyPresets
{
	defaultPreset = "Regular";
	myArmorCoef = 1.5;
	groupArmorCoef = 1.5;
	recoilCoef = 1;
	visionAidCoef = 0.8;
	divingLimitMultiplier = 1.0;
	animSpeedCoef = 0;
	cancelThreshold = 0;
	showCadetHints = 1;
	showCadetWP = 1;
	class Recruit
	{
		displayName = "$STR_Difficulty0";
		optionDescription = "$STR_Difficulty0_desc";
		optionPicture = "\A3\Ui_f\data\Logos\arma3_white_ca.paa";
		class Options
		{
			reducedDamage = 1;
			groupIndicators = 2;
			friendlyTags = 2;
			enemyTags = 0;
			detectedMines = 2;
			commands = 2;
			waypoints = 2;
			weaponInfo = 2;
			stanceIndicator = 2;
			staminaBar = 1;
			weaponCrosshair = 1;
			visionAid = 1;
			thirdPersonView = 1;
			cameraShake = 1;
			scoreTable = 1;
			deathMessages = 1;
			vonID = 1;
			mapContent = 1;
			autoReport = 1;
			multipleSaves = 1;
		};
	};
	class Regular
	{
		displayName = "$STR_Difficulty1";
		optionDescription = "$STR_Difficulty1_desc";
		optionPicture = "\A3\Ui_f\data\Logos\arma3_white_ca.paa";
		class Options
		{
			reducedDamage = 0;
			groupIndicators = 2;
			friendlyTags = 2;
			enemyTags = 0;
			detectedMines = 2;
			commands = 2;
			waypoints = 2;
			weaponInfo = 2;
			stanceIndicator = 2;
			staminaBar = 1;
			weaponCrosshair = 1;
			visionAid = 0;
			thirdPersonView = 1;
			cameraShake = 1;
			scoreTable = 1;
			deathMessages = 1;
			vonID = 1;
			mapContent = 1;
			autoReport = 1;
			multipleSaves = 1;
		};
	};
	class Veteran
	{
		displayName = "$STR_Difficulty2";
		optionDescription = "$STR_Difficulty2_desc";
		optionPicture = "\A3\Ui_f\data\Logos\arma3_white_ca.paa";
		class Options
		{
			reducedDamage = 0;
			groupIndicators = 0;
			friendlyTags = 0;
			enemyTags = 0;
			detectedMines = 0;
			commands = 1;
			waypoints = 1;
			weaponInfo = 1;
			stanceIndicator = 1;
			staminaBar = 0;
			weaponCrosshair = 0;
			visionAid = 0;
			thirdPersonView = 0;
			cameraShake = 1;
			scoreTable = 1;
			deathMessages = 1;
			vonID = 1;
			mapContent = 0;
			autoReport = 0;
			multipleSaves = 0;
		};
	};
	class Custom
	{
		displayName = "$STR_Difficulty_Custom";
		optionDescription = "$STR_Difficulty_Custom_desc";
		optionPicture = "\A3\Ui_f\data\Logos\arma3_white_ca.paa";
		class Options
		{
			reducedDamage = 0;
			groupIndicators = 0;
			friendlyTags = 0;
			enemyTags = 0;
			detectedMines = 0;
			commands = 0;
			waypoints = 0;
			weaponInfo = 1;
			stanceIndicator = 0;
			staminaBar = 0;
			weaponCrosshair = 0;
			visionAid = 0;
			thirdPersonView = 0;
			cameraShake = 0;
			scoreTable = 0;
			deathMessages = 0;
			vonID = 0;
			mapContent = 0;
			autoReport = 0;
			multipleSaves = 0;
		};
	};
};

Attention : Les paramètres de ce fichier ont changé depuis la version V1.58. Le fichier présenté correspond à la nouvelle version


Configuration de Battleye

A présent vous devez configurer Battleye qui est l'anti-cheat d'Arma3.
Note de l'auteur : Il faut avoir fait des études supérieures pour pouvoir maitriser complétement Battleye. Nous verrons donc ici que les basiques.

Deplacez vous dans le répertoire de battleye

cd /home/user/serveur/arma/battleye

Vous devez à présent créer un fichier "beserver.cfg"

nano beserver

Voici un exemple très simple de son contenu.

Rconpassword  motdepasse
RConPort xxxx
RConIP xxx.xxx.xxx.xxx

MaxPing 300

Rconpassword = Le mot de passe Rcon défini dans le server.cfg
Rconport = Port d'écoute de Battleye - c'est par ce port que passeront les commandes.
RconIP = Défini l'IP du serveur
Maxping = le ping maximum accepté par le serveur avant kick.

Voici le détail des commandes disponibles de Battleye :

loadScripts Charge le fichier "scripts.txt" sans qu'il y ai besoin de relancer le serveur.
missions Renvoie à la liste des missions valides sur le serveur.
players Affiche la liste des joueurs incluant leurs GUIDs et leurs pings.
kick [player#] Kicks un joueur. Son # peut être tourvé dans la liste des joueurs via la commande "players" .
RConPassword [password] Change le mot de passe RCon.
MaxPing [ping] Changes la valeur MaxPing. si un joueur atteint et ou depasse cette valeur il est kické automatiquement.
logout Delogge du mod admin, mais ne fait pas quitter le serveur.
Exit Ferme la connection.
Say [player#] Dire quelque chose au joueur #. -1 = tous les joueurs sur le serveur (ex: "Say -1 Hello World!")

Notez que vous pouvez installer battleye dans un autre répertoire que celui d'origine, dans ce cas vous devrez utiliser le parametre suivant dans votre ligne de commande :

-bepath=/chemin/vers/dossier/battleye


Installation des missions

Les missions se placent dans le repertoire suivant

/home/serveur/arma/mpmissions


Configuration de mod

Pour installer un mod chargez le à la racine de votre jeu la forme suivante

@nomdumode

Attention : Sous linux le nom des mods est sensible à la casse. Tous les noms de fichier et de répertoire doivent être en minuscule.

Pour lancer un mod utilisez le paramètre suivant :

-mod=@nomdumode1\;@nomdumode2\;@nomdumode3

Notez le \ entre le nomdumode et le ;
 

Configuration de votre ligne de commande

Voilà on commence à y voir plus clair.
Il ne reste plus qu'à configurer la ligne de commande.
Au cours de ce tuto on a déjà plusieurs paramètres : "-port" "-config" "-cfg" "-name" "-mod" "-bepath"
Vous pouvez néanmoins peaufiner votre ligne de commande avec les paramètres suivants (il y en a d'autres je vous laisse le soin de vous documenter à ce sujet) :

-netlog Active le log du trafic reseau du serveur.
-nosplash Desactive les écrans de demarrage d'arma3. Pas besoin de ces ecrans sous notre serveur Linux
-nosound Desactive les sons
-world Monte la carte sur lequel doit evoluer le serveur (il est coutume de mettre -world=empty pour laisser le choix aux joueurs et ne pas limiter le serveur)
-cpuCount Permet de defnir le nombre de coeur
-autoinit Permet de lancer directement la mission au demarrage du serveur sans avoir à attnedre l'arriver d'un joueur.

Rappel : le paramètre "-profiles" est inutile car sa fonction est cassé sur Linux
 

Au sujet des logs

1 - Le log du serveur qui vous aurez defini dans votre "server.cfg" se crée dans le repertoire ".local/share/Arma 3"
Il est à noter que contrairement aux serveurs sous windows seul ce qui passe dans le canal "Global" du jeu est loggé. Tout ce qui passe par les autres canaux est invisible.

2 - Pour obtenir le log technique du serveur en rapport avec la mission il faut ajouter ce qui suit à votre ligne de commande (en fin de ligne).

>>rpt.2302.txt 2>&1

Ce fichier se crée à la racine de votre serveur.
Vous pouvez le nommer comme vous le voulez.
 

Configuration des ports

2302 UDP (port du jeu + VON)
2303 UDP (STEAM query port)
2304 UDP (STEAM master port)
2305 UDP (port reservé au VON)
Il faut donc ouvrir les ports 2303 à 2305 + le port dédié à Battleye (voir plus haut) qui doit être différent de ceux-ci

 

Voilà vous êtes enfin prêt à lancer votre serveur Arma3 sous Linux.
Bon jeu.

Les commentaires au sujet de ce tutoriel sont à faire sur CE SUJET


Voir la totalité de tutoriel

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.