Aller au menu - Aller au contenu

Icône Les murs

Mise à jour : 22/07/2009
1 414 visites depuis 7 jours, dont 22 sur ce chapitre classé 94/786
Là, vous vous dites certainement que vous n'avez rien compris au mapping o_O . Après tout, c'est vrai, pourquoi existerait-il des entités de murs alors que les blocs sont censés le faire ?

Rassurez-vous, il y a toujours une explication à tout. Par exemple, comment rendre vos murs transparents, ou partiellement transparents ? Il faut obligatoirement les transformer en entités.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

La transparence

La transparence est exploitable sur les entités-bloc visibles, notamment les murs. Elle vous permet de voir à travers vos blocs, que ce soit sur une partie du bloc ou l'ensemble du bloc...

Pour pouvoir rendre votre entité-bloc transparente, on se sert des attributs d'effets (FX). Ils sont au nombre de 4. On les retrouve sur toutes les entités qui peuvent être rendues transparentes :

  • Render FX : permet de changer la manière dont la lumière est réfléchie sur l'objet. Cela ne fonctionne que si l'entité est transparente. On peut donc faire "clignoter" le bloc ou bien le faire disparaître progressivement etc...
  • Render Mode : c'est le plus important. C'est lui qui détermine le type de transparence.
    • Normal : aucune transparence (par défaut).
    • Color : transparence basée sur la couleur. Vous devrez définir cette couleur avec l'attribut "FX Color (R G B)".
    • Texture : transparence basée sur la texture du bloc. C'est une des transparences qui donne le meilleur effet à mon goût :)
    • Glow : cette transparence n'est utlisée que pour les entités env_glow. Elle sert donc assez rarement. Vous ne devez pas l'utiliser pour une autre entité que celle-là.
    • Solid : permet d'obtenir une transparence partielle de l'objet. Je m'explique : les textures commençant par "{" contiennent du bleu (c'est le cas des échelles et des grilles notamment). Ce bleu peut être rendu transparent avec cette valeur, à condition de mettre une valeur supérieure à 0 à "FX Amount (1 - 255)".
    • Additive : enfin, cette transparence est basée sur la luminosité de l'objet. Cela fonctionne comme pour "Texture", mais généralement l'objet est plus lumineux (et la transparence est moins jolie aussi).
  • FX Amount (1 -255) : puissance de l'effet de transparence. Doit obligatoirement être supérieur à 0 pour que l'objet apparaisse.
    1 = transparence maximale.
    128 = transparence moyenne.
    255 = transparence minimale (opaque).
  • FX Color (R G B) : couleur de l'effet. On l'utilise pour une transparence de type "Color" ou "Glow". Pour les autres, ça ne sert à rien.

C'est l'occasion idéale pour faire un test... On va utiliser les 2 types de transparence les plus courants : Texture (ou Additive) et Solid.
Le premier sert à rendre tout l'objet transparent. La plupart du temps, cette transparence sert pour les vitres.
Le second permet de faire disparaître une partie du bloc pour le rendre partiellement transparent. C'est plus fréquent que "Texture". On voit des transparences de ce types pour les échelles, les arbres, les grilles etc...

Je vais donc vous montrer comment rendre une vitre et un grillage transparents. Pour cela, j'ai créé une sorte de désert, avec un petite maison entourée d'un grillage. La maison comporte une vitre, et j'ai créé un fauteuil à l'intérieur.
Comme vous pouvez le voir, ça n'a rien de très compliqué :p

  • La vitre est un bloc recouvert d'une texture de vitre (GLASS). Je l'ai transformée en entité-bloc de type func_wall (voir plus bas). Je lui ai mis les attributs :
    Render Mode = Texture
    FX Amount = 100
  • Le grillage est un autre bloc recouvert d'une texture faite pour être partiellement transparente (commençant par "{"). Le bleu qui apparaît sous Worldcraft peut être rendu transparent si on transforme le bloc en entité-bloc de type func_wall, et qu'on lui applique les attributs suivants :
    Render Mode = Solid
    FX Amount = 255


Voici ce que l'on voit sous Worldcraft :

Image utilisateur


Lorsqu'on joue sur la map, les effets de transparence apparaissent :

Image utilisateur


Bel effet non ? On peut ainsi voir ce qu'il y a derrière la vitre, et le grillage est un vrai grillage !
Notez que la vitre est bien transparente, mais elle ne peut pas être cassée. Si on veut pouvoir l'exploser en tirant dessus comme un bourrin, il faut se servir de l'entité func_breakable que l'on étudiera plus tard.
Voilà, avec ça vous savez tout sur la transparence et vous êtes parés pour l'appliquer à tous types de blocs : échelles, grilles, vitres etc...

Les murs simples

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

Une entité de mur ??? Et les blocs, ça sert à quoi alors ?
Bon, c'est l'heure des explications... Si je viens de vous montrer commment fonctionne la transparence, ce n'est pas sans raison. Ce sont des attributs qui ne se retrouve que dans les entités-bloc : il faut donc absolument transformer son bloc en entité pour pouvoir le rendre transparent.
L'utilisation du func_wall présente donc 2 avantages :

  • La possibilité d'appliquer des effets spéciaux (transparence entre autres).
  • Eviter de multiplier le nombre de polygones. A la compilation, si votre bloc touche un autre bloc, celui-ci sera scindé en plusieurs blocs, un peu comme si vous faisiez un "Carve". Sauf que vous n'avez rien demandé !
    Lorsque vous jouerez, il y aura encore plus de polygones à l'écran et les petits PC vont mal le supporter... à moins que vous ne transformiez le bloc en entité.


Cette entité a un flag : "Not in deathmatch", qui supprime le bloc dans une partie multijoueurs.

A part ça il n'y à rien à dire. Vous savez comment rendre le bloc transparent, vous n'avez qu'à le transformer en func_wall, à modifier ses attributs et le tour est joué !

Les murs toggle

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

Bigre ! Il y a donc plusieurs types de murs ? C'est vrai, pourquoi faire simple quand on peut faire compliqué ? Allez expliquer ça aux programmeurs de Half-Life, j'y suis pour rien ;o)

Bon, il y a quand même une différence notable entre les func_wall et les func_wall_toggle.
Cette entité a la possibilité d'être appelée. Eh oui, c'est la seule différence. Mettez-lui un nom et appelez-la. Que se passe-t-il si on appelle cette entité ? Elle disparaît ! Carrément sous les yeux du joueur (mais en général on évite qu'il voit ça directement, ça ferait bizarre...).
Que signifie toggle ?
Ah ! Une définition ! Une objet Toggle se modifie de manière différente à chaque fois qu'il est appelé.
Pour func_wall_toggle, si le mur est visible il disparaît ; et si le mur est invisible il apparaît. Cela dépend donc de l'état de l'entité.
Pareil pour light, qui est une entité de type toggle : si la lumière est allumée, elle s'éteint ; et si elle est éteinte elle s'allume.

Cette entité a un nouvel attribut : "Starts invisible". S'il est coché, le mur sera invisible au début. Sinon, il sera visible. Il ne tient qu'à vous par la suite de modifier son état (visible/invisible).

Les murs illusoires

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

Parmi les différents types de murs qui existent, en voici un nouveau : le func_illusionary. Ce mur est visible aux yeux du joueur... mais si vous le touchez, vous vous apercevrez que vous passez à travers. Tout le monde passe à travers : vous, les ennemis, les scientifiques et même vos balles !

C'est pour cela qu'on l'appelle le mur illusoire. Il est assez peu utilisé, mais ça peut servir (si vous avez envie de perturber le joueur, c'est gagné à tous les coups :).

Voici un nouvel attribut, propre à cette entité :
  • Contents : modifie le contenu du bloc.
    • Empty : le bloc est totalement vide, on passe à travers comme s'il n'existait pas.
    • Volumetric Light : on passe toujours à travers, mais avec un peu plus de mal. Idéal pour simuler le passage dans une zone de végétation (bloque un peu le joueur mais le laisse passer quand même).
Voilà une bonne chose de faite. Vous savez maintenant traiter la transparence et l'appliquer à des entités-bloc de murs.
On progresse, on progresse... ;)
Chapitre précédent Sommaire Chapitre suivant

Partager

Il n'y a pas encore de commentaire pour ce tuto.