
Nous allons dans ce tutorial
ajouter des tirs de mortiers aléatoirement et bloquer certains
endroits à l'aide de mines. Nous allons donc besoin d'espace
pour implanter cela. Nous allons donc créer un champs.
Nous allons donc commencer
par faire l'entourage de notre champ à proprement dit. Comme
pour le tuto de l'alphablending, nous allons créer des TERRAIN
MESH en multiple de 64 unités. Vous
avez le libre choix de la taille de votre champ, mais voici comment
procéder. Faites autant de meshs que nécessaire d'une
largeur de 64 x 4 soit 256 unités.

Remontez jusqu'à la
SKYBOXE et continuez à tracer des meshs afin
de finir l'entourage de ce que sera notre champ. Attention à
ne pas faire des meshs trop long.

Créez maintenant les
meshs que nous utiliserons pour mettre la texture adéquate.
Attention, laissez de chaque côté un espace de 4
x 64 soir 256 unités afin de faire
de l'alphablending. Essayez autant que possible de faire des meshs
de 512 x 256 unités. Nous serons tenus par
la suite de couper certains d'entre eux pour avoir un mesh de 256
x 256 unités pour créer des cratères
d'obus.
Créez ensuite les meshs
qui serviront pour l'alphablending de chaque côté du
champ.

Chose faite, commençons
par texturer notre champ. Il existe 3 textures complémentaires
les unes des autres pour créer proprement un champ. Sélectionnez
donc les meshs de notre champ les plus éloignés de notre
maison et texturez les avec la texture : normandy/ground/dirt_clampy@plowedbottrans.
Si besoin est, passez par l'inspecteur de surface et cliquez sur le
bouton NATUREL si la texture n'est pas correctement
mise.

Sélectionnez maintenant
les meshs opposés de notre champ les plus près de la
maison et répétez l'opération avec la texture
: normandy/ground/dirt_clampy@plowedtoptrans.

Il ne reste plus qu'à
prendre les meshs au centre de notre champ pour les texturer avec
la texture : normandy/ground/dirt@plowedfield.

Prenez maintenant les meshs
d'entourage du champ et textez avec la texture : normandy/ground/grass@lp_brecort1b.
Même chose, un petit clique sur le bouton NATUREL
de l'inspecteur de surface pour positionner correctement la texture.

Nous allons maintenant cloturer
notre champs avec un mur. Pour ce faire, reprenez exemple du mur déjà
présent et prlonger le en contournant le champ ainsi créé.
Le long de la SKYBOXE, nous positionnement des modèles
de buissons et d'arbres, il n'est donc pas nécessaire de cloturer.

Terminez par mettre des brushs
au pied de vos murs pour "isoler" (important pour l'optimisation).
La bulle du screenshot suivant vous indique qu'il n'est pas nécessaire
que le mur texturé aille jusqu'à la SKYBOXE,
nous verrons plus loin pourquoi.

Une fois terminé, nous
allons pouvoir de nouveau nous adonner au nivellement du terrain puis
de l'alphablending dans un second temps. Elevez donc les bords montrés
par les flèches rouges, ensuite dénivelez légèrement
le champ comme appris dans le précédent tutorial afin
d'éviter d'avoir un champs tout plat.

Nous allons ici ajouter un
cratère à notre champ pour les besoins de nos tirs de
mortiers. Sélectionnez donc un mesh de 512 x 256 unités,
puis appelez les vertices (touche V). Ensuite, (1)
soit à partir de la vue 3D, soit de la vue
XY Top, et tout en maintenant la touche SHIFT
ou MAJ enfoncée, et à partir de la
ligne de vertices du haut ou du bas (cf. flèches rouges de
la bulle) cliquez sur le point central autant de fois jusqu'à
que vous ayez la rangée de vertices comme sur le screenshot.
Puis, (2) dans le menu
PATCH, sélectionnez DIVISER.
Il s'agit en fait de séparer le mesh en 2
selon les vertices séletionnés.

Désélectionnez
les et prenez en un des 2, puis texturez le avec la texture : global_use/cratered_ground.
Il s'agit d'une texture alpha où il n'est pas nécessaire
de faire de l'alphablending.
Appelez maintenant de nouveau
les vertices, nous allons déformer le mesh pour lui donner
un aspect réel : un cratère d'obus. Prenez donc le vertex
central du mesh (1)
et, à partir de la vue XZ Side ou XZ
Front, décendez légèrement le point
vers le bas pour creuser le mesh. Une fois terminé, vous pouvez
descendre légèrement les vertices (2)
autour de celui-ci pour que le cratère soi le plus réel
possible.

Vos manipulations terminées,
cloner le mesh (BARRE ESPACE) ainsi modifié,
et texturez-le avec la texture initiale soit (normandy/ground/dirt@plowedfield).
Replacez ensuite le mesh sur le premier.

Répétez l'opération
pour avoir ainsi 3 cratères d'obus, de préférence
avec le centre du champ, car il reste à faire l'alphablending
sur le côté de notre champ..

Prenez maintenant les bandes
de meshs créés pour l'alphablending et procédez
au dégradé de couleurcomme dans notre précédent
tutorial. N'oubliez pas d'abord de faire un clone des meshs avant
de travailler l'alphablending.

Finissons l'esthétique
de notre carte en créant des patchs meshs autour de carte comme
le screenshot suivant. La texture utilisée étant : normandy/foliage/foliage_clamp_2048_treeline,
les patchs meshs étant de d'une hauteur de 512 unités.
La déformation est faite en utilisant les vertices. La bulle
vous montre qu'il faudra placer un mesh plus petit (128 unités
de hauteur) avec la texture global_use/foliage_masked@bushwall1agrass,
nous placerons ensuite nos buissons et arbres.

Agrémentez d'arbres
et de buissons ici et là pour rendre un aspect plus naturel.

Dernière petite chose,
nous allons cloturer la carte avec une petite barrière au niveau
de notre END CAP. Nous utiliserons la texture : normandy/transparents/wood_masked@fence2.
N'oubliez pas l'utilisation du bouton X
Tex Flip disponible dans la barre d'outil pour inverser la
texture.

Nous y sommes, nous allons
placer notre premier impact de tirs de mortiers. Pour cela, reprenez
le mesh cratère et repérez le centre
du mesh.

Maintenant, faites un CDS
(1)
SCRIPT ==> MODEL, la fenêtre ENTITY
va s'ouvrir avec une autre fenêtre vous demandant d'ouvrir un
fichier. (2) Cliquez
sur le bouton ANNULER. Normalement, vous allez voir
apparaître un cube rouge, c'est bon signe.

le SCRIPT_MODEL toujours sélectionné,
entrez les informations suivantes : targetname
mortier.

Placez maintenant l'entité
bien au fond du cratère, il doit légèrement dépasser.
Répétez l'opération pour les 2 autres cratères.

Passons maintenant par la création
de mines sur notre carte. Rien de bien sorcier, créez un 3
brushs qui feront le tour de notre champ, assez haut et profond. Attention,
il ne doivent en aucun cas recouper d'autres brushs STRUCTURE.

Les 3 brushs toujours sélectionnés,
(1) faites un CDS
et sélectionnez TRIGGER ==> MULTIPLE. Ensuite,
(2) enregistrez l'information
suivante : targetname minefield.

Il reste simplement à
signaler l'endroit où se trouvent ces maudites mines. Utilisez
pour cela les modèles xmodel/minen1 - xmodel/minen2
- xmodel/minen3 - xmodel/minen4
pour le quadrillage. C'est fini pour le mapping.

Nous allons de nouveau travailler
avec le script pour donner vie à tout cela. Dans notre script
principal, nous allons d'abord déclarer les FX
qui seront utilisés pour les explosions des tirs de mortiers
c'est-à-dire le fichier mortier_fx.gsc :

Voici ce que contient notre
fichier mortier_fx.gsc qui sert à déclarer
les FX :
main()
{
precacheFX();
}
precacheFX()
{
level._effect["mortar_explosion"][0] = loadfx ("fx/impacts/newimps/minefield.efx");
//1er effet de mortier
level._effect["mortar_explosion"][1] = loadfx ("fx/impacts/newimps/dirthit_mortar2day.efx");
//2ème effet de mortier
}

Nos FX maintenant
déclarés, nous pouvons maintenant nous occuper du script
qui fera fonctionner les mortiers. A partir de notre fichier script
principal (tuto_21.gsc), nous allons écire
les lignes nécessaires à son fonctionnement :
main()
{
setCullFog (0, 6500, .32, .36, .40, 0);
ambientPlay("ambient_mp_brecourt");
maps\mp\_load::main();
level thread maps\mp\tuto_fx::main();
level thread maps\mp\tuto_fenetre::main();
level thread maps\mp\mortier_fx::main();
game["allies"] = "american";
game["axis"] = "german";
game["american_soldiertype"] = "airborne";
game["american_soldiervariation"] = "normal";
game["german_soldiertype"] = "wehrmacht";
game["german_soldiervariation"] = "normal";
level thread mortier();
}
mortier()
{
mortier = getentarray ("mortier","targetname");
while (1)
{
wait (5 + randomfloat(5));
GoodPosition = false;
while (!GoodPosition)
{
rand = randomint(mortier.size);
GoodPosition = true;
players = getentarray("player", "classname");
for(i = 0; i < players.size; i++)
{
if (distance(mortier[rand].origin,players[i].origin) < 200)
{
GoodPosition = false;
break;
}
}
}
mortier[rand] playsound("mortar_incoming");
wait (1.9);
origin = mortier[rand] getorigin();
playfx (level._effect["mortar_explosion"][randomint(2)],
origin);
mortier[rand] playsound("mortar_explosion");
radiusDamage(mortier[rand].origin, 200, 200, 0);
}
}
En jaune
se trouve les lignes déjà présentes, en rouge,
les nouvelles lignes à ajouter, ce qui donne :

Vous pouvez maintenant compiler
votre map et tester le fruit de votre travail.
Les fichiers (.map - .gsc)
de notre tuto 21/. 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é.