🔧 Chapitre 2 · Ton serveur Garry's Mod sur TeamKit

Comment un serveur Garry's Mod fonctionne

Mis à jour le 04/10/2026 ·

Ton serveur démarre et tu arrives à t'y connecter. Reste une question, celle qui fera toute la différence le jour d'une panne : que se passe-t-il entre le clic sur Start et le moment où tu apparais sur la carte ?

Ce chapitre ne te fait presque rien régler. Il te donne le modèle mental dont tous les autres ont besoin : qui télécharge quoi, qui affiche quoi, et ce qui n'est lu qu'une fois.


1. srcds : le programme qui fait tourner ton serveur #

Chez toi, Garry's Mod fait deux métiers en même temps : il calcule le monde et il le dessine sur ton écran. Ton serveur, lui, n'en fait qu'un.

Ce qui tourne sur ton instance n'est pas le jeu que tu lances depuis Steam. C'est srcds, pour Source Dedicated Server : le programme serveur du moteur Source, le moteur de Garry's Mod. Il n'a ni fenêtre, ni image, ni son. Son travail :

  • tenir la liste des joueurs connectés ;
  • calculer où se trouvent les joueurs, les props, les véhicules, les NPC ;
  • appliquer les règles du gamemode ;
  • exécuter le code Lua prévu pour le serveur ;
  • envoyer le résultat à chaque joueur, en continu.

Tu ne lances jamais srcds toi-même. AMP le démarre pour toi, avec une ligne de commande fabriquée à partir de tes réglages — le chapitre 3 te montre lesquels. Tout ce que srcds raconte pendant qu'il tourne s'affiche dans la page Console. Si tu n'as jamais pris le temps de la lire vraiment, le chapitre La console et les journaux du tuto général AMP t'apprend à le faire.

✅ À retenir Ton serveur, c'est srcds. Il calcule, il ne dessine rien. AMP le lance avec tes réglages, et sa parole s'affiche dans la Console.


2. Trois briques : une carte, un gamemode, des addons #

Un serveur Garry's Mod en marche est toujours l'assemblage de trois choses.

Brique Son rôle Où elle vit sur ton instance
La carte le décor : terrain, bâtiments, lumière. Un fichier .bsp. garrysmod/maps/ si tu l'as déposée toi-même, sinon dans un addon du Workshop
Le gamemode les règles : ce qu'on a le droit de faire, les menus, le but du jeu garrysmod/gamemodes/<ton-gamemode>/ si tu l'as déposé toi-même, sinon dans un addon du Workshop
Les addons tout le reste : outils, armes, véhicules, mod d'administration, interface garrysmod/addons/ pour ceux déposés à la main, garrysmod/cache/srcds/ pour ceux du Workshop

La carte et le gamemode sont désignés par tes réglages : Initial Map et Initial Gamemode, ou leurs variantes « Custom ». Les addons, eux, ne se cochent pas un par un dans AMP : ceux que tu as déposés et ceux qui sont descendus du Workshop font partie du serveur.

Trois conséquences reviendront dans tout le tuto :

  1. Une erreur peut en cacher dix. Une erreur dans un seul fichier Lua peut empêcher le chargement de tout ce qui devait venir après lui. Le serveur démarre quand même, mais une partie de ton contenu n'existe pas. Le chapitre 8 décortique ce domino.
  2. Deux exemplaires de la même chose, c'est une panne. Deux bases d'armes, deux protections de props, deux inventaires : ils se marchent dessus et produisent des erreurs Lua. Règle d'or : un seul exemplaire de chaque chose.
  3. Un gamemode a ses exigences. Certains attendent une carte précise ou des addons complémentaires. C'est écrit sur leur page, et le chapitre 5 t'apprend à le repérer.

✅ À retenir Carte + gamemode + addons. Les deux premiers se désignent dans AMP, les addons présents font partie du serveur. Un seul exemplaire de chaque chose.


3. Côté serveur, côté joueur : la notion qui explique tout #

Si tu ne devais retenir qu'une section de ce tuto, ce serait celle-ci.

Quand quelqu'un joue chez toi, deux ordinateurs travaillent ensemble : la machine TeamKit, où tourne srcds, et le PC du joueur, où tourne son Garry's Mod. Ils ne se partagent pas le travail au hasard.

Qui Ce qu'il fait
Le serveur (srcds, chez TeamKit) il décide : qui est où, qui a le droit de quoi, qui est admin, ce que fait chaque entité, ce que dit le Lua côté serveur
Le joueur (son jeu, chez lui) il affiche : textures, modèles, sons, interface, menus — et il exécute le Lua qui lui est destiné

Le serveur annonce : « il y a une voiture ici, avec tel modèle ». C'est le jeu du joueur qui doit posséder ce modèle pour la dessiner. Le serveur n'envoie pas d'image ; il n'en fabrique aucune.

Première conséquence : le contenu doit exister des deux côtés #

Un addon présent sur le serveur mais absent chez le joueur, et celui-ci voit des textures en damier violet et noir, ou un gros « ERROR » rouge à la place d'un modèle. Le serveur peut avoir absolument tout ce qu'il faut : les textures se calculent chez le joueur.

Même logique pour le contenu d'autres jeux. Un serveur qui monte Counter-Strike: Source n'apprend rien au joueur qui ne l'a pas : lui verra toujours le damier. Le chapitre 6 est entièrement consacré à ce problème et à ce que tu peux demander à tes joueurs.

Deuxième conséquence : deux téléchargements, pas un #

  • Le serveur télécharge les addons du Workshop pour lui-même. C'est le rôle du réglage Workshop Collection ID.
  • Les joueurs téléchargent les mêmes addons au moment de se connecter. C'est le rôle du réglage Resource Lua Code.

L'un ne fait jamais le travail de l'autre, et les deux listes doivent être identiques. Le chapitre 4 tourne entièrement autour de cette paire.

Troisième conséquence : une erreur peut venir de chez le joueur #

Une erreur Lua qui cite un fichier lua/autorun/… appartenant à un addon que ton serveur ne possède pas ne vient pas de ton serveur : elle vient du Garry's Mod du joueur. Inutile de fouiller ton File Manager pour la trouver, elle n'y est pas. Le chapitre 8 t'apprend à faire le tri entre les deux.

Le Lua aussi est coupé en deux #

Le code Lua suit la même séparation : certains fichiers tournent sur le serveur, d'autres chez le joueur, d'autres des deux côtés (code « partagé », shared, un mot que tu croiseras dans les chemins). Pas besoin d'écrire du Lua pour suivre ce tuto ; le détail est sur le wiki officiel : https://wiki.facepunch.com/gmod

✅ À retenir Le serveur décide, le joueur affiche. Ce que le joueur doit voir, il doit l'avoir chez lui. Il y a le téléchargement du serveur et celui des joueurs, et il faut les deux.


4. Le .gma : pourquoi tu ne vois pas tes addons du Workshop #

Un addon publié sur le Workshop n'est pas un dossier rempli de fichiers. C'est une archive unique, avec l'extension .gma.

Quand ton serveur récupère un addon du Workshop :

  • le .gma est rangé dans garrysmod/cache/srcds/, un fichier par addon ;
  • il n'est jamais décompressé : Garry's Mod l'utilise tel quel, un peu comme on branche une clé USB sans en recopier le contenu ;
  • il n'apparaît pas dans garrysmod/addons/ ;
  • il n'est pas non plus dans garrysmod/cache/workshop/, un dossier qui existe mais qui ne sert pas à ça.

⚠️ Conséquence qui piège presque tout le monde : tu ne verras jamais les fichiers .lua d'un addon du Workshop dans le File Manager. Un dossier addons/ vide ne prouve pas que tes addons manquent. Pour savoir ce que ton serveur a réellement reçu, c'est cache/srcds/ qu'il faut ouvrir, et le chapitre 4 t'explique comment comparer son contenu à ta collection.

Les addons déposés à la main, par SFTP ou par le File Manager, fonctionnent autrement.

Addon du Workshop Addon déposé à la main
Sa forme une archive .gma un dossier
Son emplacement garrysmod/cache/srcds/ garrysmod/addons/<nom-de-l-addon>/
Ses fichiers dans le File Manager invisibles visibles
Qui l'a mis là le serveur, en le téléchargeant toi
Le modifier sur place impossible : tu règles ce que son auteur a prévu possible

Dernier dossier à connaître dans ce domaine : garrysmod/data/. C'est là que les addons écrivent ce qu'ils doivent garder d'un démarrage à l'autre. ULib, la bibliothèque dont dépend le mod d'administration ULX, y range par exemple ses grades. Le chapitre 7 y revient.

✅ À retenir Workshop = un .gma dans cache/srcds/, jamais décompressé, jamais lisible. Déposé à la main = un dossier dans addons/, lisible et modifiable.


5. Faire le tour de ton arborescence #

Cinq minutes de visite maintenant t'éviteront de chercher au hasard plus tard.

  1. Ouvre File Manager dans le menu de ton instance.
  2. Repère, à la racine, le dossier garrysmod/ : c'est là que vit le jeu. Les autres dossiers de la racine, comme AMP_Logs/ (les journaux d'AMP), ne se modifient pas.
  3. Entre dans garrysmod/ et compare ce que tu vois au tableau ci-dessous.
  4. Ouvre garrysmod/logs/ et regarde le nom du fichier le plus récent.
📁 Chemin Ce qu'on y trouve Tu y touches ?
garrysmod/addons/ les addons hors Workshop, un dossier chacun oui, pour en déposer
garrysmod/gamemodes/ les gamemodes installés, un dossier chacun oui, pour en déposer
garrysmod/maps/ les cartes .bsp déposées à la main oui, pour en déposer
garrysmod/cfg/server.cfg les réglages écrits par AMP non : passe par Configuration
garrysmod/cfg/mount.cfg le montage du contenu d'autres jeux, écrit par AMP non : passe par Configuration
garrysmod/settings/users.txt les admins « natifs » de Garry's Mod oui, avec soin (chapitre 7)
garrysmod/data/ ce que les addons enregistrent rarement
garrysmod/logs/ les journaux du jeu, un fichier par démarrage en lecture
garrysmod/cache/srcds/ les .gma téléchargés du Workshop en lecture

Les deux fichiers de cfg/ sont produits par AMP à partir de tes réglages ; mount.cfg, par exemple, est écrit au démarrage. Pour changer ce qu'ils contiennent, change plutôt le réglage correspondant dans Configuration → Garry's Mod : c'est AMP qui en est la source.

Les journaux du jeu s'appellent L-AAAA-MM-JJ-NNN.log, un par démarrage : chargement de la carte, connexions avec les SteamID, erreurs Lua. C'est ta mémoire longue, là où la Console n'affiche que la fin.

✅ À retenir Ton terrain, c'est garrysmod/. Tu déposes dans addons/, gamemodes/ et maps/ ; tu lis logs/ et cache/srcds/ ; tu règles cfg/ depuis AMP.


6. Ce que le serveur ne lit qu'une fois : au démarrage #

Voici le fait qui explique le plus de « j'ai changé un truc et rien ne s'est passé ».

srcds lit certaines choses une seule fois, au lancement, et n'y revient plus tant qu'il tourne :

  • garrysmod/settings/users.txt : un admin ajouté pendant que le serveur tourne n'existe pour lui qu'au prochain redémarrage ;
  • le gamemode : tout son code Lua est chargé au lancement. Déposer une version corrigée sur un serveur en marche ne change rien, il garde celle qu'il a chargée. Constaté sur une instance TeamKit ;
  • les addons du Workshop : ils sont montés au lancement. Ajouter un addon à ta collection pendant que le serveur tourne ne le fait pas apparaître ;
  • tes réglages AMP : ils deviennent des fichiers et une ligne de commande au moment où AMP lance srcds.

D'où le réflexe à prendre une fois pour toutes : je modifie, je redémarre, je lis la console.

✅ À retenir Le serveur ne relit pas ses fichiers en cours de route. Toute modification attend le prochain démarrage.


7. Restart ou Update : lequel, et quand #

Le chapitre 1 t'a présenté les quatre boutons de Status. Voici lequel choisir selon ce que tu viens de faire.

Ce que tu viens de faire Le bouton Pourquoi
Ajouter ou retirer un admin dans users.txt Restart le fichier n'est lu qu'au démarrage
Déposer ou corriger un gamemode Restart son Lua est chargé au lancement
Déposer un addon dans addons/ Restart le contenu est assemblé au lancement
Changer Workshop Collection ID ou le contenu de ta collection Restart, puis vérifier cache/srcds/ les addons sont montés au lancement ; chapitre 4 si des .gma manquent
Changer un réglage dans Configuration → Garry's Mod Restart AMP applique tes réglages en lançant srcds
Activer CSS Content Mode ou TF2 Content Mode Update, puis démarrer AMP écrit le montage au démarrage mais ne va chercher le contenu que pendant un Update

La dernière ligne a été constatée : un mount.cfg désignait des dossiers qui n'existaient pas sur le disque, faute d'Update. Détails au chapitre 6.

Le redémarrage n'est pas magique #

Un Restart fait relire au serveur tout ce qu'il ne lit qu'au démarrage. Il ne répare rien. Si le problème est dans ton contenu (une erreur Lua, une carte mal nommée, un addon en double), il revient à chaque démarrage, à l'identique.

Retiens ce test simple : deux redémarrages, la même erreur au même endroit ? C'est ton contenu qu'il faut corriger, pas le serveur qu'il faut relancer une troisième fois. Direction le chapitre 8.

Et pour que ton serveur reparte frais chaque nuit sans que tu y penses, le chapitre 9 te montre comment programmer un redémarrage avec Schedule.

✅ À retenir Restart relit, Update va chercher. Si la même erreur revient après un Restart, le problème est dans le contenu, pas dans le serveur.


✅ Checklist du chapitre #


❓ Si ça ne marche pas #

J'ai corrigé un fichier et le serveur se comporte exactement comme avant. Il ne l'a pas relu : fais un Restart et lis la console. Si la même erreur revient à la même ligne, vérifie que tu as modifié le fichier de l'instance, pas une copie sur ton PC.

Je ne trouve pas les fichiers de mon addon du Workshop. C'est normal : un addon du Workshop reste une archive .gma dans garrysmod/cache/srcds/, jamais décompressée. Tu ne verras pas ses .lua. Vérifie seulement que son .gma est bien présent.

cache/srcds/ contient moins de .gma que ma collection n'a d'addons. Le téléchargement s'est arrêté en route. C'est un problème connu, avec une solution précise : le chapitre 4, section sur -authkey.

Mes joueurs voient des damiers violets alors que tout est installé sur le serveur. Le serveur n'affiche rien, ce sont eux qui doivent avoir le contenu. Vérifie que Resource Lua Code contient bien tes addons, puis lis le chapitre 6.

J'ai ajouté mon SteamID dans users.txt et je ne suis toujours pas admin. Ce fichier n'est lu qu'au démarrage : redémarre. Si ça ne suffit pas, le format du SteamID est probablement en cause, le chapitre 7 te montre lequel est attendu.

La console affiche une erreur Lua d'un addon que je n'ai jamais installé. Si aucun fichier de cet addon n'existe dans addons/ ni dans cache/srcds/, l'erreur vient du jeu d'un joueur (chapitre 8). Bloqué ? Demande sur le Discord TeamKit, lignes de console à l'appui.

Une étape qui coince ? Ouvre un ticket sur le site ou demande sur le Discord TeamKit. Le bot Guide connaît ces pages.