Fr/Make a vehicle

http://www.fpsbanana.com/prefabs/5178.
== Introductions ==
Comme vous avez pu le constater CSS n'a pas la possibilité de faire de vrais véhicules pilotables comme dans Half-Life 2. Les entités nécessaire ne sont tout simplement pas disponible pour CSS. Mais rassurez vous il est quand même possible de faire des véhicules jouable, et surtout donnant à vos map une bonne dose de fun. Les maps pour les modes Zombie ZE (Zombie Escape) et ZM (Zombie Master) utilise beaucoup les véhicules, mais souvent mal configuré, en effet soit il sont incontrôlable, soit tue le joueur ou tout simplement éjecte le joueur. Je vais tenter dans ce tuto d'expliquer comment j'ai fait pour faire mon pack de véhicule, afin d'obtenir des véhicules jouable, on ne sera pas au niveau des vrais véhicules de HL2, mais il seront tous à fait correct rassurez vous.
Ce tuto est destiné à faire des véhicules pilotable pour CSS. Il est possible de faire des véhicules auto-guidé avec des path_track mais ce sujet n'est pas traiter ici.
== Type ==
Vous avez le choix de faire votre véhicules de deux façon principales :
:- Brush
Vous pouvez le créer que en Brush, mais il devra être très basic, ou vous obtiendrez rapidement des messages d'erreur comme quoi vous avez dépasser les limites... Les Brushs sont à la base fait pour délimité votre map, et doivent être très basic, très carrer. Dans cette méthode les brush seront tous transformé en Func_physbox.
Tous les véhicules que j'ai tenté d'essayer sur FPSBANANA en brush plantai pour les plus compliquer. Si donc vous voulez un beau véhicule détailler, passer à la deuxième méthode.
:- Modèles
La il s'agit d'un vrais modèles, utilisé avec un prop_dynamic, et parenté à un Brush simple servant de modèle de collision physique. Votre modèle sert juste pour la visualisation, pour l'apparence, tous passe à travers.
: - Autre 
Le Nazgul, tiré de la map ze_LOTR_Mount_Doom, utilise une technique fort intéressante que je n'ai pas vu ailleurs, cette technique permet à un seul joueur de voler, et sans tremblement. Pour faire un dragon comme ici cette façon est fort intéressante et efficace.
A partir de ces deux types principale, vous pouvez choisir de les piloter à distance, comme un drone, ou à partir du véhicule. Dans le 1er cas le problème de tremblement est résolue.
== Stabilisation ==
Vous avez surement remarquer, en utilisant des véhicules dans différents mod sous CSS, que le joueur vibre. Ce phénomène se produit avec les func_physbox, ou les modèles physiques. je n'ai pas réussi à corriger ce problème, j'ai tenté d'utiliser d'autre entité comme les func_movelinear,....
Mais le joueur ne reste pas accrocher, le véhicule part sans le pilote.... Avec les func_physbox, le joueur reste accrocher à l'entité, et provoque des tremblement, cela est probablement du à des lag, un rafraichissement. En faîte ce qui vibre est seulement le Func_physbox, pas le joueur, si par exemple vous mettez tous le véhicules en nodraw, et bien rien ne tremblera. vous pouvez par exemple faire un véhicule en modèles, délimitant tout les endroit par des mûrs, et passez touts le modèle de collision en nodraw, ainsi personne ne sera gêner par ces tremblement.
== Dommages ==
Un problème assez courant rencontré est que les véhicules donnent des dommages au joueurs, et parfois cela peut même le tuer. J'ai vu beaucoup de véhicules mal configurés comme ça. Vous pouvez limité fortement ce problème en :
- Mettant des forces non excessive, pour vous donner un ordre d'idée 300 pour un avions et 800 pour une voiture sont correct. les voiture frottant sur le sol une plus grande force est nécessaire que les avions. Mettre de trop grand force peut aussi éjecter les joueurs du véhicule.
- Mettant un trigger_hurt configurez en négatif, cela aura pour effet de redonner de la vie au joueurs si le véhicules lui donne un peu de dommage.
Ainsi même si le joueur se prend quelque dommage tout de suite il reprendra de la vie.
== Modèle de collisions ==
Si vous partez d'un modèle celui-ci doit être le plus simple, les surfaces de contact avec le sol doivent être biseauter pour les véhicules au sol, comme les voitures, afin d'éviter les blocage. J'ai réaliser quelques tests en biseautant les bord des roues d'une voiture et elle peut passer par dessus des obstacles.
Note : J'ai parfois eu un bug, le véhicule devenait tout lent et même en mettant des forces enormes, le véhicule bougeait presque pas, il suffit de repasser les Brushs en toWorld et de les remettre en Funcphysbox, si cela ne fonctionne pas bouger juste un bloc.
:Point G :
Le centre de gravité est calculer automatiquement, c'est le petite cercle dans les vue hammer, j'ai essayer de le bouger mais hammer n'en tiens pas contes.
Utilisez le cliping tools pour couper vos brush afin qu'il prennent les contour de votre modèles ou les formes souhaitées. Exemple ici avec un bâti de tank :
== Armement ==
Avoir des véhicules pilotables, c'est fun, mais si ceux-ci sont des croiseurs ou des tanks et qu'il ne peuvent pas faire feux, il manquera quelque chose. CSS à plusieurs entité capable de faire pas mal de choses. Vous pouvez mettre un laser, comme sur le croiseur Shivan, tirer un obus comme avec le tanks, tuer le joueur avec un trigger_hurt, auto-détruire un croiseur..... Beaucoup de possibilité laissant libre recours à votre imaginations.
== Force et Couple ==
Pour mettre en mouvement votre véhicule, on lui applique deux type de force, venant de la même entité phys_thruster :
: Force
S'applique sur une direction sur l'objet cible, ici notre modèle de collisions. Son enlacement n'a aucune importance, vous pouvez placez vos phys_thruster avec le flag force coché et les placé à l'autre bout de la map.
: Torque (Couple)
Applique un couple. Ici son enlacement à de l'importance, car un couple s'applique par rapport à un centre, ici le centre G calculer automatiquement par hammer, le petit cercle dans les vue. Plus vous placez loin votre Couple du centre, plus l'effet sera fort. Placée les en avant du véhicule et jouez ensuite sur la force.
Une erreur courante que je vois est que la notion des deux forces est mal comprise et beaucoup de véhicule on des couples partout sur tous les phys_thruster, alors que c'est inutile. Il vous suffit de mettre des force sur l'avant et l'arrière pour une voiture, et des couples pour tourner à droite et à gauche. Vous pouvez aussi pour tourner utilisé que des force, c'est à vous de voir selon la conduite que vous recherchez.
== Entité de bases ==
:
La majorité utilise ces trois entités de bases :
: - Func_bouton
Un simple bouton qui va activer un game_ui.
: - Game_ui
Si les bons flags sont coché cela va geler le joueur, cacher son arme, et nous allons renvoyer vers des logic_compare toutes les commandes que nous faisons (droite, gauche....). Les valeurs renvoyer sont pas axe, on renvoie les valeurs des axes X, Y et Z vers trois logic_compare. Il vous faut savoir que pour les axe les valeurs sont : -1, 0 et 1. Par exemple pour les axes Y, qui correspondent à avant et arrière, lorsque vous appuyer sur les touches de votre clavier vous renvoyez 3 valeurs possibles. Vous aller surement me dire mais comment renvoyez 3 valeurs lorcque on utilise la souris pour monter descendre un avion par exemple... En effet dans ce cas, pour les commandes souris, on ne renverra que 2 valeurs possbile à un logic_compare : 0 ou 1, soit votre bouton de la souris appuyer ou non. On se sert souvent du bouton de la souris gauche pour monter un helico.
: - logic_compare
Il vont comparer les valeurs renvoyez par le game_ui, et activez les bon thrusters. Si vous appuyer sur droite, voter gameui va renvoyer 1 au logic_compare, qui pour lui correspond à l'activation du thruster sur le coté droit du véhicule. Et votre véhicule va ainsi tourner.
:Voilà ce que vous devez avoir, selon les 3 valeurs possible :
== phys_keepupright ==
Si vous faite voler votre avions, au bout d'un moment il va se mettre à basculer tout seul..... Il faut donc le forcer à garder une certaine place, d'où le rôle de cette entité. Suffit de régler la valeur "angular limit" à 100 par exemple.
== thruster auto ==
Pour un hélico on place souvent un thruster permanent en Z positif, d'une force inférieur nécessaire pour le lever, cela permet quand vous le montez, de ne pas redescendre comme un paver, mais de redescendre doucement.
On la met avec un logic_auto, car comme plusieurs autre entité elle à du mal à démarrer seul au début de la map.
== Tourelle du Tank ==
Réalisez la tourelle du tank n'a pas été facile, sur le net je n'ai trouver que des tourelle qui tire une seul fois, ensuite le game_ui est désactivez, cette méthode est peu intéressante dans un véhicule et contraignante. Je crois que le plus simple est que vous allier directement voir comment c'est fait, plutôt que de longue explication. Remarquez que le Respawn du boulet est mis à 0.1, cela est très important sinon vos boulet sont éjectez mais n'explose pas.
Dans le logic timer l'intervalle de feux est mis à 0.3s, sinon les boulet on encore tendance à ne pas exploser.
== Effets ==
Une fois votre véhicule bien configurez vous pouvez ajoutez plusieurs effets lui donnant plus de réalisme :
:- Sprite pour les phares.
:- Sons.
:- Porte qui s'ouvre...
== Ressources ==
*Pour vous procurez des modèles le plus simple est de les chercher sur le site du garry mods :
:http://www.garrysmod.org/downloads/
Il vous faudra les recompiler pour CSS, modifiez les ID de textures dans 3DS, et mettre un modificateur aplatir UVW.
L'idéal est de trouver des modèles prévue pour les jeux vidéo, car il seront déjà optimiser niveau polygone, et les textures et UV seront déjà faîte.
*Pour le croiseur Shivan je l'ai pris ici :
:http://www.hard-light.net/
Cette communauté à refait un remake du jeux Freespace II entièrement, les modèles de croiseur sont facilement adaptable pour CSS.
*Le Nazgul viens du site de S-low :
:http://s-low.info/forum/index.php
Une base de donné de personnage pour Source. Les personnages peuvent aussi servir de véhicule, comme des titans.... Ou tout simplement piloter à distance.
== Crédit ==
If you see a wrong information pls contact me.
:Freespace 2 shivan ship model :
:By Hard light Productions
:http://www.hard-light.net/
:Seraph and Covenant Capital Ship (Halo 2) by "halo4life" :
:http://www.garrysmod.org/downloads/?a=view&id=24690
:http://www.garrysmod.org/downloads/?a=view&id=23487
:Enterprise (Star-Trek) by "TheSniperNine" :
:http://www.garrysmod.org/downloads/?a=view&id=69422
:"Driveable helicopter by "SimP-PgM" :
:http://www.fpsbanana.com/prefabs/3268
:Tank "winter Abrams" by *T3cH* :
:http://www.fpsbanana.com/prefabs/2647
:Nazgul :
:http://www.fpsbanana.com/maps/95255
:Make by "s-low", found on the Map LOTR by "Hannibal[SPA](Rafuron)".
Si vous souhaitez discuter à propos de ce tutoriel :
http://www.mapping-area.com/forum/viewtopic.php?f=13&t=21911