
Dans ce tutorial, nous allons
voir l'intérêt de l'utilisation des portals dans votre
map Cod ainsi que l'utilisation de commandes de développement
pour comprendre comment réagit le moteur. Il est impératif
de bien comprendre l'utilisation des brushs structure/detail et leur
incidence à la compilation. Mais avant d'aller plus loin, il
faut impérativement éviter tous les "exploits"
sur la carte, on entend par "exploit" l'utilisation de bugs
pour grimper sur des zones non prévues pour au final se retrouver
derrière un mur, sous la map, sur un toit etc ... En effet,
certains joueurs s'amusent à chercher les failles des cartes
pour sortir de la zone de jeu.
Il suffit de repérer
les zones à risque et de placer des brushs avec la texture
CLIP pour empêcher toute tentative de sortie
de la zone de jeu. Ici, j'ai placé tout autour de la carte
un brush à partir du sommet du mur faisant office de clôture.
Pour être sûr de ne rien oublier, il faut impérativement
allez sur sa carte et la tester, tenter de monter un peu partout (comme
avec l'ouverture de notre grande, là où nous avons lacer
la MG42). Bref, c'est à vous de réfléchir
sur les possibilités de sortir de la carte (prenez en compte
l'utilisation des véhicules !).

Cette partie terminée,
nous allons attaquer dans le vif, comment fonctionne l'optimisation
et comment utiliser les commandes de développement du moteur
mises à notre disposition.
PARTIE I/. Les commandes
Avant d'aller plus loin, voyons
d'abord les commandes de développement qui peuvent servir à
vérifier l'optimisation.
/devmap
Cette commande est incontournable
pour lancer votre map en mode débugage. Sans elle, vous ne
pourrez utiliser les commandes r_lockpvs, r_showtris,
r_showportals etc, qui sont par nature des commandes
de cheats, puisqu'on peut voir au travers des murs. Le moteur refusera
donc d'activer ces options puisque c'est une protection contre le
cheat. La commande est simple, une fois le jeu lancé, appelez
la console et tapez le nom de votre map en faisant précéder
/devmap. Exemple : /devmap tuto_26
(ou le nom de ma map est tuto_26.bsp)
/r_showportals 1
Cette commande vous montrera
dans le jeu les portals que vous aurez implantés. Elle permet
notamment de se rendre compte qu'elles sont les portals qui ont été
supprimés lors de la compilation (nb : nous verrons qu'au cours
de la compilation, les portals erronés seront indiqués).
Pour annuler la commande, tapez /r_showportals
0
/r_showtris 1
Cette commande permet d'afficher
sous forme de fil de fer l'ensemble des polygones affichés
selon l'emplacement actuel, que se soit sur des brushs ou des modèles.
Cette commande est incontournable pour optimiser sa carte. Elle permet
en effet d'afficher et de vérifier les endroits mal optimisés.
Pour annuler la commande, tapez /r_showtris
0
/r_lockpvs 1
Cette commande permet de bloquer
l'affichage selon l'emplacement actuel et permet ainsi de se déplacer
pour comprendre quels sont les polygones affichés. En fait,
il fige l'affichage selon le point voulu. Pour annuler la commande,
tapez /r_lockpvs 0
Voivi donc les principales
fonctions nécessaires au débugage de votre map. Passons
maintenant à la pratique. Comme je le disais précédement,
il est impératif d'avoir assimilé le fonction et l'utilisé
des brushs structure/detail. Car optimiser
sa map passe d'abord par une "propreté" et un design
de sa map sans reproche (pas d'overlapping, pas de leak, etc...).

Pour commencer son optimisation
(avec les portals), il faut bien entendu avoir terminé sa map.
Mais l'optimisation proprement dit commence bien au début,
à son élaboration : une map bien construite et bien
pensée, et c'est 50% de travail effectué.
Revenons à nos moutons,
pour travailler avec les portals, il faut impérativement filtrer
tous les brushs détails (mais aussi les entités, curves
...), a contrario il faut impérativement conserver les caulk,
structure, hint, portals, translucent et world.

Chose faite, on se retrouve
alors avec les brushs "porteurs" (structure)
pour la création du BSP, c'est-à-dire
les brushs qui serviront pour scinder les cellules et ainsi optimiser
l'affichage (on verra plus tard comment avec la fonction /r_showtris
1.
Voyons d'abord comment réagit
le moteur sans portal pour commencer à vous familiariser avec
les commandes de développement. Lançons
la map tuto_26 comme stipulé précédemment.

Activez aussi l'option cg_drawfps
2 (dans la console) afin d'afficher les TRIS
(ou Triangles) et différentes informations comme le nombre
d'entités ou la place mémoire occupée en haut
à droite de votre écran. Déjà,
on peut voir le nombre de TRIS qui monte à
32 899 (moyenne acceptable entre 60 000
et 80 000 pour être jouable confortablement).

Ouvrez maintenant la console
et tapez /r_showtris 1.
Et là miracle, c'est "rencontre du troisième
type" !!! Oh la belle verte !

Vous voyez en faite toutes
les faces visibles de l'endroit où vous êtes actuellement.
Et là vous vous dites "ben merde, il affiche le camion
dans la grange, et même ce qui est derrière la grange
(le champs) alors que je les vois pas !!!" Et oui, il affiche
tous les faces visibles ou non, les buissons et arbres alors qu'ils
ne sont pas visibles de là où nous sommes. Et vous commencez
à comprendre, le moteur n'a pas l'intelligence humaine et il
faut lui dire ce qu'il doit afficher ou non.
En poussant un peu plus avec
les commandes de développement, on peut même figer l'affichage
de là où nous sommes pour pour voir ce qu'il affiche
derrière : c'est la commande /r_lockpvs
1. Le champ est entièrement affiché,
même notre abris de bois le long du mur alors qu'il n'est pas
visible d'où nous étions !

Et voilà, ceci confirme ce que la commande
/r_showtris 1 nous affichait.
En fait, cette commande a figé l'affichage des triangles que
le moteur affichait sur le screen précédent. C'est là
que rentre en jeu les portals. Les portals ont en fait une fonction
précise, celle de "filtrer" l'affichage d'une cellule
à l'autre lorsque brush STRUCTURE sépare
les 2 cellules.
PARTIE II/. Les PORTALS
Passons maintenant à
la pratique, comme je le précisais plus haut, il faut en fait
créer des "cellules" séparées par des
brushs structure ainsi que des portals pour que l'optimisation fonctionne,
car le moteur de COD, soit celui de Quake III, fonctionne
différement de MOH (Medal Of Honor).
Nous allons dans un premier
temps faire quelques modifications avant de poser nos brushs PORTAL.
Sélectionnez les brushs comme sur le screenshot ci-après,
et mettez-les en DETAIL.

Pour dessiner un portal rien
de compliquer, il suffit de créer un brush (je les fais de
8 unités d'épaisseur mais cela n'a
pas d'importance) et de texturer les 6 faces avec la texture PORTAL
NO DRAW et de placer sur UNE SEULE FACE
avec la texture PORTAL. Généralement,
sur la face qui permet le prolongement d'une surface.
Alors vous savez maintenant
comment les créer mais alors comment les placer ? Rappelez-vous
le tutorial
sur la gestion des brushs STRUCTURE/DETAIL. La compilation
de la map permet la création de cellule (espace) séparés
par des brushs STRUCTURE. Le portal intervient ici
pour cloisonner ces cellules. Une cellule ouverte (comme notre maison
avec ces 3 fenêtres et sa porte) devra être cloisonnée
par un portal à chaque ouverture.
Prenons exemple sur notre maison,
celle-ci a 4 ouvertures : les fenêtres 1
- 3
- 4 et
notre porte 2. il va
donc falloir fermet l'espace intérieur de notre maison à
l'aide de PORTALS.

Pour cela, créez 4 brushs
de l'épaisseur des murs de la maison et texturez-les avec la
texture NO DRAW sur toutes les faces des brushs.

Ensuite, placez UNIQUEMENT
la texture PORTAL sur la face extérieure
de manière à prolonger la surface. Voilà, la
cellule de notre maison est hermétique mais le travail est
loin d'être fini.

En effet, chaque cellule doit
être "hermétique" et composée de brushs
structure et portal pour que cela fonctionne, la face PORTAL
doit systématiquement être le prolongement de la face
extérieure d'une cellule. Ainsi, toute ouverture de porte,
fenêtre ou mur cassé peut le cas échéant
être "fermé" avec un PORTAL.
Attention, ce n'est pas automatique, cela dépend de votre optimisation
de la configuration de la carte encore une fois.
Pour pouvoir bien comprendre
comment bien fermer, imaginez que vous devez remplir les fondations
de notre carte avec de l'eau, cette eau doit pouvoir monter jusqu'en
haut des murs faisant le tour de notre carte sans qu'elle puisse s'échapper
par des "failles". Ces failles doivent donc être fermées
par des PORTALS.

Une fois le travail fait, il
va maintenant falloir se creuser les méninges pour générer
des cellules supplémentaires pour essayer de casser l'affichage.
Les numéros de 1
à 10 sont des
cellules créées manuellement séparées
par des PORTALS. Le but est que lorsque l'on se trouve
dans une des cellules, les autres cellules soit le moins affichées
possibles. Prenons exemple de la cellule 3,
théoriquement de celle-ci, peut de choses de la cellule 10
ne devrait pas être affiché, nous verrons après
à la compilation.

Assurez-vous que vos PORTALS
de séparation soient bien à la même hauteur que
les murs externes de la map et et qu'ils aient qu'une seule face avec
la texture PORTAL.

Une fois les séparations
terminées, nous allons refermer nos cellules avec un brush
au sommet toujours composé de 5 faces NO DRAW
et d'une face PORTAL sur le sommet cette fois-ci.

Une exception dans la pose
des faces portals, sur nos 2 brushs où nos murs sont explosés.
Ici, nous n'avons pas d'autres choix que de mettre 3 faces PORTAL,
une de chaque côté ainsi que sur le sommet du brush.

Le risque de l'utilisation
des portals se situe à leur intersection. Nous en avons un
bon exemple au niveau de l'entrée de notre grange. A l'origine,
il y qu'un seul PORTAL cloturant son entrée.
Le problème est que celui-ci voit dans deux cellules différentes
lorsque nous positions nos cellules externes. Ici notre PORTAL
horizontal délimite 2 cellules (cellule 1
et cellule 2). Or, un
PORTAL ne doit JAMAIS voir deux cellules à
la fois. A la compilation, il sera de toute manière annulé,
ce qui peut ensuite engendrer une cascade d'autres annulations si
celui-ci ouvre une autre "brèche" ou "faille"
dans votre système de cellule hermétique, c'est tout
le problème de la pose des PORTALS.
Pour en revenir à notre
problème, il suffit simplement de sélectioner le PORTAL
de l'entrée de notre grange et de le couper en 2 partie au
niveau de l'intersection avec le PORTAL horizontal
(cf. flèche rouge).
De cette manière, les PORTALS 1
et
3 ferment la cellule 1
et ne voient pas la cellule 2
et inversement les PORTALS
2 et 3
ferment la cellule 2
et ne voient pas la cellule 1.

Pour information, voici le
message lors de la compilation :
WARNING : portal at
(384 -448 112) entity 0 brush 580 sees into two cells (aka portal
t_junction)
aborting due to 1 bad portals

Il ne faut donc bien sûr
surtout pas croiser des PORTALS entre eux (cf. flèche
rouge), le résultat serait exactement le même.
Seule solution, créer 4 brushs avec 4 PORTALS
différents.

Pour vérifier de la
bonne étanchéité de vos cellules, il est possible
de filtrer les faces NO DRAW à l'aide d'un
outil qui n'est pas affiché lorsque l'écran est en résolution
1024 x 768. Pour ce faire, double-cliquez juste à
droite de l'icône "enregistrement". Il suffit alors
de cliquer sur l'icône représentant un D
pour filtrer les brushs NO DRAW et de cliquer à
nouveau pour les réactiver.
Cela permet de mieux contrôler
les jonctions entre PORTALS et brushs STRUCTURE.

Relançons notre map
en mode développement (/devmap
tuto_27) , et affichons par exemple les PORTALS
dans la map : /r_showportals 1.

Vous pouvez ainsi contrôler
le bon positionnement de ceux-ci, et en cas d'erreur à le compile
de voir les endroits où ceux-ci n'ont pas été
pris en compte.

Maintenant, remettons-nous
à l'endroit où nous avions constater que le moteur affichait
tout, même ce qui n'était pas visible. On constate déjà
que le nombre de TRIS est passé de 32
899 à 25 117.

Passons en mode TRIS
(/r_showtris 1), à
première vue, on ne vois déjà plus le camion
dans la grange, mais d'autres détails ne sont pas vraiment
visible ici, il va falloir passer à la fonction LOCKPVS.

Le blocage de l'affichage (/_lockpvs
1) confirme ce que nous avons constaté, le
camion n'est plus affiché ni même une partie dans la
grange, une partie du champs a disparu et notre abris à bois
lui aussi. Voivi comment fonctionne l'optimisation à petite
échelle.

Voici qui termine la partie
construction d'une map mais il reste encore des fonctions non expliquées
au cours de ces tutoriaux que vous pouvez découvrir en faisant
des tests comme j'ai pu le faire tout au long de mon apprentissage
sur Graydiant.
Les fichiers (.map - .gsc -
csv) de notre tuto 27/. se trouve ici.
Pour l'utiliser, à partir du menu FICHIER,
sélectionnez IMPORTEZ (.map) ==> IMPORTEZ NOUVELLE
MAP.

Par
Caskou
- 2005 Copyright © by CaskAmi Prod.
Tout droit réservé.