![]() |
||
Les HintsCe tutorial porte sur "les Hint Brush" Ce cours a été entièrement écrit par moi, c'est à dire NykO18.
![]() sous un contrat Creative Commons. PlanI. IntroductionDans ce tutorial, je vais essayer de vous faire comprendre une bonne fois pour toute ce qu'est un "hint", à quoi cela sert et comment s'en servir (surtout) Je vois beaucoup trop de gens dire n'importe quoi sur les hints ou se vanter de les "maîtriser" sans même réellement savoir ce que c'est ! Pour bien comprendre les hints, je vais rapidement (mais pas vainement) revenir sur le fonctionnement de BSP et VIS durant la compilation ainsi que leurs rôles respectifs. Je ne vous cache pas que les hints sont une notion bien souvent très mal comprise, car très "abstraite" et sûrement trop pour certaines personnes.. Comme je le mentionnais dans un autre tutorial de ma conception, utiliser les hints requiert relativement peu de choses, à part un brin de logique, pas mal de facilité à "visualiser et se repérer dans un espace en 3 dimensions" et également du temps et de la patience.. II. BSP et VISPour faciliter la compréhension de ce tutorial, je vais prendre pour référence une map, ou plutôt un bout d'une map, que j'ai réalisée et sur laquelle je me suis rendu compte que les hints étaient vraiment utiles. Ce bout de map représente un immeuble, tout du moins quelques étages d'un immeuble. Le plan de chaque étage est le même, et il est relativement simple :
Le problème majeur de ce type d'architecture est que depuis le palier, il est pratiquement possible de voir tous les appartements.. Je pourrais mettre des func_areaportal à chaque porte d'appartement pour limiter la visibilité, mais pour une map multijoueurs, cela serait trop gourmand.. et à la limite, même pour une map solo, étant donné le nombre d'étages et d'appartements par étage. Bref, toujours est-il que, lorsque BSP va découper cette map, il devrait "normalement" procéder ainsi :
De cette façon, lorsque la compilation passe à VIS, ce dernier n'a plus qu'à prendre chaque pièce une par une et regarder quelles pièces sont visibles de chacune des autres. De cette façon, une fois dans le jeu, le moteur ne s'embêtera pas à calculer les pièces invisibles. Si on prend notre plan ci-contre :
* On ne peut pas voir la pièce 1 depuis la pièce 2, mais par contre on peut la voir depuis la pièce 3 par l'ouverture de la porte. Tout cela pour dire qu'une découpe parfaitement effectuée par BSP est la clef de l'optimisation. III. BSP tu déconnes ?Comme tous les logiciels, comme tous les programmes, comme tout ce qui touche à l'informatique.. BSP n'est pas infaillible, loin de là.. Après tout, ce n'est qu'un vulgaire programme qui tente de deviner "où sont vos pièces et de quelle forme elles sont".. Et vous savez très bien que, même si pour vous il est très simple de distinguer chaque appartement d'un autre, et un appartement d'un couloir, pour BSP ce n'est pas SI évident que cela.. Je vais vous faire par de la magistrale découpe de BSP sur ce type de plan.. et vous allez voir, c'est vraiment TRÈS éloigné de ce que l'on cherchait à obtenir tout à l'heure : III.1. Exemple 1
Le problème maintenant, ce n'est plus tellement BSP mais VIS.. car VIS, lui, va gentillement suivre ce que BSP lui a découpé, et va donc regarder quelle "pièce" et visible de chacune des autres.. Malheureusement, les pièces sont découpées n'importe comment, et c'est donc une vrai anarchie.. Regardez attentivement le plan, il y a une "pièce" horizontale colorée en vert sur mon schéma. Cette pièce parcourt tout l'étage de part en part en passant par le couloir et deux appartements. Maintenant imaginons que l'on se trouve dans cette pièce, n'importe où à l'intérieur (dans un appart ou dans le couloir).. Et bien pour VIS, peu importe l'endroit où vous vous trouvez, vous êtes dans la même pièce ! Ce qui signifie que vous pouvez très bien vous trouver dans l'appartement de gauche, VIS lui considère que vous êtes également en même temps dans l'appartement de droite mais aussi dans le couloir ! Comment ne pas imaginer dès lors comment il va calculer la visibilité.. Très facile pour lui, depuis cette pièce verte, on peut voir TOUS les appartements, tout le couloir, la cage d'ascenseur et aussi l'escalier ! Ce qui signifie en d'autres termes que, peu importe l'endroit où vous vous trouvez, tout l'étage sera modélisé alors qu'en fait vous ne serez pas censés en voir la moitié.. Vous voyiez bien que BSP n'est pas parfait..! Et bien sûr ce n'est qu'une exemple parmis d'autres.. Je vais d'ailleurs prendre un autre exemple tout de suite pour être bien sûr que vous avez compris ! III.2. Exemple 2
Et j'ai envie de dire que c'est tout à fait normal.. un simple problème de point de vue dirons-nous.. Je vais vous expliquer.
Malheureusement, ce n'est pas comme ça que BSP et VIS interprètent tout cela.. Voyons plutôt la façon dont BSP va définir les "pièces" de cet endroit..
Si vous avez suivi un petit peu ce que je raconte depuis tout à l'heure, vous aurez compris pourquoi.. Pour VIS qui va réinterpréter tout ca par la suite, peu importe où vous vous trouvez dans la "pièce" rouge (la numéro 1), il considèrera qu'à tout moment vous pouvez très bien vous trouver en train de voler devant la fenêtre et donc avoir une pleine vue sur la pièce bleue ! Et c'est exactement pour ca que les hints vont nous servir.. IV. Les HintsVenons-en au fait, car c'est bien beau d'avoir exposé des problèmes un peu plus haut, mais désormais il faut les résoudre ! IV.1. C'est quoi un hint ?C'est une très bonne question, et c'est à ce moment là qu'il faut avoir un brin de bon sens et de logique.. Un hint sous Hammer ce n'est ni plus ni moins qu'un bloc normal paré des textures tools/toolshint et tools/toolsskip. Normal ? Non, en fait absolument pas :) A dire vrai, c'est plus complexe que cela.. et il ne faut pas voir les hints comme des blocs, surtout pas ! Si jusqu'à présent vous pensiez qu'un hint était un "volume" alors oubliez tout ca, la seule chose qui compte dans un hint sont les faces texturées avec la texture tools/toolshint.. Et uniquement les faces ! En fait, un hint n'est pas un bloc. Chaque face d'un bloc texturée avec la texture tools/toolshint est un hint. Si vous créez un bloc rectangulaire de 6 faces et que vous les texturez toutes avec cette texture, vous obtenez 6 hints.. tout simplement. IV.2. Ca sert à quoi un hint ?En étant très direct pour être bien clair, un hint va nous servir à découper en plusieurs morceaux les "pièces" que BSP découpe dans votre map. Oui je sais.. c'est pas spécialement clair dit comme ca, mais vous allez voir, ca va rentrer avec des schémas.
Finalement, ajouter un hint c'est comme ajouter un mur invisible pour le compilateur..
Ainsi, à cet endroit précis, il sait que le mappeur a voulu dire quelque chose, et ca permet de découper ces "pièces virtuelles" (appelées leafs) utilisées par VIS pour calculer la visibilité. IV.3. Comment s'en servir ?IV.3.A. Exemple 1
IV.3.B. Exemple 2
V. ConclusionComment trouver les endroits ou ca foire ? Rien de plus facile, deux commandes console sont vos meilleures amies pour optimiser votre map grace aux hints :
J'espère que ce tutorial vous aura un peu aidé à comprendre les hints.. Il reste certes de très nombreux cas de figure ou les hints peuvent s'avérer TRÈS utiles, mais il m'est bien sûr impossible de tous les détailler ! Néanmoins, si vous cherchez encore plus d'informations sur les hints : En attendant, bon mapping et bonne optimisation ! Par NykO18
* Ouvrez la map sdk_hints.vmf fournie avec le SDK. Cette création est mise à disposition selon le Contrat Paternité-Pas d'Utilisation Commerciale-Partage des Conditions Initiales à l'Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ ou par courrier postal à Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. |
||