Éléments naturels et fumées

Intempéries

Entités

Type

Description

func_precipitation

Bloc

Permet de créer une zone de pluie ou de neige

Les maps dans lesquelles il pleut ou il neige ne sont pas fréquentes. Pourtant, ça peut donner un bel effet :) .

Pour mettre de la pluie ou de la neige dans votre map, vous devez utiliser l?entité-bloc func_precipitation (le nom est très en rapport avec la fonction ^^ ). Vous devez créer un bloc, avec la texture toolstrigger qui recouvre toute votre map. La pluie sera ajoutée dans ce bloc. Transformez le bloc en func_precipitation.

Et les maisons ?

Ce n?est pas grave, remplissez tout. Vous verrez qu?il ne pleuvra ou ne neigera pas dans les maisons ;) .

  • Density : c?est la densité de la pluie. Ne vous ennuyez pas et laissez la valeur par défaut, c?est très bien

  • Color : couleur de la pluie. Laissez blanc, je n?ai jamais vu de pluie verte ^^

  • Precipitation Type : mettez Rain. Vous pouvez aussi mettre Snow si vous voulez de la neige.

Image utilisateur

L'utilisation des func_precipitation

Je vous ai dit de créer un gros bloc qui recouvre votre map. Si votre map est parfaitement carrée, c'est une bonne solution. Mais si elle ne l'est pas, vous pouvez bien évidemment créer plusieurs blocs func_precipitation. Si vous mettez plusieurs blocs, essayez de faire en sorte qu'ils aient tous plus ou moins la même taille car la densité des précipitations est calculée en fonction du volume du bloc. Donc pour essayer d'avoir la même densité de pluie ou de neige partout, faites des blocs de la même taille, ce sera plus simple.

Valve donne quelques recommandations à propos de l'utilisation des func_precipitation. Je vais vous les lister ici.

  1. Vous devez éviter de mettre des précipitations si votre map contient de l'eau. Ou tout du moins, vos précipitations ne doivent pas entrer en contact avec l'eau. Ça peut provoquer des crashs de la map et ou du jeu

  2. Evitez aussi de mettre une densité trop élevée. C'est possible de le faire, mais risqué. Ça peut provoquer des ralentissements ou même un crash.

  3. Les précipitations ne peuvent en aucun cas sortir de la map ! Pour cela, évitez de coller vos func_precipitation aux murs de limite de votre map. En effet, les précipitations peuvent sortir légèrement hors de l'espace du bloc func_precipitation, et elles pourraient se retrouver hors de la map. Prudence donc ^^ .

  4. Valve dit aussi que les précipitations ne doivent pas entrer dans un func_smokevolume. Je vous expliquerai cette entité plus bas dans cette partie. Il faut donc laisser un "trou" au milieu de vos func_precpitation pour y placer le func_smokevolume.

Cheminée avec fumée

Entité

Type

Description

env_smokestack

Point

Permet de mettre en place une propagation constante de fumée

Rien de tel que de mettre une cheminée sur vos maisons et d'en faire sortir un nuage de fumée. Un entité se prêt particulièrement bien pour créer cette fumée : env_smokestack.

Cette entité produit un nuage de fumée à partir de son origine (l'emplacement de l'env_smokestack) et qui se disperse tout doucement dans l'air, exactement comme la fumée qui sort d'une cheminée. Regardez ce que ça donne :

Image utilisateur

Mais pour que ce soit réaliste, il s'agit de bien placer l'entité. Sur le screen ce-dessous, je place l'entité "dans la buse" de la cheminée, pour qu'il n'y ait pas d'espace entre le début de la fumée et la sortie de la cheminée :

Image utilisateur

Voici les quelques propriétés utiles :

  • Initial State : mettez On pour que la fumée soit émise par défaut

  • Spread at the base : vitesse de dispersion de la fumée à la base du smoketrack

  • Spread Speed : vitesse de dispersion de la fumée

  • Speed Speed : vitesse de propagation de la fumée à la base du smoketrack

  • Particle start size : taille des particules lors au début de l'émission (à la base du smoketrack donc)

  • Particle end size : taille des particules à la fin de l'émission, au moment où elles commencent à disparaître

  • Emission rate : particules émises par seconde. C'est la densité d'émission

  • Length of smoke trail : longueur de l'émission de fumée. Laissez la valeur par défaut, comme sur mon screenshot.

  • Wind X/Y Angle : c'est l'angle démission. Mettez 10 ou 15 pour incliner légèrement

  • Wind Speed : la force du vent qui fera dévier la fumée. Ici encore, une valeur de 10 ou de 15 est acceptable.

  • Twist : vitesse de rotation des particules autour de l'origine. C'est pour faire un effet tornade. Mettez une valeur faible comme 2 ou 5 ; vous faites de la fumée, pas un cyclone ^^

  • Base Color (R G B) : couleur de la fumée. Dans mon exemple j'ai pris 129 129 129

  • Translucency : transparence de la fumée. Mettez 150 ou 180 pour un rendu plus ou moins opaque

Du vent et des bourrasques

Entité

Type

Description

env_wind

Point

Permet de paramétrer le vent ambiant d'une map

trigger_wind

Bloc

Permet de créer un volume dans lequel souffle le vent

func_dustcloud

Bloc

Permet de créer un volume dans lequel évolue de la poussière dense

Le vent

Image utilisateur

Par défaut le vent ne souffle pas. Mais pour créer un ambiance et ajouter du réalise, il peut-être utile de le faire souffler pour, par exemple, faire balancer légèrement des câbles.

La méthode traditionnelle pour faire souffler le vent est d'insérer un env_wind qui va servir à paramétrer le vent qui soufflera sur toute la map. La deuxième solutions consiste à utiliser un trigger_wind. C'est un volume dans lequel le vent va souffler. Ça vous permet de faire des petits effets par-ci par-là sans toucher à la configuration du vent qui souffle sur la totalité de la map (paramétré avec l'env_wind).

L'env_wind possède moins d'inputs que le trigger_wind. Il n'est par exemple pas possible d'activer ou de désactiver le vent. Je vais vous donner les propriétés de l'env_wind. Puis dans un exemple je vous introduirais le trigger_wind pour faire des rafales avec une envolée de particules.

  • Min normal speed : vitesse minimale du vent

  • Max normal speed : vitesse maximale du vent

  • Min gust speed : vitesse minimal des rafales

  • Max gust speed : vitesse maximale des rafales

  • Min gust delay : délai minimum entre deux rafales

  • Max gust delay : délai maximum entre deux rafales

  • Gust Duration : durée des rafales

  • Max gust dir change (degrees) : nombre de degrés dont les rafales font changer la direction du vent

Deux outputs intéressants ont été implémentés avec Half-Life² Episode 1 :

  • OnGustStart : quand une rafale commence

  • OnGustEnd : quand une rafale se termine

C'est mieux avec des bourrasques

Le vent va souffler par rafales et à chaque rafale on va faire comme si le vent faisait se soulever des particules, comme du sable, de la terre. Comme ceci, le premier screen au repos et le deuxième avec une bourrasque qui provoque un soulèvement de poussière (c'est une légère bourrasque pas une tempête de sable, donc c'est assez léger) :

Image utilisateur Image utilisateur Avant la rafale -> Pendant la rafale

Pour faire ce genre de chose il faut :

  • un logic_timer qui activera les bourrasques de façons aléatoire

  • un func_dustcloud pour générer le nuage de particules

  • un trigger_wind pour souffler dans le func_dustcloud

  • un ambient_generic pour jouer le son du vent qui souffle

Vous pouvez utiliser le son ambient/wind/windgust_strong.wav pour l'ambient_generic.
Voici comment j'ai placé le trigger_wind et le func_duscloud. Ce dernier est plus petit et qui est placé dans le trigger_wind :

Image utilisateur
Le trigger_wind

Mettez sa propriété Start Disabled sur Yes pour ne pas qu'il soit actif dès le début, et mettez une vitesse de 120 (propriété Speed). Spécifiez aussi un point d'origine et un angle pour définir la direction du vent.

Le func_dustcloud

Pareil que pour le trigger_wind, mettez Yes pour Start Disabled. Spécifiez une couleur, si possible une couleur qui se rapproche de celle du sol que vous utilisez. Voici les autres propriétés :

  • Particle Per Second : nombre de particules par seconde. 30 semble être une bonne valeur.

  • Maximum Particle Speed : vitesse des particules

  • Minimum Particle Lifetime : temps minimum de vie des particules.

  • Maximum Particle Lifetime : temps maximum de vie des particules.

  • Maximum Visible Distance : distance maximale dans laquelle les particules sont visibles.

  • Frozen : laissez sur No. Si vous mettez Yes, les particules apparaîtront mais ne bougeront pas.

  • Alpha : valeur de transparence. Plus c'est élevé, plus c'est opaque. Mettez 30.

  • Minimum Particle Size : taille minimale des particules. Mettez une valeur faible genre 5 ou 10.

  • Maximum Particle Size : taille maximale des particules. Mettez aux alentours de 50 ou 60.

Le logic_timer

Pour le logic_timer, mettez le en position aléatoire (Use Random Time sur Yes). Définissez Minimum et Maximum Random Interval avec respectivement 7 et 14.

Puis, définissez les outputs comme ceci :

Output named

Targets entities

Via this input

Parameter

Delay

OnTimer

dustcloud

TurnOn

<non>

0.00

OnTimer

ambientgeneric

PlaySound

<non>

0.25

OnTimer

triggerwind

Enable

<non>

0.25

OnTimer

dustcloud

TurnOff

<non>

5.00

OnTimer

triggerwind

Disable

<non>

5.25

Tout s'arrête après 5.25 secondes. Il est donc important d'avoir choisi un Minimum Random Interval (pour le logic_timer) plus grand que 5, sinon deux rafales pourraient être déclenchées en me^me temps, ce qui provoquerait certainement autre chose que ce qui est souhaité ^^ .

Le brouillard

Entités

Type

Description

env_fog_controller

Point

Entité qui sert à gérer le brouillard

Quelques notions

Image utilisateur

L'env_fog_controller est une entité qui permet de mettre du brouillard et de le paramétrer. Le brouillard a en réalité deux utilisations :

  1. pour faire joli

  2. pour optimiser

On utilise le brouillard pour optimiser les grandes maps car il est possible de faire disparaître les zones que le brouillard masque ce qui permet de soulager le moteur graphique et de gagner de précieux FPS en plus ! En général, si on utilise un env_fog_controller pour optimiser, c'est que les autres techniques d'optimisation se sont révélées vaines.

Voici un exemple de map ou le brouillard est utilisé pour optimiser. La map dod_snowblind de Grippy est une map très vaste et le brouillard permet de réduire la profondeur de visibilité et ainsi que masquer tout ce que le brouillard cache :

Image utilisateur dod_snowblind de Grippy

Placer l'env_fog_controller

Placez l'entité où vous voulez dans votre map, cela n'a pas d'importance. L'env_fog_controller possède un certain nombre de propriétés mais seules 5 sont vraiment utiles :

  • Fog Enable : mettez Yes pour activer le brouillard

  • Primary Fog Color : c'est la couleur du brouillard. Vous pouvez aussi spécifier une Secondary Fog Color mais ce n'est pas nécessaire.

  • Fog Start : distance à laquelle le brouillard commence

  • Fog End : distance à laquelle le brouillard se termine. On n'y voit plus rien, c'est totalement opaque.

  • Far Z Clip Plane : voir ci-dessous

Par défaut, les éléments qui sont cachés par le brouillard sont quand même affichés, ce qui fait que si vous utilisez l'entité dans le but d'optimiser, elle ne sert à rien ^^ . Pour faire disparaître les éléments masqués par le brouillard il faut spécifier la distance à partir de laquelle le jeu ne doit pas afficher les éléments. C'est à ça que sert la propriété Far Z Clip Plane. Mettez y la même valeur que la propriété Fog End, comme ça dès que le brouillard est opaque, ce qui est derrière n'est plus affiché.