Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Le fait de mettre des NPCs sur une map n'est pas suffisant pour rendre le tout réaliste et utiliser à sa pleine mesure l'intelligence artificielle des NPCs. Donc pour commencer voyons un peu le minimum syndical à faire au niveau d'une map comportant des NPCS.
Dans une map le joueur peut se déplacer sans problèmes car il voit tout ce qui se passe autour de lui (en principe

), mais les NPCs ne voient un mur (ou un trou) que lorsqu'ils le heurte (ou tombent dedans). Il est donc nécessaire de les informer sur la configuration de la carte, on utilise pour cela les
info_node.
Les info_node de base
info_node
L'entité de base indispensable dans une map solo.
Elle permet aux NPC de se repérer dans le niveau. Il faut en placer dans tous les endroits (escalier, rue, etc) où les NPCs pourront aller. La façon dont vous placer vos
info_node sur votre map peut tout changer: il ne faut pas qu'ils soient collés les uns aux autres (ça sert à rien et ça provoque des bugs), ils ne doivent pas non plus être trop éloignés les uns des autres sinon les NPC auront du mal à se déplacer (les citoyens n'arriveront pas à vous suivre).
L'entité se place au niveau du sol (la hauteur n'est pas trop importante, mais éviter de les mettre au plafond

), mais c'est la disposition au sol qui fait que la map peut être très intéressante (les NPCs se déplacent sans problèmes) ou alors complètement ratée (les NPCs ne font que venir vers vous en ligne droite, et ne font plus rien dès qu'ils ne vous voient plus).
info_node_hint

Cette entité n'est pas indispensable dans une map solo mais elle permet d'informer les NPC sur des lieux précis, ce qui rendra les combats plus intenses: pour cela placer un
info_node_hint sur le sol et éditez ses propriétés (Alt+Entrée ou double clic gauche).
Tout d'abord regardons la case
Hint Group, si vous voulez que votre NPC utilise cet
info_node_hint vous devez y inscrire un mot (combine, citoyen, banane, carotte, zozor, etc...), et ce mot vous devez aussi l'inscrire dans la case
Hint Group du NPC pour que celui-ci puisse l'utiliser, (En règle générale on créé 2 Hint Group, combine et citoyen).
Ensuite regardons la case
Hint qui comme vous pouvez le voir peut prendre de nombreuses valeurs, je vais vous expliquer les principales:
Crouch Cover Medium: cela sert à indiquer qu'à cet endroit, le NPC (combine ou citoyen) peut s'abriter derrière quelque chose d'assez haut (un éboulis, une grosse caisse, une poubelle, etc...).Si il passe à proximité, il pourra se mettre à l'abri, il faut en mettre quelques uns pour que les combines vous résistent un peu plus longtemps et que les citoyens s'abritent des tirs de sniper et de mitrailleuses.
Crouch Cover Low: comme précédemment, cela indique que le NPC peut se mettre à l'abri, mais cette fois ci, il s'agenouillera pour s'abriter, on va donc placer cette entité derrière un abri de faible hauteur (un muret, des tonneaux placés par vos soins, etc...).
Enemy Disadvantage Point: le nom vous dit tout mais bon je vais quand même vous l'expliquer

. En entrant cette valeur, le NPC saura qu'en étant à ce point, sa position lui donnera un avantage sur l'ennemi (latéral, par dessus). Mais il ne faut pas en abuser car les NPCs ont la fâcheuse habitude de foncer vers cet
info_node_hint dès qu'ils peuvent en atteindre un.
Entrance / Exit Pinch: cette clef permet d'empêcher
les bouchons sur le periph que les NPCs restent tous coincés dans un passage étroit, ils sauront qu'ils doivent y aller un par un (on en met surtout à l'intérieur des bâtiments au niveau des portes).
Override jump permission: cette fois ci, il faut placer 2
info_node_hint, (un pour le départ et un pour l'arrivée). Cela permet d'informer les NPCs sur le fait qu'ils peuvent sauter d'un point en hauteur (pas trop haut sinon le NPC ne sautera pas ou il se blessera); On en trouve un certain nombre dans les chapitres
Anti citoyen et
Suivez Freeman de HL2.
Les autres info_node
| Info_node | Image | Fonction |
|---|
| Info_node_air |
 |
Il a la même fonction que l'info_node normal, mais il est utilisé par les NPC volants (scanners, hélico, pigeon). |
| Info_node_air_hint |
 |
Il a la même fonction que l'info_node_hint normal, mais il est beaucoup moins utilisé que son équivalent terrestre. |
| Info_node_climb |
 |
Cet info_node est utilisé par les npc_fast_zombie, cela leur indique qu'ils peuvent grimper à cet endroit. |
Bon maintenant que vous savez informer les NPCs sur l'environnement, ce serait bien de les obliger à suivre un chemin prédéfini afin d'animer un peu vos maps, c'est ce que nous allons voir ici. J'ai appelé cette partie patrouille mais on peut faire faire bien d'autres choses à votre NPC avec ce que je vais vous apprendre.
Pour faire suivre un chemin prédéfni à votre NPC, il faut tout d'abord définir (c'est à dire tracer) ce chemin

, on utilise pour cela les
path_corner, ils sont très simple à utiliser: seule deux champs doivent êtres remplis (pour l'instant):
| Key | Value |
|---|
| Name |
nom de l'entité |
| Next Stop Target |
nom de l'entité suivante |
Leur hauteur n'est pas importante pour les NPCs terrestres mais les NPCs aériens eux essayeront d'être le plus proche possible des path_corner, donc là leur hauteur à une importance.
Comme vous pouvez le voir, les
path_corner sont reliés entre eux, ce qui permet de vérifier le chemin du NPC (ici il va tourner en rond), mais il ne faut pas oublier de mettre quelques
info_node pour permettre au NPC de retrouver le
path_corner suivant si il s'écarte du chemin à cause d'obstacles comme le joueur ou autre chose.
Bon maintenant passons à la configuration de notre NPC (je prends un citoyen pour que ça soit plus facile, je vous expliquerai un peu plus tard comment faire avec un ennemi).
Dans l'onglet
Class Info:
| Key | Value |
|---|
| Target Path Corner |
nom du path_corner de destination |
Ca va c'est pas trop dur

, maintenant passons à l'onglet
Flags, vous devez cocher les cases:
- Not Commandable (sinon le NPC vous suivra au lieu de suivre les path_corner)
- Do Alternate collision for this NPC (évite que le joueur ne bloque le NPC)
- Ignore player push (idem)
Chaque fois qu'un NPC passe par un
path_corner celui fait office de
trigger; ça nous ouvre des perspectives, je vais vous en expliquer une: la suppression d'une entité.
Nous sommes dans une ville de votre création, il y a des
npc_strider en patrouille, l'ennui c'est que une fois que ce dernier est arrivé au bout du chemin, il peut faire ce qu'il veut, pour empêcher cela on va le supprimer lorsqu'il arrive au dernier
path_corner grâce à l'onglet
Outputs:
| My output name | Targets entities named | Via this input |
|---|
| OnPass |
strider_1 |
Kill |
Le
npc_strider sera ainsi supprimé de la map, de plus cela permet de soulager un peu le moteur du jeu (moins d'entités à gérer quand il y en a des centaines c'est important).
Contrairement à l'intelligence humaine, l'intelligence artificielle des NPCs montre parfois ses limites lors des déplacements.
Les NPCs peuvent êtres bloqués par des éléments du décor, pour cela on utilise la texture
npcclip:
Cette texture à la propriété de bloquer le NPC, en la plaçant autour des éléments qui seraient amenés à bloquer les NPCs vous empêcherez ces derniers de se bloquer.
Vous voulez un exemple, bon je suis gentil en voici un:
Dans ce couloir (créé à l'arrache rien que pour vous

), ce grillage tordu peut bloquer les NPCs:
On va donc créer un bloc avec le texture
npcclip qui recouvre le bloc de façon à empêcher les NPCs de l'approcher de trop près.
C'est avec ce petit truc qu'on arrive à faire des maps avec des NPCs qui ne sont pas bloqués toutes les 30 secondes par un élément du décor.