Ce cours est visible gratuitement en ligne.

Got it!

[Linux] Un serveur TrackMania Nations

Last updated on Thursday, October 31, 2013

Introduction du cours

Bonjour,
ayant eu quelques difficultés pour installer mon serveur TrackMania Nations la toute première fois, je vais vous apprendre à l'installer et à le configurer.

Installer le serveur

Créer un nouvel utilisateur

Pour installer ce fameux serveur, nous allons tout d'abord créer un nouvel utilisateur. Pour ce faire, nous allons utiliser la commande useradd.

Ouvrez votre console. Que voulons-nous :

  • Créer un utilisateur

  • Lui attribuer un espace personnel

  • Lui attribuer un mot de passe

Explorons cette commande. Pour ce faire, tapez tout simplement useradd. (vous pouvez également utiliser man useradd si vous voulez de plus amples informations)

Voici ce que vous obtenez habituellement :

Usage: useradd [options] LOGIN

Options:
  -b, --base-dir BASE_DIR       base directory for the new user account
                                home directory
  -c, --comment COMMENT         set the GECOS field for the new user account
  -d, --home-dir HOME_DIR       home directory for the new user account
  -D, --defaults                print or save modified default useradd
                                configuration
  -e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -f, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -g, --gid GROUP               force use GROUP for the new user account
  -G, --groups GROUPS           list of supplementary groups for the new
                                user account
  -h, --help                    display this help message and exit
  -k, --skel SKEL_DIR           specify an alternative skel directory
  -K, --key KEY=VALUE           overrides /etc/login.defs defaults
  -m, --create-home             create home directory for the new user
                                account
  -o, --non-unique              allow create user with duplicate
                                (non-unique) UID
  -p, --password PASSWORD       use encrypted password for the new user
                                account
  -r, --system                  create a system account
  -s, --shell SHELL             the login shell for the new user account
  -u, --uid UID                 force use the UID for the new user account

Rappelons-nous, nous voulons un utilisateur, nous voulons lui attribuer un mot de passe et un répertoire personnel.
Intéressons-nous alors à ces trois options suivantes :

  • --create-home

  • --password

Que font-elles ? Si nous traduisons leur description, nous obtenons :
--create-home créée le répertoire d'accueil pour le compte du nouvel utilisateur.
--password utilise un mot de passe encrypté pour le compte du nouvel utilisateur.

Et, qu'avons-nous ? Exactement ce que nous recherchions, un répertoire personnel pour celui-ci et un mot de passe.

Nous obtenons alors la commande finale :

useradd -m -p mot_de_passe tmn

Voilà, notre utilisateur est créé !

Télécharger le serveur

Changer de répertoire

Pour ce faire, nous allons utiliser la commande wget.
Explorons à nouveau cette commande, cette fois-ci, nous n'allons pas taper wget seul, mais wget --help. (Essayez wget seul pour voir)

Normalement, vous obtenez plusieurs longues lignes que je ne copierai pas ici vu leur longueur. Ici, une seule option est susceptible de nous intéresser qui est : -output-document (-O). Je cite :

-O,  --output-document=FICHIER écrire les documents dans le FICHIER.

Cette commande va définir l'emplacement de téléchargement du fichier voulu.
Mais allant utiliser cet emplacement par après, nous allons tout de suite nous y rediriger.
Pour cela, utilisons la commande cd, qui n'a rien de particulièrement intéressant à nous montrer c'est pourquoi nous n'allons pas l'explorer. Une seule chose à savoir, cd signifie Change Directory, soit changer de répertoire.

Exécutons-nous alors :

cd /home/tmn/www

Il y a maintenant deux possibilités, soit vous avez correctement changé de répertoire, dans ce cas là, passez directement à "Télécharger le serveur" ; sinon, si une erreur apparaît (habituellement -bash: cd: /home/tmn/www: Aucun fichier ou répertoire de ce type), tapez :

mkdir /home/tmn/www

Je n'exposerai pas le fonctionnement de cette fonction dans la mesure où vous ne devriez pas en avoir besoin dans l'immédiat.

Télécharger le serveur

Pour télécharger le serveur, nous allons utiliser la commande wget, Web Get, littéralement, obtenir du Web.
Téléchargeons alors notre fichier :

wget http://slig.free.fr/TM/dedicated/TmDedicatedServer_2006-05-30.zip

Le téléchargement s'effectue, et vous pourrez à nouveau lancer des commandes lorsque le préfixe de commande réapparaîtra.

Extraire le tout

Comme vous avez pu le constater, le fichier téléchargé est un fichier compressé en zip. Pour l'extraire, nous avons besoin de la commande unzip.

Encore une fois, nous n'allons pas nous attarder sur cette commande, n'ayant rien de particulier à nous annoncer. (Si vous voulez tout de même en apprendre plus, tapez unzip).

Extrayons enfin notre fichier :

unzip TmDedicatedServer_2006-05-30.zip

Pour ne pas faire d'erreur, nous allons voir quel dossier a été créé à la suite de cette extraction. Pour cela, utilisons la commande ls. (que je n'ai, une fois de plus, pas besoin de détailler ici)

Tapez ls, vous obtenez normalement :

TmDedicatedServer

Dirigeons-nous vers ce répertoire. Je vous le rappelle, pour changer de répertoire, il faut utiliser la commande cd vue plus haut. Donc :

cd TmDedicatedServer/

Explorons son contenu, avec une fois de plus la commande ls. Nous obtenons alors :

ClientCommandLine.txt     GameData            Logs                   RunTrackmaniaNations.bat  TrackManiaServer
dedicated.cfg             ListCallbacks.html  Readme_Dedicated.html  RunTrackmaniaNations.sh   TrackManiaServer.exe
Default.SystemConfig.Gbx  ListMethods.html    RemoteControlExamples

Configurer le serveur

Installer un serveur web

Pourquoi un serveur web me demanderez-vous ?
Certains fichiers de configuration sont codés en PHP. C'est-à-dire, que notre serveur devra pouvoir interpréter le PHP.
Un tuto très pratique a déjà été créé, c'est pourquoi je vous invite à vous y rendre : PHP sous Linux : XAMPP.

Utiliser la commande vi

Pour utiliser la commande vi, vous devez savoir plusieurs petites choses.
Ouvrir un fichier pour l'éditer :

vi nom_du_fichier

Pour écrire dans ce fichier, vous devez appuyer sur la touche Inser (ou une équivalente) de votre clavier.

Pour arrêter d'écrire, vous devez appuyer sur la touche Echap (ou une équivalente) de votre clavier.

Pour quitter l'éditeur sans enregistrer, vous devez taper (après avoir appuyé sur Echap) :q et appuyer sur la touche Entrée (ou une équivalente) de votre clavier.

Pour quitter l'éditeur en enregistrant les modifications effectuées sur le fichier, vous devez taper (après avoir appuyé sur Echap) :wq et appuyer sur la touche Entrée (ou une équivalente) de votre clavier.

Configurer le serveur via le fichier PHP

Vous rappelez-vous du dernier ls que nous avons effectué ? Nous avions un dossier RemoteControlExamples (Ce qui signifie, exemples de contrôle à distance).
Ouvrons le ! (cd RemoteControlExamples/ et ls) Habituellement, vous devriez avoir trois dossiers : c, GameController.Net et PhpRemote.
Je vous épargne d'explorer les deux premiers, ils nous seront inutiles. Mais intéressons-nous au troisième ; ne vous ai-je pas fait installer un serveur Web ? et là nous avons un dossier PhpRemote... y aurait-t-il des fichiers PHP à l'intérieur ? Pourquoi ne pas l'explorer ?

Eh bien, une fois de plus, explorons le dossier.

cd PhpRemote/
ls

Vous avez, si tout s'est bien passé ces trois fichiers : basic.php, GbxRemote.inc.php et ListMethods.php . Ici, je vous l'accorde, c'est bien difficile de savoir lequel est le bon, mais n'avez-vous pas une attirance particulière vers basic.php ?

Dépêchons-nous de l'ouvrir avec notre serveur Web ! Rendez-vous à l'adresse : http://adresse_de_la_machine/TmDedicat [...] ote/basic.php (si vous êtes chez vous, remplacez adresse_de_la_machine par localhost)

OUARRRGH o_O Mais c'est quoi ce truc ? o_O

Cette page vous offre déjà un grand contrôle sur votre serveur, lorsqu'il est lancé, mais aussi éteint.

En premier lieu, je vous conseille très vivement de changer le mot de passe d'Admin et de SuperAdmin, ce sont eux qui pourront tout faire sur votre serveur.
Pour changer leur mot de passe, vous devez remplir le champ Set new password :, et choisir dans le menu déroulant à quel utilisateur vous souhaitez changer le mot de passe.
Cliquez enfin sur ChangeAuthPassword.

Mais, je ne me suis pas authentifié, tout le monde peut le faire alors, non ?

Oui et non, lorsque vous arrivez sur cette page, le script essaie de vous connecter avec SuperAdmin en nom d'utilisateur et SuperAdmin en mot de passe, ce qui est juste jusqu'au moment où vous avez changé le mot de passe, et il faut que vous soyez connectés pour effectuer des modifications.

Maintenant que vous avez changé les mots de passe, identifiez-vous. Pour cela, choisissez l'utilisateur avec lequel vous souhaitez vous connecter dans Permission level :, entrez votre mot de passe dans Password : et cliquez sur Authenticate.

Voilà, si vous êtes connectés en tant que SuperAdmin, vous avez tous les droits, et nous allons maintenant utiliser les plus simples.
Commençons par rajouter en premier lieu nos circuits. Il vous faudra alors, dans un premier temps, mettre vos circuits dans un dossier Challenges/.
Prenons pas exemple que j'y ai mis deux circuits :

  • circuit1.Gbx

  • circuit2.Gbx

Je vais entrer dans le champ : Challenges/circuit1.Gbx, je cliquerai ensuite sur AddChallenge, et je réitérerai l'opération pour mon deuxième circuit, et ainsi de suite jusqu'à ce que j'aie donné toute ma liste de circuits (amusez-vous bien :-° ).

Si vous voulez en supprimer, cherchez le circuit que vous voulez supprimer et cliquez sur RemoveChallenge. Si vous voulez changer l'ordre des circuits, cliquez sur ChooseNextChallenge.

Voilà nous avons nos circuits, continuons.

Changeons maintenant les informations de jeu, dans la partie Game infos:.
Je ne pourrai pas très vous expliquer cette partie dans la mesure où je n'ai pas eu besoin de la modifier.
Voici les champs que vous devrez remplir/laisser/changer :
Mode: Définit le type de jeu (TimeAttack par défaut)
ChatTime: Définit le temps de parole après qu'un circuit soit terminé en millisecondes (10 000 par défaut soit 10 secondes)
TimeAttackLimit: Définit le temps de jeu par circuit en millisecondes (300 000 par défaut soit 300 secondes soit 5 minutes)

Cliquez ensuite sur SetGameInfos.

Changeons à présent les options de notre serveur dans la partie Server options:.

Encore une fois, je ne pourrai vous renseigner sur l'utilité de tous les champs, mais voici ceux pour lesquels je saurai vous renseigner :
Name: Le nom de votre serveur.
Comment: La description de votre serveur.
Password: Le mot de passe que vous voulez attribuer à votre serveur si vous souhaitez lui en attribuer un.
PasswordForSpectator: Le mot de passe que vous voulez demander aux spectateurs si vous souhaitez leur en demander un.
MaxPlayer: Le nombre maximum de joueurs autorisés à entrer en jeu.
MaxSpectator: Le nombre maximum de spectateur autorisés à venir voir vos joueurs.
VehicleNetQuality: La qualité des véhicules (je vous conseille de laisser à Fast pour une meilleur performance de jeu).
CallVoteTimeOut: Le temps de vote en millisecondes (60 000 par défaut soit 60 secondes soit 1 minute)
CallVoteRatio: La ration de vote pour que le vote soit accepté (0.5 par défaut, soit 50% des votes, soit la moitié des votes).
AllowChallengeDownload: Autorise ou non les joueurs à télécharger les circuits présents sur votre serveur.

Cliquez ensuite sur SetServerOptions.

C'est bon ? Votre serveur est prêt ? Lançons-le !
Pour cela, allez dans la partie Server Status:. Le statut est normalement en Waiting.

Il y a, pour lancer le serveur, deux champs à remplir :
Master Server Login: Le nom d'utilisateur avec lequel le serveur va se connecter (doit exister sur TMN).
Master Server Password: Le mot de passe de l'utilisateur avec lequel le serveur va se connecter.

Cliquez enfin sur StartServerInternet. Le statut qui était auparavant Waiting devrait à présent être Launching.
Cliquez sur Refresh, et le statut devrait à présent être Running - Play, si c'est le cas, votre serveur est en route, sinon, vérifiez votre configuration !

Dernière ligne droite

Vérifions enfin que votre serveur soit accessible de l'extérieur !
Pour cela, rendez-vous ici.
Entrez l'adresse IP du serveur, le port du serveur (par défaut 2350) et dans le menu déroulant, modifiez TMS/TMO par TMN.

Cliquez sur Start test !

Si tout se passe correctement, vous devriez avoir : TMN server xx.xx.xx.xx is responding on TCP port 2350 !
Sinon, nous allons modifier un fichier qui se trouve à la racine de votre serveur : dedicated.cfg.
Pour cela, exécutez cette commande :

vi /home/tmn/www/TmDedicatedServer/dedicated.cfg

Descendez jusqu'à ce que vous trouviez <force_ip_address></force_ip_address>, entrez l'adresse IP de votre serveur entre balises (voir l'utilisation de la commande vi).
Sortez de l'éditeur (avec :wq, voir à nouveau l'utilisation de la commande vi), et relancez votre serveur !
Pour cela, dans votre fichier PHP, partie Server Status:, cliquez sur ServerStop, StartServerInternet et Refresh.

Refaites le test, tout devrait à présent fonctionner.

Et voilà, bon jeu !
Si vous avez des questions, des remarques ou des suggestions, n'hésitez pas !

How courses work

  • 1

    You have now access to the course contents and exercises.

  • 2

    You will advance in the course week by week. Each week, you will work on one part of the course.

  • !

    Exercises must be completed within one week. The completion deadline will be announced at the start of each new part in the course. You must complete the exercises to get your certificate of achievement.

  • 3

    At the end of the course, you will get an email with your results. You will also get a certificate of achievement if you are a

Example of certificate of achievement
Example of certificate of achievement