J'ai déjà vaguement parlé des entités, mais je n'ai pas été très bavard. Voici pour moi l'occasion de me racheter .
On distingue tout d'abord 2 types d'entités :
Les entités-point
Les entités-bloc
Les entités-point, comme leur nom l'indique, sont un point de l'espace. Ce point de l'espace possède une fonction bien précise. Par exemple, l'entité appelée light est une « ampoule ». C'est de ce point là que démarrera une source lumineuse.
Les entités-point sont très nombreuses. On y trouve par exemple :
Le point de départ d'un joueur
Une arme posée par terre
Une source sonore (du son est diffusé à partir de cette entité)
Un personnage
Les models
...
Pour insérer une entité, c'est très simple : cliquez sur l'outil
. Allez maintenant dans la liste déroulante Objects du petit panneau Objects, et sélectionnez light dans ladite liste.
Il ne vous reste plus qu'à la créer, comme un bloc. Vous cliquez dans une des vues 2D et vous cliquez droit puis validez Create object.
Dans votre vue 3D, vous avez maintenant une jolie petite ampoule.
Les entités-bloc sont comme les entités-point, mais elles possèdent un volume. C'est un bloc qui est devenu une entité. Ce type d'entité sert par exemple à définir un espace, une zone dans laquelle il se passera quelque chose. C'est le cas des zones d'achat de CS. Toute la zone est un bloc dans lequel les joueurs peuvent acheter, s'ils s'y trouvent. Une porte peut être une entité-bloc. Elle aura alors des paramètres qui feront que si le joueur se trouve tout près, elle s'ouvrira.
Pour créer une entité-bloc, rien de plus simple : créez un bloc et sélectionnez-le. Dans le panneau vu précédemment, cliquez sur ToEntity. Pour supprimer le caractère d'entité d'un bloc, il suffit de cliquer sur ToWorld.
Une fenêtre s'ouvre alors, et la liste déroulante Class vous permet de définir l'entité créée. Je vous parlais des zones d'achat de CS. Dans ce cas, c'est func_buyzone.
Généralement, les entités-bloc dans lesquelles le joueur peut rentrer (entités-bloc invisibles) sont texturées avec la texture tools/toolstrigger.
Ce qui fait l'entité c'est avant tout ses paramètres. Sélectionnez une entité dans votre fenêtre 3D et faites Alt+Enter (ou clic droit > Proprieties dans une des vues 2D). Une fenêtre comme cela s'ouvre :
Il y a 5 onglets principaux :
Class info
Outputs
Inputs
Flags
VisGroup
L'onglet Class Info est très important. C'est sous celui-ci que se trouvent les paramètres (ou les attributs) généraux de l'entité sélectionnée. Tous ces paramètres sont dans la zone Keyvalues.
Vous avez la possibilité de modifier tous ces attributs. Pour cela, cliquez sur l'un d'eux. La valeur de l'attribut est alors affichée dans la zone de droite, juste au dessus de la zone Help.
Par exemple, cliquez sur Brightness (qui veut dire Luminosité en français). La valeur de cet attribut est alors affichée dans le champ de saisie à droite, et un bouton appelé Pick Color (Choisir la Couleur) est apparu. Vous pouvez cliquer dessus, et vous pourrez alors choisir la couleur qu'aura votre lumière . Il en va plus ou moins de la même façon pour tous les autres attributs.
Le petit radar ainsi que la zone de saisie Angles permettent de définir l'orientation de l'entité. Cette fonction n'est pas active dans le cas d'une entité de classe light. Par contre, vous pouvez passer la classe (champ Class) en light_spot, et dans ce cas, vous aurez la possibilité de définir l'orientation.
Bien sûr, nous reviendrons sur les paramètres de chaque entité dans les parties suivantes. Ici, c'est juste pour vous montrer comment ça fonctionne.
Passez sous l'onglet Flags. Sous cet onglet sont présent d'autres paramètres, mais ce sont seulement des paramètres booléens (coché ou non). Dans le cas de notre light, il n'y a qu'un paramètre : Initialy Dark. Si ce flag est coché, la lampe sera éteinte, jusqu'à ce qu'on l'allume (ce que nous verrons plus tard).
Les outputs et les inputs servent en quelque sorte à faire communiquer plusieurs entités entre elles. C’est ce qui va nous servir à créer des boutons qui allument une lampe, qui provoquent un bombardement, et plein d’autres choses marrantes .
Au début, ça me paraissait très obscur, je ne pigeais pas bien comment les utiliser. Je ne comprenais pas ce que venaient faire les inputs, et c’est pour cela que je ne vous parlerai pas beaucoup ce ces inputs (du moins au début), car seul les outputs suffisent pour vous expliquer comment ça marche.
Un output est une sorte de commande qui va servir à appeler une autre entité. Par exemple, si un joueur passe dans une certaine zone, il y a un tremblement de terre. Dans ce cas, quand le joueur sera dans la zone, l’entité-bloc (la zone donc) va appeler l’entité qui se chargera de créer un tremblement de terre. C’est ce qu’on appelle l’output.
Je vais vous montrer de quoi se compose un output.
Allez sous l’onglet Outputs.
La grande zone blanche montre tous les outputs créés. Vous n’en avez aucun, bien évidemment. Pour créer un nouvel output, il faut cliquer sur Add.
Les champs de saisie auparavant grisés vont s’activer. Il va falloir les remplir.
My output named : c’est le nom de l’output. C’est en fait un événement qui déclenchera l’output. Suivant l’entité sur laquelle vous créez un output, la liste que Hammer vous propose est différente. Si vous connaissez, c’est quelque chose de semblable aux événements Javascript (onclick, onmouseover…)).
Targets entities named : c’est le nom de l’entité qui sera appelée par l’output. Le nom d’une entité se définit dans son paramètre Name.
Via this input : c’est ce qui se passera au niveau de l’entité qui sera appelée. Par exemple, une lumière (light) peut soit s’allumer soit s’éteindre.
With a parameter override of : c'est un paramètre additionnel. On laissera généralement ce champ vide (sur <none> . Nous l'utiliserons lors de la création d'outputs plus complexes.
After a delay in seconds of : c’est le temps avant que l’output ne soit déclenché. Si le champ vaut 0 (0.00), alors l’output est déclenché instantanément.
Ca, c’est de la théorie. Vous comprendrez mieux comment utiliser ces fameux outputs dans les mini-tutos suivants.
Voici un exemple d’output :
OnStartTouch, (dès que l'entité-bloc est touchée), elle appelle l’entité dont le nom est boumfaitlabombe, et lui dit qu’elle doit exploser (Explode) après 3 secondes.
Par la suite, dès que nous allons rencontrer une nouvelle entité, je vous donnerai, dans un tableau, son nom, son type et un résumé de son utilité. Le nom sera un lien vers le Wiki officiel de Valve, où vous pourrez trouver des informations plus complètes sur l’entité en question. Ces informations seront en anglais, mais ont comme principale utilité de lister tous les outputs et tous les inputs de l’entité, car je ne le ferai pas à chaque fois (bien trop long ou inutile).