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 :
- 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.
- 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.
- 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
.gmaest rangé dansgarrysmod/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
.gmadanscache/srcds/, jamais décompressé, jamais lisible. Déposé à la main = un dossier dansaddons/, lisible et modifiable.
5. Faire le tour de ton arborescence #
Cinq minutes de visite maintenant t'éviteront de chercher au hasard plus tard.
- Ouvre File Manager dans le menu de ton instance.
- Repère, à la racine, le dossier
garrysmod/: c'est là que vit le jeu. Les autres dossiers de la racine, commeAMP_Logs/(les journaux d'AMP), ne se modifient pas. - Entre dans
garrysmod/et compare ce que tu vois au tableau ci-dessous. - 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 dansaddons/,gamemodes/etmaps/; tu lislogs/etcache/srcds/; tu règlescfg/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.