Aller au menu - Aller au contenu

Icône Moyens de transport

Mise à jour : 22/07/2009
1 414 visites depuis 7 jours, dont 12 sur ce chapitre classé 94/786
Si vous faites une grande map, vous aurez peut-être envie d'offrir un moyen de transport au joueur (c'est tellement pratique !). Bon, le problème c'est qu'il n'y a pas 36 véhicules différents disponibles dans Half-Life. Voilà ceux que j'ai répertoriés :

  • Les trains
  • Les voitures (uniquement sous Counter-Strike)
  • Les tapis roulants

Voilà, c'est peu mais vous verrez qu'avec ça vous pouvez faire pas mal de choses, étant donné que c'est à vous de modéliser votre engin (camion, voiture de course, petit train etc etc...). Laissez libre cours à votre imagination !

Bon, par contre ces entités sont un peu difficiles à utiliser, mais si vous suivez bien ce que je vous dis dans l'ordre, vous ne devriez sentir aucune douleur ;)
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Les trains

Entités concernées : func_tracktrain, func_traincontrols, path_track
Type d'entité : toutes des entités-bloc, sauf le path_track (entité-point)
Difficulté : plutôt difficile

Les trains sont un peu difficiles à configurer, en effet. En fait, il existe plusieurs sortes de trains. Nous verrons ici le plus standard de tous. Pour les autres trains, je vous en parlerai brièvement mais sachez déjà que le fonctionnement est quasiment identique.

Le mot "train" ne doit pas vous rebuter. Ok c'est un train comme celui que l'on rencontre dans Half-Life, mais vous n'êtes pas obligés de faire le même véhicule ! Vous pouvez créer un véhicule avec la forme que vous voulez, aussi complexe que vous le désirez !
La particularité du train, c'est qu'il doit suivre un chemin bien précis (des rails par exemple). Le joueur ne peut donc pas aller où il veut dans la map.
Si vous faites une map pour Counter-Strike, nous verrons qu'il est possible de créer une voiture "libre" que l'on peut conduire où l'on veut !
En fait, la première chose à faire serait de créer le train avec des blocs. Commencez donc par ça ! A vous de voir la forme que vous voulez lui donner.
En ce qui me concerne, je vais en faire un assez simplet comme dans Half-Life, mais libre à vous de faire ce que vous voulez !

Voilà ce que ça donne en 2 minutes (c'est la chose la plus immonde que j'aie jamais faite) :

Image utilisateur

Horrible non ? ;)
Bon peu importe, c'est pour l'exemple.

Ceci constitue donc la charpente de votre train. Ne faites pas comme moi : appliquez-vous, pour que ça ait plus l'air d'un train que d'un Lego®
Et si je veux mettre une autre entité qui se déplace en même temps que le train, comme une mitraillette ?
Hélas, ne cherchez pas à le faire, c'est impossible ! Half-Life ne permet pas de déplacer d'autres entités en même temps que le train.
Ceux qui font du mapping pour Day of Defeat ont par contre la possibilité de le faire, grâce au système "Spirit" inclus dans Dod (j'en reparlerai dans les entités de Dod).

Bon, que faire ensuite ? Il faut créer le bloc ORIGIN de votre train. Eh oui, ces fameux blocs ORIGIN vous poursuivent jusqu'ici ! Je vous rappelle pour info qu'ils permettent à Half-Life de connaître le centre de gravité de votre objet.
Ici, il faudra placer le bloc ORIGIN le plus au centre possible de votre train, comme ceci :

Image utilisateur

Sélectionnez ensuite TOUS les blocs que vous avez utilisés pour le train, dont le bloc ORIGIN. Cliquez sur "toEntity" et choisissez l'entité func_tracktrain.

Voici les propriétés intéressantes à retenir :
  • Name : ultra-important, c'est le nom de votre train (ex : "montrain"). Ce nom permettra à Half-Life d'identifier votre train.
  • Global Entity Name : si votre train doit fonctionner sur plusieurs maps (pour une aventure solo), donnez ici un nom à votre train. Ce nom doit être unique dans toutes les maps.
  • First stop target : nom du premier arrêt (c'est le nom d'une entité path_track). C'est à partir de là que ça se corse, je vous expliquerai le fonctionnement plus bas. Pour l'instant, mettez "path1".
  • Sound : son produit par le train en déplacement.
  • Distance between the wheels : distance en unités de Worldcraft séparant les roues avant et arrière de votre train. Half-Life saura ainsi faire tourner le train.
    Ne vous prenez pas la tête et mettez la longueur de votre train : ça marchera sans problème !
  • Pour connaître la longueur de votre train, sélectionnez-le et lisez ce qui est écrit en bas de l'écran, dans la barre d'informations.
    Exemple : "176w 256l 82h". Le train a donc une longueur de 256 unités !
  • Height above track : distance en hauteur séparant le centre du train (son bloc ORIGIN) et les rails. Si vous avez bien placé votre train sur les rails, alors mettez une valeur de 0.
  • Initial speed : vitesse initiale du train (en unités de Worldcraft par seconde). Si vous mettez une valeur supérieure à 0, alors on aura l'impression que le train accélère petit à petit, jusqu'à sa vitesse maximale.
  • Speed (units per second) : vitesse du train, en unités de Worldcraft par seconde.
  • Damage on crush : si quelqu'un se fait écraser par le train, indiquez ici le nombre de points de vie qu'il perdra (0 = pas de bobo).
  • Volume (10 = loudest) : volume du son. Mettez une valeur entre 0 et 10, sachant que 10 est la valeur la plus élevée.
  • Bank angle on turns : angle de rotation du train lors d'un virage. Les virages ne sont pas très difficiles à mettre en place, et souvent si on laisse la valeur de 0 ça marche très bien !
Cette entité possède 3 flags :
  • No Pitch (X-rot) : il n'y aura pas de tangage du train (ne cochez pas, ça fait plus réaliste comme ça :)
  • No user control : le joueur ne peut pas prendre le contrôle du train. Dans ce cas, le train est activé tout seul par un trigger.
  • Passable : le train traversera les joueurs et les entités. Ce sera un train "fantôme" : on peut le voir mais pas le toucher. Il est rare que l'on se serve de ce flag quand même ;)
Ensuite (car hélas on n'a pas encore fini), il va falloir orienter le train. Parce qu'il y a 90% de chances que votre train soit dans le mauvais sens lorsque vous jouerez sur votre map, même si vous croyez l'avoir mis dans le bon sens !

Pour ce faire, sélectionnez le train et allez dans le menu Tools/Transform (Ctrl + M). Faites faire à votre train une rotation sur l'axe des Z (90 °, 180 ° ou 270 °).
Chaque cas est particulier donc je ne peux pas vous dire de quelle valeur faire tourner votre train. Faites plusieurs essais jusqu'à ce que le train soit dans le bon sens, c'est tout ;)

Ensuite, il va falloir créer un point où l'on pourra contrôler votre train (le faire avancer, reculer etc...). Ce sera le point de commande de votre train.
Créez un bloc AAATRIGGER, que vous transformerez en entité func_traincontrols. Placez ce bloc là où le joueur est censé prendre le contrôle du train.
Cette entité possède juste un attribut : "Train Name". Indiquez-y le nom de votre train.

Ce qui doit donner :

Image utilisateur

Vous remarquerez que le train a changé d'orientation, pour que dans Half-Life il soit correctement positionné.
Les contrôles du train sont situés juste devant les manettes de gaz (logique).

Le parcours du train



Maintenant que le train est en place, il vous reste à définir son trajet.
En effet je vous le rappelle, un train doit suivre un parcours bien précis (comme des rails). Eh bien c'est le moment de s'en occuper !

Pour indiquer le parcours, on place à plusieurs endroits des entités-point nommées path_track. Le train traversera chaque path_track dans l'ordre que vous aurez défini.


Pour commencez, placez un premier path_track juste devant le bloc ORIGIN, à la même hauteur que celui-ci :

Image utilisateur

Le path_track est en violet, et se trouve à la même hauteur que le bloc ORIGIN.
Je vous rappelle que le champ "First stop target" des propriétés du train doit avoir la valeur "path1".

Il va maintenant falloir éditer les propriétés du path_track :
  • Name : nom du path_track. Il est TRES IMPORTANT de nommer ses path_track intelligemment, parce qu'il va y en avoir plusieurs. Je vous recommande par exemple d'appeler le premier "path1", le second "path2", le troisième "path3" etc...
  • Next stop target : nom du prochain path_track où le train doit aller. Ca lui indique sa prochaine destination.
Les 2 entités ci-dessus suffisent amplement pour faire fonctionner les path_track. Voici toutefois la description des autres attributs :
  • Fire on pass : nom d'une entité à déclencher lors du passage du train.
  • Branch path : point de passage secondaire (si votre train utilise des changements de voies).
  • Fire on dead end : nom d'une entité à déclencher si ce path_track est situé à la fin de la voie (par exemple une voix qui dit : "Terminus, tout le monde descend !" ;)
  • New train speed : nouvelle vitesse du train, si vous voulez qu'il accélère ou ralentisse à partir de là.
Les flags sont les suivants :
  • Disabled : le train ne peut pas se rendre à ce point tant que l'entité n'a pas été activée.
  • Fire once : l'entité est désactivée une fois que le train est passé par là.
  • Branch reverse : inversion des changements de voies.
  • Disable train : le train s'arrête lorsqu'il arrive à ce point.
Voilà, vous devrez placer des path_track à tous les endroits où votre train doit tourner. Surtout, veillez bien à ce que toutes ces entités soient à la même hauteur !
Voici le fonctionnement des path_track :
  • Premier path_track : Name = "path1", Next stop target = "path2"
  • Deuxième path_track : Name = "path2", Next stop target = "path3"
  • Troisième path_track : Name = "path3", Next stop target = "path4"
  • etc etc...
Enfin, voici un dernier petit exemple pour illustrer le tout :

Image utilisateur

Comme vous pouvez le voir, je n'ai placé des path_track que lorsque c'était nécessaire (aux virages). Il est inutile de mettre 36 points de passages au milieu d'une ligne droite : 2 suffisent, 1 à chaque bout !

Autres entités utiles



Bon, je crois vous avoir pratiquement tout dit sur les trains, je ne vais donc pas m'y attarder éternellement. Toutefois, je vous indique quand même qu'il existe d'autres entités qui peuvent vous être utiles :
  • func_trackchange : changement de voie pour un train, pour le faire monter d'un étage par exemple.
  • func_trackautochange : changement automatique de voie pour un train. C'est la même chose qu'un ascenseur rotatif en fait.
  • func_train : pourquoi je n'ai pas parlé de cette entité en premier ? Parce que c'est la même chose pratiquement que le func_tracktrain, à part que ça utilise des path_corner au lieu des path_track. Mieux vaut utiliser un func_tracktrain à mon goût, enfin bon c'est vous qui voyez ;)


Pour conclure, je dirais qu'un train est un peu compliqué à mettre en place la première fois, mais que le jeu en vaut la chandelle. Après, c'est 100% de régal : on peut fragger des aliens sur son train en fonçant dans le tas ! BOURRIIIINN !!!!!!

Les voitures de CS

Entités concernées : func_vehicle, func_vehiclecontrols
Type d'entités : entités-bloc
Difficulté : assez difficile

Les voitures ont été introduites avec Counter-Strike, et par conséquent elles ne fonctionnent que sous ce mod. En d'autres termes, il faut faire une map pour CS pour pouvoir profiter des voitures !

Mais qu'est-ce que j'appelle une voiture ? Si vous avez lu mon explication sur les trains (juste au-dessus), vous avez retenu une chose assez gênante : le train est obligé de suivre un rail, un chemin précis.
Une voiture fonctionne pratiquement comme un train, sauf que cette fois... vous pouvez aller où vous voulez sur votre map !

Certains se souviennent peut-être du tank qui était dans cs_siege dans les premières versions de Counter-Strike... eh bien c'était ça ! Une voiture !
En plus, il y avait de la place dans le tank pour que d'autres potes en profitent : vous au volant, les autres assis derrière et attendant votre go ! Je vous laisse imaginer les possibilités !
Notez que les développeurs de CS semblent avoir abandonné les voitures. En clair, vous pouvez toujours faire des maps avec des voitures, mais vous ne verrez aucune map officielle avec des voitures.
Bon ! Commençons :)

Pour mon exemple, je vais recréer l'univers de la route 66. Avec des blocs donc, je crée une route américaine, et je mets du sky autour (il ne s'agit pas de faire une vraie map, donc on va pas se prendre la tête).
Ensuite, et c'est le plus important : je crée... la moto ! Une Harley-Davidson, ça va de soi ;)
Rappelez-vous que vous n'êtes pas obligés de faire une "voiture". Ici par exemple je fais un moto, mais vous pouvez faire un tank, un bus, une ambulance, une trotinette à moteur... :p
Passez un temps important à modéliser votre engin, pour que ça ait l'air de quelque chose de potable. Voici ma Harley :

Image utilisateur

Deuxième étape : le bloc ORIGIN. Là encore, vous allez devoir placer un bloc ayant la texture ORIGIN au centre de gravité de votre voiture.
En gros, ça correspond au milieu de votre voiture (bien au centre). Voyez où je l'ai placé sur ma Harley :

Image utilisateur

Sélectionnez le tout (voiture + bloc ORIGIN), et cliquez sur "toEntity". Dans la fenêtre qui s'ouvre, choisissez l'entité func_vehicle.

Les propriétés à éditer son quasiment les même que pour un train :
  • Name : c'est le nom de votre voiture. Exemple : "moto".
  • First stop target : normalement c'est pour les path_track, mais ne vous en servez pas ici. Indiquez juste le nom de votre voiture ça suffira ! Par exemple, je mettrai ici "moto".
  • Sound : son produit par la voiture en déplacement.
  • Length of vehicle : longueur de la voiture en unités de Worldcraft.
  • Pour connaître la longueur de votre voiture, sélectionnez-la et lisez ce qui est écrit en bas de l'écran, dans la barre d'informations.
    Exemple : "44w 128l 54h". La moto a donc une longueur de 128 unités, et une largeur de 44 unités !
  • Width of vehicle : largeur de la voiture en unités de Worldcraft. Vous savez désormais retrouver la largeur de votre voiture, je viens de vous l'expliquer ;)
  • Height above track : distance en hauteur séparant le centre de la voiture (son bloc ORIGIN) et les path_track. Vous pouvez mettre 0, étant donné que nous allons placer la voiture et les path_track à la même hauteur.
  • Initial speed : vitesse initiale de la voiture (en unités de Worldcraft par seconde).
  • Speed (units per second) : vitesse de la voiture, en unités de Worldcraft par seconde. Je vous conseille d'augmenter la valeur par défaut, parce que c'est assez lent sinon. Mettez au moins 200...
  • Damage on crush : si quelqu'un se fait écraser par la voiture, indiquez ici le nombre de points de vie qu'il perdra (0 = pas de bobo).
  • Attention : il semble que la voiture écrase indifféremment ennemis, amis et hotages !!! Vérifiez ce qui se passe si un de vos alliés passe sous les roues ;)
  • Volume (10 = loudest) : volume du son. Mettez une valeur entre 0 et 10, sachant que 10 est la valeur la plus élevée.
  • Bank angle on turns : angle de rotation de la voiture lors d'un virage. Laissez la valeur de 0, ça marche très bien !
Cette entité possède 3 flags :
  • No Pitch (X-rot) : il n'y aura pas de tangage de la voiture.
  • No user control : le joueur ne peut pas prendre le contrôle de la voiture.
  • Passable : la voiture devient "fantôme". C'est-à-dire qu'elle traverse tous les joueurs sans exception, et sans les blesser.
Etape suivante : orientation de la voiture. Ici, il semble que ma moto est dans le bon sens de la route... pourtant, allez savoir pourquoi, lorsque vous jouerez Half-Life va vous la placer dans n'importe quel autre sens que celui que vous voulez.
Si jamais c'est le cas, alors c'est très simple : allez dans le menu Tools/Transform (Ctrl + M), et faites une rotation de 90° sur l'axe des Z. Testez votre map, et si ce n'est pas bon recommencez l'opération : rotation de 90° etc... Jusqu'à ce que la voiture soit enfin dans le bon sens. Ouf ! :)

Bien, maintenant il faut placer le point de commande de votre véhicule. En clair, vous allez dire à Half-Life où se trouve le volant de votre voiture (ici le guidon de ma moto).
Créez un bloc avec la texture AAATRIGGER là où vous voulez qu'on puisse prendre contrôle du véhicule, et transformez-le en entité func_vehiclecontrols.
Dans sa propriété "Vehicle Name", mettez le nom de la voiture qu'il commande.

Image utilisateur

Vous pouvez voir deux nouvelles choses ci-dessus : l'orientation de la voiture a changé (ainsi elle sera placée dans le sens de la route lorsque je jouerai), et le bloc AAATRIGGER est placé devant le guidon pour que je puisse contrôler ma Harley.

Oufff ! C'est tout bon, on s'arrête là. Vous avez une voiture qui marche !!! Et moi, je vais aller faire un petit tour sur ma moto...

Image utilisateur

Les sons joués sont vraiment sympas, surtout quand on freine brusquement ;)
Pour faire avancer votre moto, vous devez laisser enfoncée la toucher "Avancer" (celle que vous utilisez lorsque vous faites marcher votre personnage tout droit).

Des heures de délire en perspective :)
Les voitures peuvent modifier complètement la stratégie d'une map et peuvent être très intéressantes, le tout est d'être arrivé jusqu'au bout de ce chapitre vivant ;)

Les tapis roulants

Entité concernée : func_conveyor
Type d'entité : entité-bloc
Difficulté : assez facile

J'ai décidé de terminer ce chapitre sur les moyens de transport par... les tapis roulants ! Pour deux raisons : d'abord parce que c'est un moyen de transport, même si ce n'est pas très pratique, et ensuite pour vous permettre de souffler après un chapitre assez difficile, je le reconnais.
Donc, ne vous en faites pas, les tapis roulants sont très faciles à mettre en place, comparés aux trains ou aux voitures ;)
Même si cette entité est faite au départ pour les tapis roulants, vous pouvez sans problème vous en servir pour simuler un cours d'eau !
Pour commencer, il va falloir créer le tapis roulant. Là encore, rien de plus facile ! Il faut juste savoir que les textures appropriées se nomment C2A4_CONV1, C2A4_CONV2 et SCROLL_CONV3.
Voici ce que vous devriez voir si vous vous êtes bien débrouillés :

Image utilisateur

Transformez ce bloc en entité func_conveyor.
La première chose très importante, c'est l'orientation de l'entité. Cela vous permettra de définir dans quel sens le tapis roulant doit vous déplacer.
L'orientation est tellement importante que je vais vous expliquer exactement comment ça fonctionne. C'est valable pour l'orientation de toutes les entités, alors écoutez bien.

Il faut regarder la vue Top, et en même temps le "radar" de la fenêtre des propriétés. Comment orienter le radar pour que notre entité soit orientée vers le haut de la vue Top ?
Eh bien il suffit d'orienter le radar vers le haut !
Si on superpose ces deux éléments, on obtient ceci :

Image utilisateur

Ici, notre tapis roulant (vu de haut) se déplacera vers la droite. Si on voulait qu'il se déplace vers la gauche, il faudrait orienter le radar dans l'autre sens ! C'est tout bête :)

Bon, maintenant que vous savez cela, vous devriez éditer les propriétés du func_conveyor. Mais bon, comme vous les connaissez toutes et qu'ici elles n'ont vraiment aucun intérêt (même Name ne sert pas), je ne vais pas vous en parler... ah si, il y en a quand même une qui peut être utile :
  • Conveyor Speed : c'est la vitesse du tapis roulant, en unités de Worldcraft par seconde. La vitesse de 100 proposée par défaut est tout à fait correcte pour les tapis roulant.
En revanche, je trouve les 2 flags intéressants :
  • No Push : l'entité ne déplacera pas le joueur. Par contre, elle continuera à simuler un mouvement. Par exemple : le tapis roulant continuera à avancer, mais si vous marchez dessus vous n'avancerez pas avec lui).
  • Not Solid : le tapis roulant est visible mais pas solide. On passe donc à travers. Toutefois, il continue à pousser le joueur comme si de rien n'était.
C'était un chapitre assez difficile, mais que voulez-vous, il faut bien un peu de difficulté quand on commence à faire des choses intéressantes.

Bon je vous laisse, y'a ma Harley qui m'attend :)
Chapitre précédent Sommaire Chapitre suivant

Partager

2 commentaires pour "Moyens de transport"
Note moyenne : 3.81 / 4 (47 votes)
Pseudo Commentaire
Hors ligne Cloud # Posté le 01/08/2006 à 23:14:59
Avatar

Rebonjour :p
Si on coche le Flag pour que le joueur ne puisse pas contrôler le train, quel type de trigger devra-t-on utiliser?
J'ai essayé de décompiler c0a0 pour voir, mais je n'ai rien trouvé. D'ailleurs, le train n'est même pas sur les rails, il est dans une pièce beaucoup plus bas...

Ciao :o

Red Wind
 
Hors ligne kennybotti # Posté le 23/12/2010 à 00:18:35

Avis : Très bon

Salut tous le monde deja je tien a te feliciter mateo super tuto ;) mais jai un probleme je voudrai mettre des porte dans les vehicules ou dans les trains ou mettre des lumiere mais on ne peu pa mettre 2 entité sur un bloc pourtan dans la carte de half life c0a0 le train a des lumieres et une porte =/

Voir tous les commentaires