Unreal Design | SG Special Unit
Unreal.fr
Bienvenue sur Unreal.fr ( Connexion | Inscription - Pourquoi ? )
#unreal.fr Stay Tuned !

Votre premiére map sur UEd 3.0

Mapping
Auteur : DrakeSlayer

Le but de ce tutorial est de donner aux mappers débutants de nombreuses notions de mapping indispensables pour créer une première map. Dans ce tutorial, je vais créer une map devant vous : je vous recommande d'ouvrir UnrealED et de faire la map en même temps que vous lisez de même que je vous conseille fortement d'avoir lu le tutorial Prise en main de UnrealEd avant de commencer le présent document.

Avant de faire une map il faut échafauder le gameplay et l'architecture de celle-ci : imaginez la en 3D dans votre tête, puis griffonnez son plan sur un papier. Cette étape est essentielle au début parce que si on fait une map directement sous UEd sans phase préparatoire, on n'y aura pas assez réfléchi et il y a de bonnes chances qu'on rencontre des problémes pendant la création en voulant rajouter/enlever des pièces ici et là...

Chaque mapper a sa propre façon de dessiner, et il est souvent impossible de s'imaginer la map grâce à un plan. Mais pour vous donner un exemple, voici la petite map 1vs1 que nous allons créer.


Maintenant au travail !


1) LE LAYOUT :

Le layout est le "squelette" de la map, il s'agit juste du BSP de base, les adds et les subtracts de la map. Créez un cube avec 2048 units de hauteur, 1024 de largeur et 1536 de longueur :


Après avoir cliqué sur Build, vous pouvez déplacer le cube pour que sa base atteigne z = 0. Cette action n'a aucun intérêt ingame, mais je trouve que c'est mieux dans d'avoir le sol de la map à l'altitude 0, c'est essentiellement une question de goût...


Ensuite, déplacez le brush sur la gauche afin de laisser 256 unités entre lui et le centre du monde (0.0.0)


Puis faites "substract" . Effectuez maintenant la même opération du coté droit de l'origine du monde.


Pour que ces 2 grandes pièces puissent communiquer, nous allons faire un peu de vertex editing : Faites un cylindre à 3 cotés et de 384 unités de hauteur puis déplacez les points à ces endroits (pour qu'un point colle à la grille, clic-droit dessus après l'avoir sélectionné) et cliquez sur "substract".


Faites maintenant un cube de 384x1024x512 et soustrayez-le à cet endroit :


Un autre de 1024x256x256 là (base à z = 0)


Le prochain brush est l'un des derniers, il a ces dimensions : 256x768x768. Il faut que la face du haut soit à z = 0. Soustrayez le brush quand il est au centre de la grande salle. Faites de même pour l'autre pièce.


Enfin le dernier brush, faites un grand cube de 4096x4096x4096 et placez-le au-dessus de nos autres brushes, sa base est a l'altitude 1792 (aidez-vous de la grille pour le placer à la bonne hauteur en changeant d'échelle pour vous aidez si besoin est : 1792 = 7 cubes de 256 ou 3.5 cubes de 512...)


Voilà, on a fini le layout de la map. Mais comme vous le voyez notre carte n'est pas encore jouable (pas de textures, pas de lighting, pas d'items...)


2) LE TEXTURING :

Dans cette partie, nous allons texturer les surfaces de la map. Pour l'instant, les murs sont recouverts de bulles vertes qui ne sont pas terribles...J'ai eu plusieurs idées de style pour cette map (moderne, gothique comme dans Quake3) mais je trouve que l'égyptien conviendra parfaitement. Donc, nous allons habiller les surfaces de la carte avec des hiéroglyphes et des pierres antiques...

Donc sélectionnez toutes les surfaces de sol qui sont à z = 0 et ouvrez le Texture Browser, ainsi que le package barrensArchitexture, le sous-dossier floors et choisissez la texture nommée flr02BA. A ce moment là, les surfaces changent d'aspect et des petits pavés couvrent le sol de la carte. Mais l'alignement des textures entre les brushes ne coïncide peut-être pas du tout comme montré ci-dessous.


Si c'est le cas, pour y remédier sélectionnez les 5 surfaces et faites clic-droit -> Surface Properties -> Alignement -> Planar -> Align.


Mais, il y a toujours un problème : la texture est un peu trop grosse. Dans l'onglet Pan/Rot/Scale mettez le paramétre Scale à 0.5


Ensuite, sélectionnez les murs de la salle de gauche, et appliquez la texture de hiéroglyphes du package appelé NaThCrossfire.utx. Les murs de la salle de droite seront recouverts de la texture barrensArchitexture -> Decoration -> wall06BAb. Posez la texture barrensArchitexture -> Decoration -> Wall04BA sur les murs des petits couloirs triangulaires et sur ceux de la passerelle du haut. Texturez les 4 faces du conduit menant du petit couloir à la passerelle avec les textures barrensArchitexture -> Decoration -> Deco01BA, 02BA et 03BA (utilisez la même texture pour les 2 murs opposés). Changez leur taille (Scale 0.25). BarrensArchitexture -> Ceiling -> Cel02BA conviendra à tous les plafond restants. Les dernières textures encore vertes (le plancher de la passerelle et les 2 cavités) vont être remplacées par une nouvelle nommée barrensArchitexture -> Ceiling -> Cel01BA.

Non, le texturing n'est pas encore terminé, je trouve que certaines textures sont mal centrées comme celle du passage entre le rez-de-chaussée et le 1er étage. Utilisez le pan dans les Textures Properties ou utilisez le bouton Texture Pan.


Visitez la map, et où les textures vous semblent mal ajustées utilisez les 2 outils précédents pour aligner tout ça. Si vous voulez faire tourner une texture, utilisez le bouton Texture Rotate ou dans l'onglet Pan/Rot/Scale faites pivoter la texture de 45°, 90°.

Voila ce que ça donne quand la map est texturée :


Ça prend de la gueule en effet, mais il manque un élément important pour l'ambaince de ce projet en particulier : le ciel.


3) LA SKYBOX :

Comme vous le voyez, on a laissé beaucoup de place au-dessus de la map. Nous allons y intégrer le ciel. Faites un cube de 256x256x256 et soustrayez-le à l'extérieur de la map en faisant bien attention à ce que ce cube ne communique avec aucune partie du map lui-même : ce doit être une zone entiérement à part du layout texturé !!!

Ouvrez le Static Meshes Browser puis le dossier appelé Awstellarmesh.usx. Insérez dans votre cube nouvellement créé le static mesh Skyball en le mettant au centre de la boite. Ajoutez aussi l'autre mesh du package (celui qui représente une lune) et changez-lui sa taille :


Ne centrez pas votre lune, un léger décalage lui donnera l'air plus réel...


Cliquez-droit dans votre boite et faite Add light here. Si elle n'apparaît pas, changez l'échelle de votre grille (un nombre plus petit que l'actuel). Déplacez-la au centre de votre cube. Ensuite, ouvrez l'Actor Browser et grâce aux petits + ouvrez ses différentes sous-sections : Info -> ZoneInfo. Et cliquez (ou double-cliquez) sur SkyZoneInfo. Dans votre cube, faites clic-droit -> Add SkyZoneInfo here. Puis centrez cet acteur au milieu de votre Skyball.


Sélectionnez les 4 textures du gros brush qui surmonte la map. Pour le style appliquez la texture du package WM_Textures -> Editor -> Sky. Gardez la sélection et allez dans Texture properties et cochez 2 cases : Unlit et Fake Backdrop, la premiére pour que UEd ne perde pas de temps à calculer des ombres sur ces surfaces durant le Rebuild et pour que ces mêmes ombres ne soient pas des LightMaps supplémentaires qui encombreront la mémoire durant les parties, la seconde pour que la Skybox soit visible à travers ces surfaces).


Buildez
tout ça . Pour savoir si votre skybox fonctionne : clic-droit sur la barre de la vue 3D -> View -> Showbackdrop.


Voilà, notre skybox est toute belle.


4) LES STATIC MESHES :

Dans cette partie, nous allons ajouter de l'objet à la map, histoire de lui donner plus de personnalité et d'atmosphére parce-que c'est un peu CubeLand pour le moment. Ouvrez le Static Mesh Browser et insérez le static mesh 'BarrenHardware.Pillars.ECpillar6' (clic-droit -> add static mesh 'BarrenHardware.Pillars.ECpillar6' here) à ces deux endroits après avoir changé leur scale :


Puis ajoutez 2 fois le mesh 'Egypt_techmeshes_Epic.Deco.egypt_jumpad_disk' à ces deux positions :


Ensuite, ajoutez 4 des meshes EgypttechmeshesEpic.Deco.egypt_techpassage, changez leur taille (0.8 /1.3 /0.8) et placez-les ainsi :


Le static mesh 'BarrenHardware.Miscellaneous.ECrypt02BA' conviendra parfaitement ici, après un petit changement de taille :


Allez, on va aussi ajouter deux petits 'BarrenHardware.Miscellaneous.EDetail01BA' au centre du plafond près des 2 autres meshes dans un couloir et au premier étage.

Pour finir avec les static meshes, ajoutons des statues : StaticMesh'BarrenHardware.Statues.MiscStatue02BA' et staticMesh'BarrenHardware.Statues.MiscStatue01BA' en modifiant leur scale (2/2/2.5).


Je vais vous donner un petit truc dont je me sers souvent. Les statues ont une texture qui ne convient pas du tout à la map. Ouvrez le Texture Browser -> 'BarrensArchitecture.Base.gold04ba_Shiny'. Ensuite cliquez sur une statue (l'une après l'autre) propriété -> display -> skins -> ajouter et cliquez sur utiliser.


Votre statue obtient alors une texture toute dorée. Faites pareil avec l'autre pour éviter que les deux piéces de votre map ne semblent dépareillées.


Notre map est maintenant plus décorée, mais y'a encore du boulot ! N'hésitez pas à ajouter d'autres décorations de votre choix si vous le souhaitez, en manipulant les divers paramétres de scale et de skin pour tester différents effets tout en approfondissant l'atmosphére de ce travail en cours : gardez simplement à l'esprit qu'il est toujours préférable d'éviter de mélanger des packages aux thémes trés différents les uns des autres afin de conserver une homogénéité et une cohérence visuelle, que ce soit avec les static meshes autant qu'avec les textures...


5) LE LIGHTING :

Cette partie vous enseignera les bases de l'éclairage.

En-dessous des 2 static meshes 'BarrenHardware.Miscellaneous.EDetail01BA' faites clic-droit -> add light here.

Faites la même chose au-dessus des meshes nommées EgypttechmeshesEpic.Deco.egypt_techpassage (4 lumières par salle) :


Puis une dernière lumière au dessus du static mesh du couloir (StaticMesh'BarrenHardware.Miscellaneous.ECrypt02BA')

Je ne pense pas que dans cette map nous allons changer les propriétés des lumières, mais je vais quand même aborder le sujet. Faites clic-droit sur un light actor -> properties -> light color :
- Lightbritness
: luminosité de la lampe, plus ce nombre est élevé, plus elle éclairera fort.
- Saturation & Hue : couleur de la lampe, mais il vaut mieux utiliser le bouton couleur pour mettre une lampe de couleur originale. (Je vous déconseille d'utiliser des lumières trop colorées, elle manque de réalisme et puis surtout elles font généralement mal aux yeux.)

Dans Light Actor -> Properties -> Lighting, le paramétre Light Radius permet de gérer le rayon d'action de la lampe, c'est-à-dire la distance sur laquelle la lumiére qu'elle émet sera visible (256 unités max). Light Period, Light Effect et Light Type sont fuxxorz sous UT2004, donc ne perdez pas votre temps à manipuler ces paramétres.

Pour rendre des lumières plus vraies, nous allons ajouter des coronas, ou en français halo de lumière. Ouvrez le Texture Browser -> Texture'EpicParticles -> Flares et sélectionnez la texture FlickerFlare. Sélectionnez toutes les lumières près des meshes EgypttechmeshesEpic.Deco.egypt_techpassage, allez dans Lighting -> bCoronas = Vrai. Ensuite prenez les lumières une par une et faites Light Properties -> Display -> Skins -> Ajouter -> Utiliser.

Ensuite le menu coronas : MaxCoronasSize (taille maximum du corona quand on s'éloigne) = 80 et MinCoronasSize (taille minimum du corona quand on se rapproche) = 60. Pour faire ressortir les coronas, allez dans les champs LightColor et remplissez Hue = 10, Saturation = 97.

Nous allons aussi ajouter des coronas vers les static meshes situés dans un couloir et au premier étage (espèce de pyramide). Leur skin de coronas seront AW-Cubes.BrightCube.BrightFace4. Leur taille maximum sera 100 et leur minimum sera 50. Au premier étage, vous devez ajouter une light. Sélectionnez les 2 lumières et dans le LightColor, Hue = 164, Saturation = 104. Indiquez 64 de Brightness pour la light du premier. Ensuite, créez des lights et posez-les sur les 2 meshes de Jumppad que l'on a mis dans chacune des grandes salles. Mettez le Brightness de ces lights à 0, leur Hue à 83 et leur Saturation à 153. Leur skin est AW-Cubes.BrightCube.BrightFace4. Leur taille est 80/50.

Faites un Rebuild complet

Quelque chose me turlupine : une des textures de la map est unlit (les hiéroglyphes bleus et verts) : ça signifie qu'elle n'est pas affectée par l'éclairage et ça détruit notre ambiance. Changeons-la par 'BarrensArchitecture.Decorations.wal06BA'. Je trouve aussi que la lampe d'un couloir (celui où il y a les 2 pilliers/static meshes) a un rayon trop fort : Light Propreties -> Lighting -> Radius = 32.

Je trouve que la map est un peu sombre. Nous allons ajouter une Sunlight pour reproduire la lumière du soleil : c'est une lumière normale mais dont le Radius est illimité. Actor Browser -> Light -> Sunlight. Ensuite faites clic-droit et add Sunlight here. C'est une petite boule jaune. Placez la au centre de votre ciel, flèche vers le bas. Buildez. Je sais bien que nous avons fait une grosse lune, mais elle éclaire trop : Light Properties -> LightColor -> LightBrightness = 32.

C'est la fin de cette partie sur le lighting, voila notre map qui prend de la gueule :


6) VOLUME & FLUID SURFACES :

Dans cette partie, vous allez apprendre à faire de l'eau et de la lave sous UnrealED.

Faites un brush de 240x768x768 puis positionnez-le dans une des cavités de l'une des grandes salles (le bas de ce brush au fond de la cavité). Puis faites clic-droit sur le bouton Volume -> Physics Volume .


Nous allons faire de l'eau dans la salle dont les hiéroglyphes ne sont pas dorés. Donc faites Physics Volume Properties -> Physics Volume -> bWaterVolume = vrai, VolumeFog -> bDistanceFog = Vrai, changez la couleur en bleue, DistanceFogEnd = 2048, DistanceFogStart = 256


Dans l'autre salle, nous allons faire un volume de lave. Donc faites Physics Volume Properties -> Physics Volume -> bWaterVolume = Vrai, bPainCausing = Vrai, Damage Per Sec = 100, DamageType = FellLava, VolumeFog -> bDistanceFog = Vrai, changez la couleur en rouge, DistanceFogEnd = 256, DistanceFogStart = 64


Voila, ouvrez maintenant l'Actor Browser -> Info -> FluidSurfaceInfo. Ajoutez-en 2 (une au dessus de chaque cavité), puis cliquez sur cette texture 'UCGeneric.Glass.glass01' et faites Display -> Skins -> ajouter dans le FluidSurfaceInfoProperties de la salle où les hiéroglyphes ne sont pas dorés. A ce moment, vous voyez la surface de l'eau. Faites la même chose avec cette texture 'SC_Volcano_T.Lava.SC_MagmaHot_T' pour l'autre Fluid Surface afin de lui donner l'apparence de la lave.


Buildez. Vous pouvez testez. Vous avez dù voir que les 4 meshes au-dessus des Volumes sont transparentes vues de dessous : c'est parce-que les faces d'un Static Mesh ne sont visibles que d'un coté, celui où sont orientées ce qu'on appelle les "normales" des polygones. Alors faites un simple Add d'un cube de 32x512x768 juste sous ces meshes pour dissimuler ce vide. Attribuez à ces brushes une texture déjà utilisée comme BarrensArchitexture -> Floors -> Flr02BA. Buildez.

Il manque toujours quelque chose : le bruit de l'eau quand on y rentre ou quand on y sort. Ouvrez le Sound Browser -> GeneralImpact et sélectionnez ImpactSplash2.


Ouvrez les propriétés du Physics Volume (coté eau) et faites Physics Volume -> EntrySound -> Utiliser. Dans le Sound Browser jouer le son WaterExit et dans les propriétés du Physics Volume (coté eau), faites Physics Volume -> ExitSound -> Utiliser.


Voila, nos 2 volumes sont fonctionnels, et notre map voit son ambiance presque terminée.



7) SONS :

Ici, on va intégrer un petit son au map, car il manque à l'ambiance un petit bruit extérieur.

Ouvrez le Sound Browser -> 'OutdoorAmbience.exterior12'. Ouvrez l'Actor Browser -> Keypoint -> AmbientSound. Puis en plein milieu du grand ciel de la map, faites clic-droit -> Add AmbientSound here.


Ouvrez les propriétés du AmbientSound actor -> Sound -> AmbientSound -> Utiliser. Mettez le radius au maximum, mais diminuez le volume, car un son aussi répétitif que celui-là ne doit pas lasser les gamers. Changez aussi la vitesse de lecture (pitch) à votre convenance.


Voilà, un petit son accompagnera maintenant la map. Vous pouvez en ajouter autant que vous voulez (mais pas trop non plus, hein : ces trucs-là peuvent facilement bouffer les performances...) et vous amuser à modifier les paramétres pour approfondir l'atmosphére, faites seulement attention à ce que ces sons ne génent pas (trop) le gameplay.


8) TELEPORTEURS :

Vous connaissez tous les téléporteurs : vous avancez sur l'un d'eux et vous êtes envoyé à un autre endroit du map
. Nous allons ici apprendre a en faire un. Actor Browser -> Navigation Point -> SmallNavigationPoint -> Teleporter.


Ensuite sur nos 2 petites meshes de pyramides (au premier et dans un couloir), faites clic-droit -> Add Teleporter here. Dirigez leur flèche vers le centre de la map (Y = 0). Ouvrez les propriétés de celui du rez-de-chaussée et faites Event -> Tag = t1 (ce sera le nom de ce téléporteur) et Teleporter -> Url = t2 (c'est l'endroit où on sera teleporté). Dans les propriétés de celui du 1° étage : Event -> Tag = t2 et teleporter -> Url = t1.


Testez pour vérifier si ça marche. Faites les corrections nécessaires le cas échéant...


9) JUMPPADS :

Les Jumppads ou Jumpers sont ces acteurs qui vous envoient à des hauteurs inaccessibles par simple saut ou par Shield Jump.

Ouvrez l'Actor Browser -> Navigation Point -> Jumppad -> UTJumppad.


Sur chacune de nos 2 belles meshes surmontées d'un corona vert faites Add UTJumppad here et centrez-les :


Puis au centre du premier étage faites Add Pathnode here. Puis ouvrez les propriétés du Pathnode et notez son "nom" : normalement, il est appelé PathNode0. Ouvrez les propriétés du UTJumppad -> Navigation Point -> ForcedPaths et recopiez-y le nom du Pathnode, ici PathNode0 (pour les 2 Jumpers)


Buildez les Paths. Vous pouvez tester en affichant les paths : vous devriez voir une courbe pourpre relier le Jumppad à la Pathnode lorsque le Jumppad est sélectionné. Il manque quelque chose quand même : du son pour le Jumppad.

Sound Browser -> WM_Sound -> WM_BootJmp
. Puis les propriétés du Jumppad -> Jumppad -> JumpSound -> Utiliser.


Dans vos prochaines maps, si votre Jumppad ne vous envoie pas assez haut, modifiez le paramétre JumpZModifier en conséquence.


10) MOVERS :

Les movers sont les objets qui bougent dans une map, comme les ascenseurs ou les portes...

Dans le Static Meshes Browser, sélectionnez 'BP_egyptnew.details.egyptnew_detail_Panel01' puis cliquez sur le bouton Add Mover Brush. Puis changez le Scale : 1.2x1.2x1. Dans les propriétés -> Display -> bStaticLighting = Vrai. Positionnez-le ici :


Puis faites clic-droit -> Mover -> Key1. Ensuite élevez le Mover pour qu'il soit au même niveau que le premier étage puis faites clic-droit -> Mover -> Key0 (base) : à ce moment, le Mover redescend à sa position initiale.

Pour rendre le Mover plus vrai, on va lui ajouter un son. Dans le Sound Browser, sélectionnez le son 'PickupSounds.LargeShieldPickup' puis dans les propriétés du Mover -> MoverSound -> ClosingSound et OpeningSound, faites "utiliser". Sélectionnez maintenant le son 'IndoorAmbience.clank4' et dans les propriétés du Mover -> ClosedSound et OpenedSound faites "utiliser".


Même si les propriétés de ce Mover vont très bien, je vais vous expliquer briévement quelques petites choses sur les Movers. Mover properties -> Mover -> DelayTime (c'est le temps qui s'écoule avant que le Mover ne commence à bouger), StayOpenTime (le temps durant lequel le Mover reste en position ouverte), MoveTime (le temps du trajet du Mover entre 2 Keys), MoverEncroachType (comportement du mover lorsqu'il est bloqué).


XI) ITEMS :

Les items sont tous les objets qu'on peut collecter dans un niveau : ça comprend des choses comme les armes, les munitions, les bonus mais aussi les vies et autres boucliers.

Nous allons d'abord placer des PlayerStarts dans notre map pour que les joueurs puissent apparaître. Au centre des 2 couloirs faites clic-droit -> Add Playerstart here. Dirigez ensuite la flèche vers le centre du monde (x = 0 et y = 0). Faites de même au pied des 2 statues des grandes salles. Je pense que c'est suffisant pour une map de cette taille : bien sùr, si la PlayerLoad était plus élevée, il en faudrait davantage (en régle générale, au moins autant que ce qu'il y a de joueurs prévus au maximum).

Maintenant les armes, ouvrez l'Actor Browser -> xPickupBase -> . Si vous préférez les bases d'arme de UT2004 à celle de UT2003, pas de problème : continuez de dérouler les petits + et cliquez sur NewWeaponBase.


Placez-les (en faisant Add WeaponBase here ou NewWeaponBase here) au premier étage sous la pomme, encore que vous n'êtes pas obligé de placer tous les WeaponBases sous des Pathnodes mais dans ce cas précis c'est pour que le joueur qui utilise le Jumppad puisse prendre l'arme au passage sans effort. Vous allez remarquer qu'avec les pickups, il faut toujours les repositionner car leur base est soit enfoncée dans le sol soit elle vole.

Si vous avez choisi d'ajouter des WeaponBases de UT2004, il y a un petit problème :


Il y a un souci avec la texture par défaut. Pas de probléme, faites NewWeaponbase properties -> Display -> Skins -> supprimer les 2 skins. Notre problème est résolu. Par la suite, dupliquez cette WeaponBase pour éviter d'avoir à recommencer cette manip' à chaque fois ; autrement, si vous avez déjà plusieurs de ces WeaponBases dans votre map, tapez "newpickupbases" dans la console et appuyez sur Entrée, le skin sera changé automatiquement.

Ajoutez également des WeaponBases dans les couloirs et au sommet des escaliers des meshes qui surplombent la lave et l'eau. Sélectionnez ces dernières WeaponBases et faites Display -> bStaticlighting = Vrai.

Nous allons maintenant configurer les WeaponBases : pour indiquer quelle arme sortira de quelle base, faites WeaponBase properties -> xWeaponBase -> WeaponType à l'aide du menu déroulant choisissez quelle arme vous voulez voir apparaître. Par exemple, mettons un sniper au premier étage :


Coté lave, il faut un Lance-Roquette (rocketlauncher). Coté eau, un MiniGun. Dans le couloir près du mover un CannonFlak. Et dans l'autre couloir un BioRifle. A coté de chaque WeaponBase, déposez les munitions correspondantes à l'arme (2 packs suffiront) : pour cela allez dans l'Actor Browser -> PickUp -> Ammo -> UTAmmoPickUp et sélectionnez les munitions adéquates. Ajoutez « ici et la » quelques ammos, mais pas trop...


Ajoutons maintenant de la vie : Actor Browser -> xPickUpBase -> HealthCharger< ou NewHealthCharger. Mettez-en un dans chaque salle ici :


Symétriquement dans les salles, placez un petit bouclier : xPickUpBase -> ShieldCharger. On va caser un PickUp assez sympa : la WildCardBase. En gros, il fera apparaître successivement des items différents : Shield, Ampli, Keg O' Health... C'est dans xPickUpBase -> WildCardBase. Il faut que ce gros cadeau soit caché, on va le mettre dans l'eau, sous les meshes. On va ensuite déposer quelques capsules d'adrénaline vers les bases de vie. Actor Browser -> PickUp -> TournamentPickUp -> AdrenalinePickUp. Et des petites ampoules de vie vers les boucliers : PickUp -> TournamentPickUp -> AdrenalinePickUp.

Vous pensez bien qu'on ne va pas ajouter tous les PickUps disponibles, alors voilà comment les trouver :
- Keg O' Health : Actor Browser -> xPickUpBase -> SuperHealthCharger (ou NewSuperHealthCharger bien sùr)
- SuperShield : Actor Browser -> xPickUpBase -> SuperShieldCharger
- Ampli : xPickUpBase -> udammagecharger

Maintenant la map est presque jouable, nous avons une ambiance, des armes, de la vie... mais c'est encore loin d'être fini !


12) BOT PATHING :

Le Bot Pathing, c'est le trajet des bots dans la map...

Faites clic-droit sur la barre de la vue 3D -> View -> Show Paths


Maintenant, nous pouvons voir le trajet des bots. Même si on a encore rien fait, les bots sont capables de se mouvoir dans cette map. En effet, les Items sont déjà reliés entre eux.

Mais il y a quelques problèmes car le réseau de lien n'est pas achevé : le Bot Pathing est incomplet et comme les bots sont idiots, ça va leur poser des problémes... Faites clic droit -> Add PathNode here pour qu'une pomme apparaisse. Ajoutez-en quelques une pour compléter le réseau en les plaçant à distance réguliére les unes des autres et de maniére à ce que l'ensemble du map soit couvert : par exemple, la salle du BioRifle n'est pas reliée au Jumppad, il faut des nodes vers les PlayerStart au pied des statues.

Pour les ascenseurs, les simples Paths ne suffisent pas. Il faut utiliser d'autres acteurs spécifiques : Actor Browser -> Navigation Point -> LiftCenter. Placez-le au centre de l'élévateur puis faites clic-droit sur le Mover pour accéder à ses propriétés -> Event -> Tag et notez le nom de l'ascenceur (ou bien donnez-lui le nom que vous souhaitez : parfois il est plus simple de donner à un mover un nom particulier, on s'en souvient mieux lorsqu'on le choisit soi-même). Puis dans les propriétés du LiftCenter -> LiftTag recopiez le nom de l'ascenseur.

Retour à l'Actor Browser -> Navigation Point -> LiftExit, puis faites clic-droit -> Add LiftExit here au premier étage. Puis dans LiftExit Properties -> LiftExit -> LiftTag recopiez aussi le nom du Mover et dans le paramétre SuggestedKeyFrame mettez la valeur 1 car cette PathNode correspond à la Key1 de l'ascenseur. Répétez exactement la même procédure au rez-de-chaussée, mais en mettant le SuggestedKeyFrame à 0 cette fois puisque c'est l'état initial, donc 0, de l'ascenceur. Les LiftExit doivent être placés à quelques distances du Mover auquel ils sont liés lorsqu'on regarde dans la Top View de l'éditeur : 64 à 128 unités sont un chiffre idéal, évitez de dépasser les 256 unités et utilisez des PathNodes intermédiaires pour relier ces acteurs au reste du Bot Pathing si c'est nécessaire.

Il y aura un message d'erreur lors du prochain Rebuild car il faut encore changer les propriétés du Mover -> Object -> InitialState -> StandOpenTime.

Nous allons maintenant voir les JumpSpots : ce sont les acteurs qu'utilisent les bots pour sauter. Vous commencez à connaître le chemin : Actor Browser -> Navigation Point -> JumpDest -> JumpSpot. Mettez-en sur les meshes qui surplombe la lave et l'eau. Ajoutez des pommes au premier étage, le plus proche possible de la fin de la passerelle.

Nous allons apprendre aux botssniper. Créez un cube de 512x1024x1536 et mettez-le dans une des salles (le bas du brush en bas de la salle) et faites volume -> SnipingVolume. Faites de même dans l'autre salle. Donnez des nom a ces volumes : Event -> Tag -> SnipingVolume0 et SnipingVolume1 (ce sont des exemples : comme pour les movers, vous pouvez les appeler comme vous voulez...). Puis retournez dans l'ActorBrowser -> Keypoint -> AIScript -> ScriptedSequence -> UnrealScriptedSequence. Posez-en 2 en haut de la passerelle, chacun d'un coté et dirigez leur flèche vers le bas. Puis ouvrez les propriétés de l'UnrealScriptedSequence -> UnrealScriptedSequence -> bSniping = Vrai, et SnipingVolume -> Tag = "nom du volume en dessous du uss". Dans le champ WeaponPreference -> Class = 'xweapons.sniperrifle'.

Ensuite Rebuildez pour tester la map, et mettez-vous en spectateur en passant par le menu grâce à Echap. Regardez le bot faire ces tours. Si vous décelez des problèmes, il y a un moyen très efficace pour indiquer à un bot d'aller ou non dans une certaine direction à partir d'un Node. Ouvrez les PathNode Properties -> Navigation Point -> ForcedPath = "nom de l'acteur où doit aller le bot" (pour trouver le nom de cet acteur, allez voir dans Actor Properties -> Object -> Name), ou bien pour interdire aux bots d'aller à un endroit PathNode Properties -> Navigation Point -> ProscribedPath = "nom de l'acteur où ne doit PAS aller le bot". Aprés avoir Rebuildé les Paths, vous verrez que la couleur de certains a changé suivant si ces chemins ont été interdits ou non...

Cette étape est souvent longue et fastidieuse, mais elle reste capitale car beaucoup de gens jouent hors-ligne. Pour une explication plus compléte des acteurs permettant de créer, gérer et améliorer un Bot Pathing, je vous recommande le tutorial de Blitz (en anglais)


13) OPTIMISATION :

Cette map est toute petite, il n'y a donc pas trop besoin d'optimisation car le niveau de FPS (Frame Per Second) est déjà assez haut. Mais je vais quand même vous expliquer les bases car c'est une étape fondamentale dans le processus du Mapping. Lancez votre map et tapez "rmode1" dans la console (accessible en appuyant sur Tab ou sur la touche "ù"). Vous voyez maintenant tous les polygones de la map, même à travers les murs BSP car ceux-ci sont comme transparents pour le moteur de sorte que le jeu peut trés bien "voir" tout le map d'un seul coup.

Il existe plusieurs types d'optimisation :

- Les zones :
Créez un Brush de type Sheet :


Et placez-la au premier étage comme indiquée ci-dessous :


Puis faites AddSpecialBrush -> Zone Portal.


Répétez l'opération de l'autre coté de la passerelle. Cette partie du map devrait ressembler à peu prés à ça :


Créez ensuite une autre Sheet pour fermer les couloirs latéraux du rez-de-chaussée de la même façon que pour la passerelle du premier étage. Puis faites un trés grand Sheet pour refermer les grandes salles par le haut et faites un Rebuild All.

Maintenant, regardez à nouveau votre map avec la vue Zone/Portal :


Les zones sont fonctionnelles. Lancez UT et regardez la map en "rmode1". Vous voyez que l'ordinateur ne considére plus certains polygones. Pour le plaisir des yeux, nous allons donner des noms aux zones. Ouvrez l'Actor Browser -> Info -> ZoneInfo. Dans chaque zone faites clic-droit -> Add ZoneInfo here. Puis dans les ZoneInfo Properties -> ZoneInfo -> LocationName = "le nom de votre choix", essayez toutefois de trouver un nom caractéristique de la zone correspondante, comme celui de l'arme ou du PowerUp principal : les hardcore gamers apprécient ce genre de chose, par exemple pour pouvoir retrouver aisément un équipier dans un team game (ce qui n'est pas le cas de cette map mais bon, vous êtes bien là pour apprendre, non ?), des noms tels que LavaRoom, WaterRoom, Flack Corridor, Bio Corridor, UpZone feront ici trés bien l'affaire.

- Les AntiPortals :
L'un des meilleurs moyens d'optimisation, l'ordinateur ne percevra pas les polygones qui sont derrière cet acteur. Faites un gros cube de 832x768x512 et placez-le dans le mur sous la passerelle du premier étage. Attention : il ne doit pas dépasser dans l'ascenseur ! Puis faites Add AntiPortal et le tour est joué.

N'abusez pas de cet acteur : même s'il est trés puissant, il a une forte influence sur l'arborescence BSP et peut facilement générer des erreurs. Aussi, il fonctionne mieux sur des surfaces réellement vastes alors ne commencez pas à en mettre partout, vous obtiendrez l'effet inverse. Finalement, il est également assez capricieux et ne fonctionne pas toujours au mieux aussi apprenez à vous servir des autres moyens d'optimisation en complément des AntiPortals.

- Le fog ou brouillard :
Technique "bourrine" pour optimiser en créant un brouillard sur la map. On ne va pas l'utiliser ici. Mais pour en faire un c'est très simple. Soit vous faites un volume contenant un fog (comme notre eau ou notre lave), soit vous le définissez avec les Zones Properties -> Zone Light puis configurez-le comme vous estimez qu'il conviendra le mieux, c'est le même système que les volumes en gros. Le Fog occulte pour le moteur tout ce qui se trouve derriére la limite indiquée dans le champ DistanceFogEnd, c'est-à-dire tout ce qui n'est pas visible pour le joueur non plus - contrairement à la plupart des autres moyens d'optimisation.


14) LEVEL PROPERTIES :

Le point final de ce tuto, et de toutes vos prochaines maps, seront les propriétés du niveau.

Appuyez sur F6 pour ouvrir le Level Properties ou passez par le menu View -> Level Properties. Ensuite ouvrez Level Summary :

- Author : c'est le nom du ou des gars qui ont fait la map. Dans cet exemple, c'est moi l'auteur donc j'inscris mon nom ^^.

- Description : c'est un texte de présentation qui résume l'ambiance générale ou bien l'historique de l'aréne... Ce n'est pas fondamental et plus la "cerise sur le gateau" qu'autre chose aussi faites-vous plaisir ! Pour cet exemple, voici ce que j'ai écris :
« Dans un désert sec, sous un ciel étoilé où une énorme lune trône existe un temple antique. Là, deux des plus grands gladiateurs du moment s'affrontent dans un match sans merci. Serez-vous à la hauteur ? »

Je vous conseille d'éviter les fautes et de faire comme moi ici en rendant votre map "plus grande", plus belle et tout. Vous pouvez inventer une petite histoire... Faites un copier-coller de ce texte dans la description du map ou bien rédigez votre propre laïus.

- IdealPlayerCount : pour indiquer le nombre de joueurs recommandé. Ici, le minimum 2 et maximum 2 car il s'agit d'une map "1contre1".

- Title : c'est le nom de la map, on va appeler celle-là : 1-on-1-tutorial.

- Screenshot : comme le nom l'indique, c'est pour insérer une prévisualisation du map. Lancez donc votre UT pour prendre un joli screenshot. Mettez-vous en mopde spectateur, et tuez tout les bots en tapant "KillAllBot" dans la console. Trouvez un angle de vue sympa et prenez un screenshot avec F9 puis allez le chercher dans votre dossier UT2004/System et ouvrez-le avec un logiciel de retouche photo comme Paint ou avec un autre plus évolué comme Photoshop : redimensionnez l'image pour que sa taille soit en puissances de 2 (128x256 ou256x512 ou 512x1024) et sauvegardez-le au format Bitmap (.bmp), mais d'autres formats comme le .tga ou le .pcx sont aussi acceptés...

Ouvrez le Texture Browser
puis faites File -> Import. Une petite fenêtre s'ouvre : sélectionnez votre screenshot dans la liste et faites "OK" pour en obtenir une seconde dont vous remplissez les champs de cette façon :


- Package : c'est le nom du package où sera enregistré votre texture, tapez MyLevel, comme ça il n'y aura pas de petit fichier .utx additionnel à distribuer avec la map et vous ne modifirez pas un package original du jeu non plus, la texture sera ainsi enregistrée dans le fichier .ut2 et fera partie intégrante du map.

- Group : n'est pas obligatoire, il s'agit du groupe de la texture (tel que walls ou ground dans les packages officiels...), pour un screenshot de prévisualisation du map ce n'est vraiment pas important.

- Name : le nom du screenshot. Encore une fois, c'est comme vous voulez...

Puis cliquez sur "OK" pour terminer cette étape.

Maintenant, votre dossier MyLevel (accessible par le menu déroulant) contient votre texture. Sélectionnez-là.


Ouvrez Level Summary -> ScreenShot -> Utiliser.


Il faut aussi trouver une musique de fond pour notre map
: KR-Ghosts-of-Anubis est pas mal avec l'ambiance mais vous pouvez bien sùr en mettre une de votre choix. Dans Level Properties -> Audio remplissez le champ Song avec le nom de la chanson.

Il peut arriver que votre map se lance en mode Dernier Survivant (Last Man Standing) au lieu de DeathMatch quand vous double-cliquerez dessus ou quand vous la testerez : pour remédier a ça, allez dans LevelInfo -> DefaultGameYype et tapez XGame.xDeathMatch.

Pour finir, enregistrez la carte sous le nom « DM-1on1-tutorial »


Voila, la map est enfin finie, vous pouvez y jouer et faire des frags. Pour votre prochaine map, inspirez-vous de celles d'autres mappers puis suivez les différents points de ce tutorial mais aussi de Prise en main de UnrealEd pour vous aider. N'hésitez surtout pas à m'écrire si vous avez des questions ou des remarques sur le tuto, à cette adresse : drakeslayer@hotmail.com.

Bon mapping à tous !

Suite (Techniques d'Eclairage)

4.2k7 - 2007