Créer ses terrains avec EasyGen

Écrit le 28/11/2003 par CH4NDL3R
Dernière mise à jour : 01/02/2006

Introduction

Tout le monde vous le dira, créer un terrain pour Quake 3 Arena est très fastidieux si l'on n'utilise pas des plugins comme GenSurf ou des logiciels externes comme EasyGen.
Ce tutorial vous apprendra les bases de ce soft très utile qu'est EasyGen, à savoir créer un terrain et l'exporter dans Quake 3. Il simplifie également le texturing et la création du shader correspondant.
En plus d'EasyGen et de GTKradiant, vous aurez besoin d'un programme de retouche d'image comme PaintShopPro ou Photoshop.

Création de l'alphamap

Avant de lancer EasyGen, vous devez créer une image Bitmap de votre terrain (en « niveaux de gris »).
Avant de commencer directement le dessin, vous devez savoir les choses suivantes :
Votre image sera donc composée de pixels plus ou moins sombres, où EasyGen interprétera les pixels proches du noir comme des vallées (des creux) et ceux plus clairs comme des collines (des hauteurs). C'est ensuite à vous de gérer l'alternance de pixels sombres/clairs en fonction des résultats que vous comptez obtenir. Par exemple, des pixels blancs entourés de pixels noirs aura pour effet la création d'un pic. Par contre, si l'on passe doucement du noir au blanc grâce à plusieurs niveaux de gris, alors le terrain aura l'air moins irrégulier.
Le terrain est aligné sur une grille, où ses cases représentent chacune deux triangles. Plus la grille est grande et plus il y aura de triangles, ce qui influera donc sur les r_speeds. Pour ce tutorial, nous allons réaliser un terrain de 32 x 32 triangles, avec une grille de taille 128, ce qui nous donnera un terrain final de 32 x 128 = 4096 unités de côté.
Créer un BMP de 32 x 32 aurait été logique, mais EasyGen ne travaille pas avec les lignes et les colonnes : regardez plutôt le dessin suivant :

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_grille.jpg

On a une grille de 4 x 4, mais si vous comptez uniquement les lignes noires, on passe à une grille de 5 x 5. Pour notre image, on incrémente donc sa taille de 1, ce qui la fait passer à 33 x 33 pixels. Pour chaque terrain que vous créerez, vous devrez à chaque fois ajouter 1 à sa taille (elle doit être obligatoirement impaire).
Vous pouvez maintenant dessiner votre terrain, en alternant zone sombres (creux) et zones claires (hauteurs). Après des heures de création acharnée, j'ai obtenu ceci :
(zoom 3x)

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_heightmap_zoom.jpg

Si vous tentez d'importer ce cauchemar pictural directement dans EasyGen, le résultat sera moyen car les différences entres les couleurs sont assez marquées. Le moyen le plus simple pour obtenir un bon résultat est d'appliquer un filtre qui va rendre l'image floue. J'ai utilisé plusieurs fois le filtre Flou de Photoshop Elements jusqu'à obtenir un résultat acceptable :

(zoom 3x)

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_heightmap_zoom_blur.jpg

Sauvegardez l'image au format Bitmap (niveaux de gris, 8 bits / pixel).

Importation de l'alphamap

Il est temps de lancer EasyGen.

Tout d'abord, modifiez les paramètres dans le menu Edit > Préférences

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_preferences.jpeg

Changez d'abord la couleur de l'arrière-plan, qui peut se confondre avec le terrain lui-même. Un bleu assez doux est parfait pour prendre sa place.

Dans le cadre « Export Folders » , à « Work mod » , indiquez votre répertoire de travail (ici, il est paramétré pour Q3 'de base') vous pouvez remplacer baseq3 par celui du mod pour lequel vous voulez créer ce terrain (ex : q3ut2 pour Urban Terror)
Dans Bitmaps, mettez le répertoire où vous exporterez vos alphamaps (baseq3maps convient très bien)

Dans « Import Folders », indiquez le répertoire où sont stockés tous vos dessins de terrains.

Validez les changements, puis lancez l'importation via le menu File > Import > Heightmap (.bmp)

Sélectionnez votre image puis choisissez le dénivelé (par défaut 256). Pour un décors montagneux, entrez une valeur élevée, à l'inverse pour un paysage champêtre (et donc assez plat), mettez une faible valeur.

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_import.jpeg

On obtient un joli terrain :

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_terrain.jpeg

Vous pouvez vous déplacer avec la souris dans la vue 3D :
Bouton gauche pour pivoter.
Bouton droit pour avancer / reculer et se déplacer latéralement.
Les deux boutons enfoncés pour changer d'altitude.

Intéressons-nous maintenant à la barre d'outils Grid :

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_outilsgrille.jpeg

« Divisions » est le nombre de triangles qui composent un coté du terrain. Plus ce nombre est élevé, plus le terrain est beau, mais au détriment des r_speeds.
« Widths » est la longueur totale d'un côté du terrain.
« Div. Widt. » est la longueur du coté d'un triangle (qui n'est pas l'hypothénuse).

Si la case « lock terrain shape » est cochée, tous les paramètres seront liés entre eux, si vous modifiez le Divisions de 32 en 64, le Div. Width passera de 128 à 64, afin que la taille du terrain reste inchangée.

Modifier son terrain

Cliquez sur la case « Modifier » à côté de « Grid »
Vous disposez d'un menu vous permettant de modifier physiquement votre terrain. Vous pouvez alors l'adoucir, ou bien y ajouter des éléments (cone, colline, bruit).
Maintenez la touche Control appuyée et déplacez l'effet à l'aide de la souris.
Dès que vous êtes satisfaits du résultat, vous pouvez passer à la section suivante.

Texturer son terrain

Cliquez sur le bouton « Alphamap » à coté de « Modifier ».
La map devient noire, et une grille apparaît sur le côté gauche.

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_outilsalphamap.jpeg

Cliquez comme la flèche l'indique sur la première case. Le traditionnel 'ColorPicker' apparaît : il vous demande quelle couleur mettre dans la première case. Choisissons une couleur verte (le vert n'est pas innocent, nous verrons ça tout à l'heure). Faites de même pour les deux cases suivantes avec du marron et du gris.

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_Palette.jpeg

Nous allons maintenant assigner un texture pour chacune des couleurs : cliquez sur le menu Texture > Add Folder...

Pointez sur le répertoire qui contient vos textures de terrain. (Pour ce tuto, j'avoue, j'ai un peu triché, j'ai utilisé les textures de RtCW) puis validez. Les textures se chargent en dessous de la barre Alphamap.
Cliquez maintenant sur la couleur verte puis sélectionnez la texture correspondant à de l'herbe, une texture à dominante verte. Choisissez ensuite une texture de terre (correspondant à la couleur marron), et enfin une texture de rocher (grise).

Vous pouvez maintenant texturer sur votre map : cliquez sur la couleur correspondant à de la terre, puis, en maintenant appuyé Control et Shift, utilisez le bouton gauche de la souris pour peindre votre terrain.

A la manière des cartes IGN, peignez les hauteurs en gris et les vallées en vert, avec le marron comme valeur intermédiaire.

Vous devriez alors avoir un résultat comparable à celui-ci :

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_terrain_texture.jpeg

Vous pouvez prévisualiser votre terrain en cliquant sur le bouton sur la barre d'outils principale :

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_bouton_texture.jpg

Vous voyez votre oeuvre texturée...
Les textures paraissent plutôt répétitives, vous pouvez corriger ce défaut en changeant le scale, + pour l'augmenter, - pour le diminuer.

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_terrain_texture2.jpeg

Mais ?? Qu'est ce que font ces triangles noirs un peu partout ??

Corriger les bugs de texturing

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_triangles.jpeg

Si vous avez de triangles noirs comme ceci, ça veut dire que vous avez plus de 2 textures mélangées sur un seul triangle. Autrement dit, il doit n'y avoir que deux couleurs différentes maximum sur les trois arêtes d'un triangle. Il suffit qu'il y ait une texture supplémentaire pour que ces triangles noirs apparaissent (EasyGen ne sait pas mélanger plus de 2 textures).
Ces « erreurs » sont faciles à corriger : il suffit de peindre par-dessus les triangles fautifs. Les images expliqueront mieux que moi :

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_bug1.jpeg
http://www.game-lab.com/images/tuts/terrains_easygen/easygen_bug2.jpeg
http://www.game-lab.com/images/tuts/terrains_easygen/easygen_bug3.jpeg

Exporter le terrain

Sauvegardez votre map.
Ouvrez le menu d'exportation en cliquant sur File > Export > Terrain Entity (.map)

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_export.jpeg

Les champs sont déjà remplis par le nom de votre sauvegarde. Il ne vous reste qu'a cocher les cases 'Insert into a Skybox' pour créer une skybox autour du terrain et 'Add an info_player_start'.

Dans les Templates, choisissez Q3map2 ou Standard suivant que vous compilez avec Q3map2 ou bien l'original.

Validez avec « Continue>> ».

Maintenant, vous pouvez ouvrir la map dans GTKradiant.
Les précédentes versions d'EasyGen assignaient d'entrée le sky q3dm0 lorsqu'on cochait la case skybox. Avec la version que j'ai utilisé (la 1.42), ce sky est remplacé par la texture caulk. Remplacez cette texture par le sky de votre choix.

Vous pouvez maintenant compiler en utilisant le menu Bsp > BSP (pas besoin de VIS ni de Light, c'est juste une compile de test).

Il se peut que vous ayez les messages d'erreurs suivants :

WARNING: Couldn't find image for shader textures/ch4ndl3r/terrain_1
WARNING: Couldn't find image for shader textures/ch4ndl3r/terrain_1to2
WARNING: Couldn't find image for shader textures/ch4ndl3r/terrain_2
WARNING: Couldn't find image for shader textures/ch4ndl3r/terrain_0to2
WARNING: Couldn't find image for shader textures/ch4ndl3r/terrain_0
WARNING: Couldn't find image for shader textures/ch4ndl3r/terrain_0to1

Ce n'est pas la peine de s'inquiéter, cela n'affectera pas les textures de la map.

Lancez la map dans le jeu (ici RtCW), et observez le résultat.

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_shot0000.jpeg

Si vous obtenez des carrés noirs ou gris ingame, alors soit votre fichier shader ne se trouve pas dans le répertoire 'scripts', soit les textures sont manquantes, ou bien les répertoires sont erronés dans le shader lui-même.

Quelques trucs et astuces (Merci à Pointy)

http://www.game-lab.com/images/tuts/terrains_easygen/easygen_puce.jpeg Dans EasyGen, vous pouvez changer l'altitude des sommets (en utilisant ctrl+shift+bouton gauche en mode Grid). Cela détruit parfois le mesh. Il est préférable de faire tout le vertex editing directement dans GTKRadiant
http://www.game-lab.com/images/tuts/terrains_easygen/easygen_puce.jpeg Dans GTKRadiant, ne déplacez jamais les sommets sur le plan X/Y. Déplacez-les simplement selon l'axe Z. N'utilisez jamais le clipping tool sur les brushes qui composent le terrain, car cela peut totalement corrompre la map. Si vous voulez ajouter des structures dans le terrain, supprimez les brushes individuellement. Vous pouvez sélectionner les brushes individuellement en sélectionnant le terrain puis en appuyant plusieurs fois sur la touche TAB.
http://www.game-lab.com/images/tuts/terrains_easygen/easygen_puce.jpeg Si les textures ne sont pas alignées correctement dans le jeu alors que cela paraissait juste sous EasyGen, essayez de supprimer la première colonne de pixels à gauche de l'image PCX (faites d'abord une sauvegarde).