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)
Voyons tout d'abord comment faire pour que notre NPC exécute une animation précise à un moment précis.
Pour cela on utilise l'entité
scripted_sequence, qui n'est pas facile à utiliser convenablement mais je vais tenter de vous l'expliquer du mieux que je peux car une fois qu'on la maîtrise, on est capable de réaliser des séquences aussi bien que celle du jeu original.
Pour commencer
Avant toute chose il faut connaître les séquences que notre NPC est capable d'exécuter. Pour cela c'est très simple, il suffit de sélectionner un NPC, d'éditer ses propriétés et de regarder dans l'onglet
Model. On y trouve une liste de toutes les actions que le NPC est capable d'exécuter.
C'est aussi très pratique car certaines séquences (comme Alyx sautant par dessus une rambarde, Mossman appuyant sur un bouton) doivent êtres placées à l'unité près pour éviter des aberrations.
Pour mon tuto je vais prendre le
npc_alyx et lui donner comme nom
alyx (c'est pas original mais c'est simple

).
Explications
Pour le NPC c'est très simple il suffit juste de lui donner un nom, comme ici j'utilise Alyx je mets le champ
Weapons sur
Nothing pour éviter quelques problèmes.
Regardons maintenant en détail l'entité
scripted_sequence:
L'onglet Class Info
- Name: La séquence d'animation doit être déclenchée par un trigger, il faut donc donner un nom à notre scripted_sequence pour pouvoir la déclencher.
- Pitch Yaw Roll:Cela sert à orienter l'animation à 360°.
- Target NPC: On entre dans ce champ le nom du NPC qui doit exécuter la séquence (ici ce sera alyx).
- Pre Action Idle Animation: Attention, cela devient plus difficile. On entre dans ce champ le nom de l'action que le NPC doit exécuter avant que la scripted_sequence ne soit déclenchée par un trigger, cette animation est répétée en boucle jusqu'au déclenchement de la scripted_sequence, souvent c'est une animation où le NPC est immobile, assis ou toute autre animation qui peut se répéter en boucle.
- Entry Animation: Nous y voilà, la scripted_sequence a été déclenchée par un trigger, avant d'effectuer l'animation principale, le NPC peut exécuter une courte animation pour faire la transition entre l'animation précédente et l'animation principale.
- Action Animation: Comme vous l'avez deviné, on entre ici le nom de l'action principale que va exécuter notre NPC.
- Post Action Idle Animation:Une fois que notre NPC a fini d'exécuter l'animation principale, il peut à la suite de celle ci en exécuter une autre, toujours pour faire la transition avec une autre animation.
- Custom Move Animation:On y inscrit le nom d'une animation qui permet au NPC de se rendre à la scripted_sequence d'une manière spéciale (en marchant à reculons, accroupis, etc), je vais vous l'expliquer plus en détail par la suite.
- Loop Action Animation ?: On l'utilise pour faire en sorte que l'animation principale soit répétée en boucle jusqu'à l'interruption de cette dernière par un trigger (ne vous inquiétez pas je vais y revenir plus en détail après
)
- Move to position: Hammer nous propose là plusieurs choix, c'est la façon dont l'entité va se déplacer pour aller exécuter son animation:
- No: Le NPC va exécuter l'animation à l'endroit où il se trouve, mais attention la scripted_sequence ne doit pas se trouver trop loin sinon ça risque de bugger.
- Walk: Le NPC va tout simplement marcher jusqu'à la scripted_sequence puis y exécuter l'animation.
- Run: Pareil simplement que cette fois ci il va courir.
- Custom mouvement: Il va utiliser une autre façon pour se déplacer (j'y reviendrai plus en détail après).
- Instantaneous: Au chargement de la map, il va être téléporté à la scripted_sequence, c'est pour cela que lorsque le niveau se charge, le joueur doit en voir le moins possible.
- No - Turn to Face: le NPC va exécuter son animation là où il est mais en regardant en direction du joueur.
- Next Script: on y entre (optionnel) le nom de la prochaine scripted_sequence à exécuter.
Ce n'est pas obligé de remplir tous les champs, seuls certains sont importants, d'autres sont utilisés de manière exceptionnelle.
L'onglet Flags
- Repeatable: Cela permettra à un autre NPC d'exécuter cette scripted_sequence.
- Start on Spawn: Au chargement de la map, le NPC va se rendre à la scripted_sequence (utilisez le champ Move to Position pour choir la manière dont il va s'y rendre) et exécuter l'animation que vous avez inscrite dans le champ Pre Action Idle Animation une seule fois.
- No Interruptions: Le NPC exécutera son animation et rien ne pourra le déranger pendant qu'il l'exécute, même si il se fait tirer dessus.
- Override AI: Permet de désactiver l'intelligence artificielle des NPCs lors de l'animation, on s'en sert lorsque le NPC refuse d'exécuter une animation pour une raison quelconque (risque d'être tué, bloc qui le gène, etc...).
- No script Movement: Le NPC n'aura pas de mouvements a exécuter avec cette scripted_sequence, il se déplacera juste vers cette entité.
- Loop in Post: En cochant cette option, le NPC répètera en boucle l'animation que vous avez inscrit dans le champ Pre Action Idle Animation jusqu'à ce que la scripted_sequence soit déclenchée par un trigger.
- Priority Script: Le NPC finira d'exécuter l'animation même si un autre évènement (script, condition, trigger) lui demande de faire autre chose.
Les Flags doivent êtres utilisés en complément: par exemple si vous voulez qu'un NPC soit assis puis qu'il exécute une autre animation au moment ou vous déclenchez un trigger, il faut mettre dans le champ
Pre Action Idle Animation et cocher les Flags
Start on Spawn et
Loop in Post Idle. Avec cela il sera assis en continu jusqu'à ce que la
scripted sequence soit déclenchée.
Exercice
C'est ce que j'appelle un exercice guidé, je vous dis comment faire étape par étape pour voir si vous avez bien compris.
Alyx est sur un bloc de 64 de hauteur (vous allez comprendre pourquoi), elle vous aperçoit,elle va alors vers une rambarde au bord de ce bloque, saute par dessus et une fois arrivé en bas nous fait une jolie pirouette
Pourquoi le bloc sur lequel se trouve Alyx doit il avoir une hauteur de 64 ?
Tout simplement parce que lorsqu'un NPC exécute une
scripted_sequence, il ne tient pas compte de l'environnement autour de lui (il traverse le plancher, les autres NPCs, etc) et l'animation que vous allez utiliser
jumpdownsm est configuré de telle sorte qu'Alyx saute et retombe 64 unités plus bas.
J'ai trouvé l'animation jumpdownsm, mais comment je fais pour savoir où placer exactement ma scripted_sequence ?
C'est simple prends ton NPC, lorsque tu es dans l'onglet
Model, le NPC exécute en boucle l'animation que tu as choisie, cela te permet de placer à l'unité près le NPC pour qu'il soit en phase avec l'environnement. Voilà ce que ça donne avec Alyx qui saute par dessus la balustrade:
Maintenant que l'on sait où doit se placer le NPC pour exécuter son animation, il suffit de placer la
scripted_sequence de façon à ce qu'elle soit centré sur le NPC et
collée sur le sol. Si je mets le mot collée en rouge et en gros c'est important, si la
scripted_sequence n'est pas sur le sol, le NPC va bien exécuter son animation mais il aura l'impression de flotter en l'air. Voilà ce que ça donne avec Alyx:
Vue de dessus: la
scripted_sequence et Alyx sont alignées.
Vue latérale: la
scripted_sequence est collée au sol.
Maintenant configurons la
scripted_sequence:
| Champ | Valeur | Explications |
|---|
| Name |
sautalyx |
On lui donne un nom afin de pouvoir la déclencher par un trigger. |
| Target NPC |
alyx |
On a donné au npc_alyx le nom d'alyx. |
| Action Animation |
jumpdownsm |
C'est de nom de l'animation que le npc_alyx va exécuter. |
| Post Action Idle Animation |
FlipLeft |
C'est le nom de l'animation que va exécuter le NPC après l'action principale (ici une roulade vers la gauche). |
| Move To Position |
Walk |
Le NPC va marcher pour se rendre à la scripted sequence afin d'exécuter l'animation. |
Il ne reste plus qu'à configurer un
trigger_once et le tour est joué:
| My output named | Targets entities named | Via this input |
|---|
| ON Trigger |
sautalyx |
Begin Sequence |
Et voilà maintenant vous savez utiliser les
scipted_sequence comme il faut mais on peut en faire plus.
Pour en faire plus
Vous avez essayé des combinaisons d'animations et vous commencez à arriver à faire quelque chose de potable, mais comme vous l'avez sûrement vu, votre NPC est capable de faire un grand nombre d'animations.
Tout d'abord vous voyez que pour certaines animations de votre NPC est tout cassé

, c'est normal car ces animations là sont utilisées en complément des animations principales (les doigts, les lèvres et d'autres membres qui bougent), ils ne faut donc pas les utiliser.
On peut aussi faire en sorte que votre NPC se rende à la
scripted_sequence d'une façon non conventionnelle: pour cela il faut mettre dans le champ
Custom Move Animation le nom d'une animation qui permet au NPC de se déplacer d'une certaine manière (Crouch_walk_all ;accroupi, run_protected_all; court en se protégeant la tête).
Mais le meilleur c'est qu'on peut aussi faire parler les NPCs, on va voir ça tout de suite.
Si vous êtes encore vivant après cette longue et difficile partie sur les
scripted_sequence vous allez pouvoir vous reposer avec l'entité
logic_choreographed_scene 
.
Sa configuration est à la fois très simple et très compliquée:
- Name: Comme toujours on lui donne un nom pour pouvoir l'activer par un trigger.
- Scene File: On y entre le nom de la scène qu'on veut faire jouer à notre NPC.
- Target 1: On y entre le nom du NPC qui doit jouer la scène.
- Target 2: On y entre le nom d'un deuxième NPC qui participe à la scène.
Si je dis que la configuration est très compliquée, c'est parce que pour avoir un aperçu des paroles contenues dans un fichier VCD, il y a pas 36 solutions: il faut utiliser le logiciel
Face Poser qui est dans le SDK. Si il n'y a pas besoin de le configurer (Steam le fait automatiquement

), il est un peut plus dur à utiliser.
Je ne vais pas vous faire un tuto sur son utilisation (enfin pas tout de suite

)mais juste vous apprendre à l'utiliser pour choisir les paroles qu'il vous faut.
Tout d'abord dans le SDK de Steam cliquez sur
Face Poser:
Il s'ouvre et vous voyez une mosaïque de fenêtres ; vous sauvez pas

c'est pas si compliqué

que ça.
En fait les fichiers VCD sont composés:
- Des paroles du NPC
- De l'animation du visage du NPC
- De l'animation du corps du NPC
Euh

j'ai pas tout compris là.
C'est normal

, en fait la grande force de Half Life 2, c'est la synchronisation des lèvres du NPC avec les paroles

. Bon on va faire un essai pour vous montrez comment le logiciel marche:
Tout d'abord il nous faut un modèle: on va prendre Barney, pour cela il faut faire
File puis
Load Model et cliquer sur
Barney.jpg pour charger le modèle.
Ensuite il nous faut charger une scène, pour cela allez dans
Choregraphy puis
Load et choisissez la scène
sdk_barney1.
Ensuite cliquez sur le bouton lecture et vous voyez et entendez Barney parler d'une histoire de bière (hommage à Half Life 1).
Voilà comment utiliser le logiciel à votre niveau, il est assez simple pour cette action mais vous devez déjà vous poser la question:
Je n'ai le choix qu'entre 6 chorégraphies, mais où sont les autres ?
Elles sont dans le fichier
half-life 2 content.gcf, il va nous falloir les extraire de ce fichier pour pouvoir les utiliser avec le logiciel
Face Poser et pour cela il va falloir télécharger le logiciel
GCFScape.
Pour utiliser ce logiciel Steam doit être éteint.
Une fois le logiciel installé faites Files puis Open et aller dans le répertoire où se trouve le fichier
half-life 2 content.gcf qui est par défaut:
Code : Autre1
| C:\Program Files\Valve\Steam\SteamApps |
Ensuite (après l'avoir ouvert) faites un clic droit sur le dossier
scenes puis
Extract et choisissez un répertoire de destination. Maintenant vous pouvez choisir n'importe quelle scène et la faire jouer par le logiciel
Face Poser 
.