Dans les chapitres précédents, on a vu comment créer des maps avec le logiciel JACK : de l’installation du logiciel à son utilisation pour créer des maps, avec des blocs, des textures, des entités-blocs et des entités-points. Mais pour l’instant, on a pas pu encore joué à nos maps. Comment fait-on ?
Pour cela, on va déjà voir comment charger une map dans le jeu, que ce soit Half-Life, Sven Co-op, ou un autre jeu GoldSource.
Comment lancer une map ?
Pour lancer une map dans un jeu GoldSource, il y a plusieurs manières de procéder.
Quand c’est pour tester une map, surtout une map solo en particulier, on utilise la console.
La console, c’est une fenêtre que tu peux ouvrir à l’intérieur de ton jeu qui te permet, entre autre, de rentrer des cheats en mode solo (pour devenir invisible des ennemis, pouvoir voler etc.).
Ouvrir la console dans le jeu
Pour ouvrir la console, il faut d’abord lancer le jeu.

Puis, on lance la console avec la touche « ² ». Cette touche se situe en général en haut à gauche de ton clavier.

Normalement, la console s’ouvre :

La console te permet de rentrer des commandes. Tu écris du texte avec des mots très précis (à la lettre près, majuscules et accents compris), tu faisa « Entrée », et ça te permet d’exécuter des choses dans le jeu.
Voir la liste des maps installées sur ton ordinateur
Par exemple, avec la console, tu peux voir la liste des maps disponibles. Pour cela, écris dans la console « maps * » :

Puis fais « Entrée ». La liste des maps auxquelles tu peux jouer s’affiche.

Lancer une map solo pour la tester
Pour lancer une map solo pour la tester, on peut utiliser la commande « map » suivi du nom de la map, sans l’extension.
Par exemple, dans la liste des maps qui s’affiche, on a pu voir « frenzy ». Bien que ce soit une map multi-joueur, on peut la lancer avec la commande « map ». Ce sera comme si on jouait à la map en solo. (Ce qui n’a aucun intérêt dans le cas d’une map deathmatch, mais c’est juste pour tester.)
On écrit donc « map frenzy » (et non pas « frenzy.bsp »).

La map se lance :

Encore une fois, ça n’a aucun intérêt de lancer une map multi-joueur avec la console. C’est utile juste pour tester les maps solo. Avec une map multi-joueur, personne ne peut rejoindre ta partie si tu lances la map comme ça, et tu n’auras pas tous les méchanismes du mode multi-joueur car tu es en mode solo. Donc, par exemple, les munitions et armes ne reapparaîtront pas.
Lancer une map en créant un serveur / une partie (maps multi-joueurs)
Pour les maps multi-joueurs, il y a quelque chose de beaucoup plus simple et que tu connais sans doute déjà : créer un serveur.
Pas besoin de passer par la console. Créé juste une partie depuis le jeu. Par exemple, pour Half-Life, lance le jeu puis clique sur « Create Server ».

Tu as la liste des maps disponibles qui s’affiche aussi. Attention cette-fois ci, uniquement les maps multi-joueurs sont affichées (sauf Sven Co-op qui les affichent toutes). Les maps solo ne sont pas dans la liste (logique). Une map multi-joueurs est une map qui contient au moins une entité-point « info_player_deathmatch » (sauf dans Sven Co-op ou toutes les maps sont considérées multi-joueurs, vu qu’on peut jouer en co-op à des maps solo).
Puis, choisis la map que tu veux dans la liste et clique sur « Start ».

La map se lance ensuite :

C’est la même chose pour les autres jeux (Sven Co-op, Counter-Strike…).
Pourquoi a-t-on besoin de la compilation pour jouer à sa map ?
Les maps au format BSP
On vient de voir juste en haut comment lister les maps disponibles avec la console. Pour rappel, on avait ça avec Half-Life :

Cette liste est la liste des maps installées sur notre ordinateur pour le jeu en question (ici, Half-Life). Mais où se trouvent-elles sur notre ordinateur ?
Pour cela, on se rend dans le dossier du jeu en question (par exemple, « valve » dans le cas d’Half-Life) :

Puis, on va dans le dossier « maps » :

On retrouve la liste des maps qui étaient affichées dans la console :

C’est la même chose pour Sven Co-op, sauf qu’il y a des fichiers en plus (qui ne sont pas très importants, ils contiennent par exemple le texte qui s’affiche quand le joueur arrive sur la map) :

On remarque que ces maps ont l’extension « .bsp ». C’est le format de map que le jeu peut ouvrir, de même qu’un fichier avec l’extension « .jpg » est le format de fichier que Paint peut ouvrir, ou qu’un fichier « doc » est le format que Google Docs, Word ou Libre Office peuvent ouvrir.
Hors, si on se rend dans le dossier dans lequel on créé nos maps avec JACK (le « Source Maps Directory » qu’on avait indiqué dans les options de JACK), on remarque que notre map a l’extension « .rmf » :

Il y a également un fichier « .rmx », je ne sais pas à quoi ça sert. Peut-être un back-up de notre map, autant ne pas y toucher.
Le jeu est incapable d’ouvrir une map au format RMF. La question, c’est comment transformer notre map du format RMF en une map au format BSP ? Juste la renommer en « ma_map.bsp » ne suffira pas !
Les compilateurs
C’est là qu’interviennent les compilateurs. Ce sont 4 programmes (aussi appelés logiciels ou exécutables) qui doivent être lancés l’un après l’autre, dans un certain ordre, et qui servent à transformer ta map du format RMF au format BSP. Enfin, plus exactement, du format MAP au format BSP. La conversion du format RMF au format MAP est faite par JACK.
Évidemment, exécuter 4 programmes dans l’ordre à chaque fois qu’on veut tester sa map n’est pas très pratique. C’est pour ça que JACK peut tout faire automatiquement. Juste en cliquant sur un bouton, il va copier notre map et la transformer au format MAP, puis lancer les compilateurs les uns après les autres pour transformer notre MAP au format BSP. Et ensuite, il n’y aura plus qu’à lancer le jeu et tester notre map ! :)
Le bouton en question est le bouton « Run the map ». Mais avant de pouvoir l’utiliser, on va devoir configuer JACK si ce n’est pas déjà fait ! :)

Comment configurer la compilation ?
Comme je l’ai dit plus haut, JACK peut se charger de créer une copie de ta map du format RMF au format MAP, puis de lancer chaque compilateur dans l’ordre pour transformer le MAP en question au format BSP, pour que tu puisses y jouer avec ton jeu. JACK place même le BSP dans le dossier « maps » directement pour que tu n’aies qu’à lancer le jeu.
Trouver les compilateurs
La première chose à faire, c’est d’avoir les compilateurs.
Dans le cas d’Half-Life et des autres jeux GoldSource, les compilateurs sont fournis avec JACK. Ils se trouvent dans le dossier de JACK, sous-dossier « halflife ».

Le dossier de JACK dépend de où tu l’as installé. Moi, je suis sur Linux, et je l’ai simplement installé dans mon dossier « Documents ». :)
Sven Co-op
Sur Sven Co-op, les compilateurs ne sont pas fournis avec JACK. Il faut télécharger le « Sven Co-op SDK » dans ta bibliothèque Steam, dans la section « Tools » ou « Outils ».

Puis, une fois que c’est téléchargé, fais un clic droit dessus, va dans « Manage » (« Gérer »), puis dans « Browse local files » (« Parcourir les fichiers locaux »).

Ensuite, prend note du dossier dans lequel le SDK est installé. Personnellement, je l’ajoute à mes favoris dans Linux pour que le dossier soit facile à trouver :

Dans tous les cas, normalement, le dossier se trouve dans le dossier « common », le même dossier qui contient tous tes jeux Steam, dont Sven Co-op.
Configuer JACK pour la compilation
On va maintenant configurer JACK pour la compilation.
Tu t’en doutes : il faut lui dire où se trouvent les compilateurs qu’on va utililer.
Pour cela, rend-toi dans les options je JACK, dans l’onglet « Game Profiles ». Choisis ton game profile, dans mon cas moi j’avais créé un game profile pour Sven Co-op que j’avais appelé « svencoop_gpn ». Puis, va dans l’onglet « Build Programs ».

Les « Build Programs », c’est l’autre nom des compilateurs. Ils sont aussi appelés les VHLT, SHLT, SCHLT en fonction de leurs versions et de si on est sur Sven Co-op ou non.
On va maintenant indiquer le chemin de chaque compilateur, ou « build program ». Comme je l’ai déjà dit, il y en a quatre, qui doivent s’exécuteur dans cette ordre :
- CSG
- BSP
- VIS
- RAD
Pour chaque champ, clique sur le bouton avec « … » à droite et indique où le compilateur se trouve.
Cas d’Half-Life et des autres jeux GoldSource
Si tu es sur Half-Life ou un autre jeu que Sven Co-op, les compilateurs se trouvent dans le dossier « halflife » dans le dossier de JACK.

Par exemple, pour le CSG, il faut prendre le fichier qui contient « csg ».
Cas de Sven Co-op
Pour Sven Co-op, il faut aller dans le dossier « Sven Co-op SDK », puis dans le dossier « mapping ».

Ensuite, il faut choisir le compilateur adapté parmi tous les fichiers contenus dans le dossier :

Encore une fois, pour le CSG, il faut prendre un des fichiers qui contient « CSG ». Même chose pour BSP, VIS, et RAD. Si tu es sur Windows, tu choisis le fichier qui finit par « .exe ». Sur Linux, tu choisis la version sans le « .exe ».
Si ton système est 32-bit, tu choisis la version 32-bit ou du moins celle qui n’a pas « 64 » dans le nom. Sur Windows, si tu as un dossier « C:\Program Files (x86) », c’est que ton système est 64-bit. Quasiment tous les ordinateurs, même les vieux, sont 64-bit maintenant.
Il y a aussi « avx2 ». Tu choisis ça si ton ordinateur est équipé de ça. Dans le doute, choisis la version sans. Mais si tu sais que ton CPU est équipé de ça, tu peux choisir cette version, ça prendra peut-être moins de temps de compiler ta map.
Le « Mod Directory »
Pour la compilation, il faut que ton « Mod Directory » soit défini dans les options de JACK. Reste dans l’onglet « Game Profiles », va dans le sous-onglet « Directories », et définis ton « Mod Directory » si ce n’est pas déjà fait.
Si tu mappes pour un jeu GoldSource stand-alone, choisis le dossier qui finit par « downloads », par exemple « valve_downloads ». Dans le cas de Sven Co-op, choisis le dossier « svencoop_addon ». Si tu mappes pour un mod d’Half-Life, choisis le dossier du mod si c’est ton propre mod ou sinon le dossier du mod avec « _downloads » à la fin.
Si le dossier avec « _downloads » (ou « _addon » dans le cas de Sven Co-op) n’existe pas, créé-le (vide) et surtout, créé un dossier « maps » vide à l’intérieur.

Par exemple, dans le cas de Sven Co-op, mon « Mod Directory » est le suivant :

À la fin, ça donne quelque chose comme ça :

On est bon pour la configuration !
Comment lancer la compilation
Après avoir paramétré JACK pour la compilation (voir plus haut), on peut enfin lancer la compilation !
Petites vérifications avant de compiler
On vérifie tout d’abord qu’il n’y a pas de trous (des « leaks ») dans notre map. Eh oui, TOUTES NOS ENTITÉS (même les entités-blocs) doivent être contenus dans une structure faite de blocs (et non pas d’entités-blocs). Sinon, la compilation ne marchera pas.
Imagine toi que l’intérieur de ta map sera rempli d’air, et que l’air s’enfuit par le moindre trou que tu peux avoir dans ta map, que ce soit un espace entre deux blocs ou un bloc de ta structure qui est une entité-bloc.
On vérifie aussi qu’on a au moins un point de départ pour notre joueur (l’entité-point « info_player_start ») et au moins une source de lumières (l’entité-point « light »).
Dans mon cas, tout est bon :

Lancer la compilation
Ensuite, il n’y a plus qu’à lancer la compilation, en seulement deux clics !
On commence par cliquer sur le bouton « Run the map » dans la barre des petites icônes.
Cette fenêtre s’affiche :

On cochera toujours « Don’t run the map ». En effet, c’est mieux de lancer la map nous-même, car une légende raconte que ça peut créer des bugs quand JACK lance le jeu pour nous.
On peut ensuite cliquer sur « OK » pour lancer la compilation.
Vérifier que la map s’est bien compilée
Si tu as une erreur avec quelque chose comme « Permissions refusées » :

Vérifie que tu as bien configuré ton « Mod Directory ». En particulier, vérifie que ton dossier « Mod Directory » contient bien un dossier « maps ». Personnellement, j’avais du le créer dans mon dossier « valve_downloads » :

Si tu as quelque chose du genre
There was a problem compiling the map.
Check the file /home/loulimi/.local/share/Steam/steamapps/common/Half-Life/valve_downloads/maps/ma_map.log for the cause.
C’est que ta compilation a eu un problème, lis la dernière section de ce chapitre pour réparer le problème.
Si tu n’as pas d’erreurs et que ta compilation s’est déroulée normalement, tu dois avoir quelque chose du genre :

Tu dois voir « END hlrad » avec « FinalLightFace » au dessus.
Histoire d’être sur, rend toi dans le dossier que tu as indiqué comme étant ton « Mod Directory » dans JACK, puis va dans le dossier « maps ».

On peut voir que la compilation s’est bien déroulée car on voit ta map au format BSP, et aussi il n’y a pas de fichiers « .err ». Tous les autres fichiers générés à part le BSP (« .prt », « .ext », « .log »…) ne te servent à rien, ça te donne juste des infos juste sur la compilation. Tu peux ne pas y toucher, mais quand tu partageras ta map tu ne les enverras pas !
Lance ta map !
On a vu comment lancer une map plus haut, je ne vais donc pas répéter !
Je te montre juste ce que ça donne dans le cas de ma map. (Une chambre avec une tour et un escalier en colimaçon.)
Je lance Sven Co-op, je vais dans « Start New Game ». Dedans, je vois ma map. Je la sélectionne.

Et hop-là ! Je peux jouer à ma map !

Par contre, hors-sujet mais on se cogne la tête sur le sol du premier étage, il faudra que je répare ça ! Ça empêche de monter les escaliers en colimaçon sans se baisser à la fin.

Résoudre les problèmes de compilation
La compilation, c’est souvent une étape un peu… embêtante, car il peut y avoir des problèmes qui empêchent la map de se compiler correctement. Autrement dit, on peut travailler sur une map pendant longtemps puis, au moment de compiler, on a un problème !
On va voir ici quelques problèmes qui peuvent arriver fréquemment pendant la compilation.
C’est pour ça que c’est important de compiler souvent, histoire de savoir quand est-ce qu’on introduit une erreur et de pouvoir éventuellement revenir en arrière.
Déjà, on sait qu’il y a un problème quand en voir un message du genre « Check the file …ma_map.log for the cause.. Le message nous donne déjà une information utile : regarder le fichier « .log » (un fichier texte, généré par la compilation, qui décrit la compilation au fur-et-à-mesure qu’elle se déroule).
On va donc dans notre dossier « Mod Directory », et on regarde les fichiers :

On remarque le fichier « .err ». C’est ce fichier-là le plus intéressant dans notre cas. Il n’est créé que quand la compilation a raté. Il contient l’extrait du fichier « .log » mais juste la partie qui contient l’erreur.
Ouvrons-le. En fonction de ce que ça contient, tu sauras comment résoudre ton problème.
Les parties qui suivent décrivent les problèmes les plus fréquents
Les leaks
hlbsp: Error:
A LEAK is a hole in the map, where the inside of it is exposed to the
(unwanted) outside region. The entity listed in the error is just a helpful
indication of where the beginning of the leak pointfile starts, so the
beginning of the line can be quickly found and traced to until reaching the
outside. Unless this entity is accidentally on the outside of the map, it
probably should not be deleted. Some complex rotating objects entities need
their origins outside the map. To deal with these, just enclose the origin
brush with a solid world brush
Notre map a un LEAK. C’est-à-dire qu’il y a un trou, ce qui fait planter la compilation !
Je le rappelle, pour que notre map puisse être compilée normalement, il faut que toutes nos entités soient contenues dans une structure faite de blocs. (Une entités bloc ne peut pas servir à boucher un leak.)
Voici un exemple de situations qui causent des leaks :
Un espace entre deux murs qui fait face à l’extérieur.
Une entité placée à l’extérieur de ta map.
Une entité-point qui sert à boucher la map. (C’est pas possible.)
Trouver le leak avec le fichier pointfile
Normalement, quand un leak est détecté lors de la compilation, un fichier « .lin » est généré :

Ce fichier contient un trait qui t’aide à trouver ton leak. Par défaut, JACK le charge automatiquement après la compilation s’il y a un leak. Sinon, va dans la barre des menus de JACK, clique « Map », puis « Load Pointfile » et sélectionne ton fichier « .lin ».
Tu verras qu’un trait s’affiche dans ta map. Suis-le dans la vue 3D. Plus il devient rouge, plus il est proche du leak.

Pour enlever, clique sur Unload Pointfile toujours dans la barre des menus.
Trouver le leak avec l’emplacement de l’entité
Il y a des fois où le pointfile marche pas super. C’est rare, mais ça peut arrivé. Ça peut être causé par une entité-point placée à l’extérieur de ta map, par erreur.
Dans ce cas, tu peux aussi ouvrir le fichier « .log » de ta map généré par la compilation.

Dedans, cherche l’endroit où il parle de leaks pour la première fois. Tu dois avoir quelque chose du genre :
SolidBSP [hull 0] 25 (0.00 seconds)
Warning: === LEAK in hull 0 ===
Entity light @ ( 0, 0, 128)
Error:
A LEAK is a hole in the map, where the inside of it is exposed to the
(unwanted) outside region. The entity listed in the error is just a helpful
indication of where the beginning of the leak pointfile starts, so the
beginning of the line can be quickly found and traced to until reaching the
outside. Unless this entity is accidentally on the outside of the map, it
probably should not be deleted. Some complex rotating objects entities need
their origins outside the map. To deal with these, just enclose the origin
brush with a solid world brush
Leak pointfile generated
Ici, on peut lire « Entity light @ ( 0, 0, 128) ». Ça te donne l’emplacement de l’entité la plus proche de ton leak.
On peut s’y rendre en allant dans « Map », puis dans « Go to coordinates… ». La, tu recopies les coordonnées (mais sans les virgules).
Ensuite, il suffit de regarder autour de soit dans la vue 3D pour trouver l’entité en question.
Les structures invalides (Illegal Brush / brush outside world)
Si tu as le problème suivant dans ton fichier ERR ou LOG :
hlcsg: Error: brush outside world
Description: The map has a problem which must be fixed
Howto Fix: Check the file http://www.zhlt.info/common-mapping-problems.html for a detailed explanation of this problem
Warning: Illegal Brush (edge without opposite face): Entity 0, Brush 6
C’est qu’un de tes blocs a une forme invalide. Ça peut arriver avec le mode Vertex Manipulation, par exemple si tu crées une forme concave.
Un exemple forme invalide (car concave).
La première chose à vérifier, c’est que le mode « Vertex Manipulation Restrictions » soit bien activé. Ça évitera dans une certaine mesure que ce problème se reproduise. Pour ça, tu dois vérifier que ce bouton doit être désactivé :

Si ce bouton est activé, alors le mode « Vertex Manipulation Restrictions » est désactivé. Il faut donc désactiver ce bouton pour activer le mode. (Oui, c’est mail foutu, je suis d’accord.)
Ensuite, il faut trouver le bloc qui cause le problème et le réparer ou le supprimer. Pour ça, on note ce qu’il y a marqué dans le fichier ERR ou LOG : « Entity 0, Brush 6 ».
Puis, dans JACK, dans la barre des menus, on va dans « Map », puis « Go to brush number… ».

On y met le numéro de l’entité et du bloc, et ça sélectionne le bloc problématique :

On peut ensuite le réparer ou simplement le supprimer.
Techniquement, le message « Warning: Illegal Brush » est juste un avertissement, ça n’empêche pas de compiler ta map. Il te dit juste que tu as une forme invalide qui peut causer des problèmes, et c’est exactement ce qui se passe car ce bloc crée l’erreur « hlcsg: Error: brush outside world ». Cette erreur en est vraiment une et elle t’empêche de compiler ta map.