Tu es maintenant quasi un pro concernant la création de blocs : tu sais créer des blocs de toute formes, rajouter des textures dessus, et ajuster les textures. Mais il manque quelque chose à ta map : des entités !
Une entité, c’est quelque chose que l’on va rajouter à l’intérieur de la structure que tu créés avec les blocs. Si les blocs sont le squelette de ta map, les entités sont un peu les organes !
Il y a deux types d’entités :
- Les entités-blocs : des blocs que tu transformes en entités pour leur donner des fonctions, par exemple une porte qui s’ouvre, un train…
- Les entités-points : des objets déjà faits que tu places dans ta map aux endroits que tu choisis, genre les points de départ du ou des joueurs, les lumières, les zombies ou les scientifiques dans Half-Life, les otages dans Counter-Strike…
Avant de voir comment rajouter une entité à sa map, il faut définir ce qu’est un FGD.
Les FGDs
Un FGD, c’est quoi ?
On va parler de FGDs (aussi appelés Game Data Files). Pour comprendre à quoi ça sert, il faut comprendre la différence entre « jeu » et « moteur ».
Tu te souviens de ce que j’avais parlé au début de ce tutoriel ? Un jeu a besoin d’un moteur pour fonctionner. Le moteur, c’est un ensemble de fichiers sur lequel le jeu se base pour fonctionner, qui lui permette de jouer du son, de calculer la 3D, etc.
Tous les jeux GoldSource partagent le même moteur, le moteur GoldSource, même si c’est une version un peu modifiée parfois. C’est pour ça qu’on utilise des fichiers avec le même format « .wad » pour les textures quelque soit le jeu GoldSource, qu’on créé les blocs de la même manière quelque soit le jeu GoldSource pour lequel on veut mapper, qu’on utilise les mêmes logiciels (JACK par exemple), etc. C’est ce que j’avais montré dans mon screen dans l’autre chapitre.
Dans le dossier du jeu, moteur et jeux sont séparés.
Mais il y a tout de même des différences entre les jeux, même s’ils utilisent le même moteur : par exemple, dans Sven Co-op, tu peux créer des monstres qui n’existent pas dans Half-Life. Dans Counter-Strike, tu peux créer des otages, ce que tu ne peux pas faire dans les autres jeux, etc.
En fait, la différence entre deux jeux GoldSource c’est souvent que chaque jeu a ses propres entités. Par exemple, dans Opposing-Force, les soldats alliés sont des entités spéciales qui n’existent pas dans les autres jeux (sauf dans Sven Co-op). Dans Sven Co-op, le « bodyguard » ou encore le « Tor » sont des entités qui n’existent que dans Sven Co-op. Dans Counter-Strike, on peut placer des otages, ce qu’on ne peut pas faire dans les autres jeux.
Chaque jeu a ses propres entités. Par exemple, le « bodyguard » n’existe que dans Sven Co-op.
Ceci dit, vu que tous les jeux GoldSource sont basés sur Half-Life à l’origine, toutes les entités d’Half-Life sont inclues dans les autres jeux.
JACK ne sait rien des entités que tu peux mettre dans ton jeu. Il faut le lui dire. Par exemple, si tu fais une map pour Half-Life, tu dois dire à JACK que les entités disponibles sont les scientifiques, les zombies, etc.
Toutes ces informations-là sont contenus dans un fichier FGD (au format « .fgd »), qu’on appelle aussi rarement Game Data File. C’est ce fichier qui dit à JACK quelles entités tu peux mettre dans ta map. Chaque jeu qui a ses propres entités (Half-Life, Natural Selection, The Specialists, Sven Co-op…) a son propre FGD.
Comment ajouter un FGD à JACK ?
Pour pouvoir mettre les entités de ton jeu dans ta map, tu dois dire à JACK où se situe le FGD pour que JACK puisse lire le fichier et voir quelles sont les entités disponibles ! :)
Pour cela, va dans les options de JACK. Dans l’onglet « Game Profiles », choisis ton Game Profile. Dans mon cas, j’avais créé un seul Game Profile que j’avais appelé « svencoop_gpn », il est donc déjà sélectionné.

Puis, en restant dans le sous-onglet « Game », dans la partie « Game Data Files », clique sur « Add… ». Tu dois maintenant trouver ton fichier FGD.
Si tu mappes pour Half-Life, va dans le dossier de JACK et choisis le FGD « halflife.fgd » dans le dossier « halflife ».

Si tu mappes pour un autre jeu, comme Sven Co-op, le FGD est en général dans le dossier du jeu (par exemple, « svencoop ») :

Dans mon cas, je mappes pour Sven Co-op. Après avoir double-cliqué sur mon fichier FGD (ou fait « Entrée »), j’ai donc ça :

Pour d’autres jeux ou mods moins connus, si le FGD n’est pas dans le dossier du jeu, il faut chercher le FGD sur Internet, par exemple sur ModDB dans la section « files » ou sur Google (par exemple, en cherchant « The Specialists FGD ». Des fois, le FGD est contenu dans un fichier plus gros, un SDK, qui contient d’autres trucs avec.
Si tu ne trouves pas de FGD pour un mod d’Half-Life, c’est peut-être parce que le mod n’a pas de nouvelles entités par rapport à Half-Life. Dans ce cas, utilise le FGD d’Half-Life.
Donc, un FGD n’est strictement parlant pas essentiel, même si en pratique il l’est. Il rend juste la vie du mappeur beaucoup plus simple car il n’a pas à mémoriser le nom exact d’une cinquantaine d’entités ni tous leurs attributs.
En revanche, il n’y a pas besoin de FGDs pour jouer à une map, le FGD n’est pas utilisé par le jeu. Juste par JACK.
Les entités-blocs
Une entité-bloc, c’est simplement un bloc (comme ceux qu’on a créés dans les chapitres précédents) qu’on a transformé en entité. Ça permet de faire des portes, des vitres, des trains, des ascenseurs, des caisses qu’on peut pousser, et plein d’autres choses encore.
Comment créer une entité-bloc ?
Pour créer une entité-bloc, il faut sélectionner un bloc et le transformer en entité.
On va voir comment créer une entité-bloc avec un exemple tout simple : créer une vitre transparente ! En effet, par défaut, tous les blocs sont opaques. Pour avoir un bloc transparent, il faut transformer le bloc en entité.
Par exemple, moi, j’ai créé une vitre. C’est juste un bloc avec la texture « GLASS_MED ».

Je sélectionne donc ma vitre.
Ensuite, dans la barre de droite, je clique sur le bouton « To Entity ».

Si tu as ce message d’erreur qui s’affiche :

Alors ça veut dire que tu n’as pas ajouté de FGDs à ton Game Profile. Relis la partie « Les FGDs » plus haut.
À la place, après avoir cliqué sur « To Entity », tu dois avoir ça :

Ton bloc est maintenant une entité-bloc ! Pour modifier le type d’entité (actuellement c’est un bouton, moi je veux une vitre), on verra comment faire plus bas.
Retransformer une entité-bloc en un simple bloc
Déjà, assure-toi que le mode « Ignore Group » (« IG ») n’est pas activé dans la barre des petites icônes. Dans le screen ci-dessous, l’icône « ig » ne doit pas être activée :

Ensuite, sélectionne ton entité-bloc.
Puis, dans la barre de droite de JACK, dans la partie « New Objects », clique sur « To World ».

Ça retransforme ton bloc en un simple bloc, et ça supprime tous les attributs que t’as modifés.
Les entités-points
Une entité-point, c’est une entité ou tu ne peux pas définir la forme, la taille ou l’apparence avec un bloc.
Par exemple, si tu veux définir le point de départ du joueur, tu dois juste mettre un point dans JACK qui indiquera où le joueur va apparaître au début de la map. Ça n’a pas de sens de dire qu’un mur est le point de départ du joueur.
Créer une entité-point
Pour créer une entité-point, on doit passer en mode « Entity Creation Tool » dans la barre des outils. À chaque fois que tu voudras créer des entités-points, tu devras passer dans ce mode.

Une fois que tu as le mode « Entity Creation Tool » activé, tu peux remarquer que le curseur a changé dans la vue 2D.
La première chose à faire est de sélectionner le type d’entité-point que tu veux créer. Toute à droite, dans la partie « New Objects », choisis l’entité-point que tu veux créer dans « Objects: ».

Par exemple, pour créer une source de lumière, on choisit « light ».
Ensuite, il faut placer l’entité-point dans la map. Pour cela, c’est très simple, on clique quelque part dans une des vues 2D. Un rectangle vert apparaît à l’endroit où on a cliqué. On peut alors déplacer ce rectangle vert, il indique où notre entité sera créé.

Comme pour les blocs, pour valider la création de notre entité-point, on doit faire « Entrée » dans une des vues 2D.
Dans mon cas, je vois ma source de lumières apparaître dans la vue 3D après avoir validé la création de mon entité-point :

On peut faire de la même manière pour créer l’emplacement de départ du joueur. Il faut refaire la même chose, et choisir l’entité-point « info_player_start ».
Ensuite, on choisit un endroit un peu surelevé du sol.

Ensuite, on créé notre entité-point en faisant entrée.

Modifier les propriétés d’une entité (entité-point ou entité-bloc)
Après avoir créé une entité, que ce soit une entité-point ou une entité-bloc, tu peux toujours modifier le type d’entité que c’est ainsi que ses attributs.
La première chose à faire qui est SUPER IMPORTANTE, c’est de vérifier que le mode « Ignore Group » (« ig ») n’est PAS coché. Sinon, ça t’empêchera de modifier les propriétés de tes entités-blocs. C’est le truc qui m’avait donner envie d’abandonner le mapping, à l’époque.
Dans le screen ci-dessous, l’icône « ig » ne doit pas être activée :

Bref, passé cette anecdote qui n’intéresse personne, après avoir vérifier que le mode « Ignore Group » ne soit pas activé, il te suffit de sélectionner l’entité en question, puis de faire « Alt » + « Entrée ». Tu peux aussi double-cliquer sur l’entité, ou faire clic droit puis cliquer sur « Properties ».
La fenêtre « Object Properties »
La fenêtre qui s’est ouverte s’appelle la fenêtre « Object Properties ». C’est cette fenêtre qui te permet de modifier les paramètres de ton entité.
La fenêtre « Objects Properties » a trois onglets :
- «
Class Info» : te permet de choisir le type d’entité que tu veux créer (par exemple, une porte, un bouton…) et de paramétrer ton entité. C’est l’onglet le plus utilisé et utile, et de loin. - «
Flags» : des options à cocher pour donner à ton entité des options spéciales. - «
VisGroup» : rarement utilisé. Ça n’a pas de rapport avec les entités, ça te permet juste de savoir si ton bloc fait partie d’un groupe de blocs (au cas où tu as groupé ensemble plusieurs blocs).
On va rester sur « Class Info ».
Class
Le plus important, c’est la liste « Class ». Ça te permet de choisir le type d’entité que tu veux créer. C’est là que tu choisiras si tu veux créer une porte, un mur, une caisse qu’on peut bouger et casser, un train, un bouton…
Dans mon cas, je veux créer une vitre. Il y a plusieurs moyens d’en faire une, mais pour une vitre incassable, je vais choisir « func_wall ».

Radar
Te permet de définir l’orientation de ton entité. Ce n’est utile que pour certaines entités ou l’orientation a un sens. Dans le cas d’un « func_wall », ça n’a pas de sens de donner une orientation.
Le bouton « SmartEdit »
En général, tu laisseras ce bouton activé. Ça rend la fenêtre plus simple à utiliser, mais dans de rares cas tu auras besoin de la désactiver.
Attributes
En dessous de « Class », tu as les attributs (aussi appelés propriétés ou paramètres) de ton entité. C’est là que tu paramètres ton entité. Tu auras très souvent besoin de modifier au moins quelques attributs pour chaque entité que tu crées.
Tu as plusieurs attributs et à chaque attribut, tu peux mettre une valeur.
Dans mon cas, je veux que mon « func_wall » soit transparent. Pour cela, il faut faire deux choses :
- Dans «
Render Mode», je choisis le mode d’opacité ou de transparence de mon bloc. Par défaut, c’est à «Normal». Pour une vitre, on choisit le mode «Texture». - Dans «
FX Amount (1-255)», on choisit le niveau de transparence de notre bloc, entre 1 et 255.100dans le cas d’une vitre est une bonne valeur.
La vitre est maintenant transparente !

Si ta vitre n’apparaît pas transparente, vérifie que l’option « Transparency of entites » soit bien activée :
