GECK : 2 - Création d'un premier intérieur
Création d'une cellule d'intérieur:
Nous allons commencer notre mod par son début : le lieu d'arrivée du joueur. Il arrivera par une station de métro dont la ligne arrive par une ligne sous le fond de la mer. Nous allons donc utiliser un intérieur de station de métro pour cet intérieur.
Premièrement, nous allons créer l'intérieur: - Cliquez sur World dans le menu, puis selectionnez Cell...
La fenêtre "Cell" vous permet de créer et de gérer les cellules d'intérieur. Faites un clic droit dans la liste des cellules de la fenetre, et selectionnez "new". Dans la boite qui s'ouvre, mettez l'ID de l'intérieur ( ce nom ne doit contenir que des lettres et des chiffres, sans espaces ni caractères spéciaux. par exemple, MONmetro01. Chaque ID doit être unique, tous les objets de base du jeu, mais aussi les quêtes, les scripts, etc... en ont un)
Une fois le nom entré et validé, selectionnez votre nouvelle cellule dans la liste de cette fenêtre : trois onglets gèrent les caractéristiques de votre cellule :
- cliquez sur interior data et mettez dans le champ name le nom de la cellule tel qu'il doit apparaitre dans le jeu : par exemple "Station de Pawn island"
- cliquez sur l'onglet common data de la fenetre et changez quelques paramètres : Dans "Default Acoustic" selectionnez "IntMetrodefault" par exmple, pour donner une ambiance sonore de métro, et pour le champ "Default Imagespace" (qui gère les effets visuels comme le HDR, etc), selectionnez "MetroDefaultImagespace" par exemple.Verifiez que "Can't Travel From here" est coché.
- cliquez sur l'onglet Lighting, et dans le menu déroulant "Template", selectionnez "metrodefaulttemplate" qui donne un éclairage de métro à la cellule.
Cliquez sur Apply, puis sur OK pour valider vos changements et fermer la fenetre Cell.
Maintenant que les propriétés de l'intérieur sont définies, nous pouvons meubler cette cellule: Dans la fenêtre "Cell View" du GECK, verifiez que le menu worldspace est bien sur "interior", et cherchez votre cellule dans la liste: double ciquez dessus pour l'ouvrir dans la fenêtre de rendu du GECK. La cellule est vide, donc nous allons y poser les éléments de station. la plupart des objets d'architecture intérieure s'emboitant un peu comme des légos de manière précise, il est indispensable de faire quelques règlages:
Pour commencer, vérifiez que les verrouillages de grille et d'angles sont bien activés : lorsque vous déplacerez les objets, ils se caleront sur une grille de 32, 64, 128... pixels, suivant les préférences choisies, et pivoteront par tranche de 45°d'angle par exemple. C'est necessaire pour ajuster facilement tous les éléments entre eux. Pour d'autres éléments ou d'autres opérations, vous aurez à les désactiver de temps à autre, mais laissez les enfoncés la plupart du temps...
Vous trouverez les éléments de station dans la fenêtre "Object Window" du geck : dans l'arborescence, trouvez World Objects, puis Static, puis Dungeons (le métro est considéré comme un donjon), puis Metro : faites glisser les objets suivants sur la fenetre de rendu :
MetTunnelTransToExt01
MetTun1wayRamp01
MetTun1wayRamp02
MetTun3Way01
- Pour ajuster les pièces, cliquez sur l'une d'elles, et déplacez là avec la souris (sur le plan horizontal, donc).
- Pour faire bouger l'élément de haut en bas (sur le plan vertical), maintenez appuyée la touche Z.
- Pour faire une rotation de l'objet sur lui-même sur l'axe horizontal (à plat), bougez la souris en maintenant un clic droit.
Astuce : Il est possible que vous ayez un peu de difficultés à repérer la position des objets les uns par rapport aux autres dans un premier temps, la faute aux illusions d'optiques de la vue 3D quasi isométrique. Pour s'aider, ne pas hésiter à recentrer la vue sur l'objet en appuyant sur C (vue de près), ou T (vue d'en haut), et à faire bouger la caméra de la vue 3D en maintenant la touche Shift en déplaçant votre souris.
Ajustez les pour obtenir ceci :
Ajoutez ensuite MetTun1wayEnd01 pour fermer la voie de garage, et rajoutez un ou plusieurs wagons SubwayCar01 sur la voie. Vous aurez certainement à deverrouiller la grille pour que les wagons soient bien posés au sol, ou alors utiliser la touche F en ayant votre wagon selectionné pour le faire tomber au "sol".
Amenagement des sorties du tunnel - couloirs et portes :
Vous avez du remarquer que le tunnel de métro a plusieurs ouvertures : deux ouvertures de portes à chaque extrémité sur le coté, et qu'à l'extrémité qui donne sur l'extérieur, le grillage qui barre la route laisse voir la lumière extérieure.
- Pour le couloir d'accès, vous aurez besoin des éléments de type :
- UtlHallSmEndPipeR01 (static-fin de couloir)
- UtlHallSm1WayExSmPipe02 (static- pas de porte couloir)
- UtlHallSm1WayPipe01 (static- couloir)
- metTunTransLoad (door-porte de métro)
- UtlDoor01 (door- porte mécanisée)
- MetroGateLoad (door- grille de métro, faire une version renommée)
Prenez dans la fenêtre objets deux UtlHallSm1WayExSmPipe02, ajustez-les avec les entrées de portes du tunnel (au besoin, changez le Snapgrid à 16 dans le menu Files/Preferences du GECK), mettez un ou plusieurs UtlHallSm1WayPipe01 pour le couloir sans ouverture, et enfin mettez un UtlHallSmEndPipeR01 à chaque extrémité.
- Pour la porte vers l'extérieur, allez dans la fenêtre Object et dans World Objects/Door/Dungeons/metro et mettez une porte metTunTransLoad à l'ouverture coté lumière extérieure en veillant à ce qu'elle jointe parfaitement (désactivez si besoin la grille pour avoir plus de précision).
Nota : Si vous tournez autour de cette porte, vous verrez qu'elle n'a qu'une face, car ce n'est pas une porte 3D que vous verrez s'ouvrir et se fermer, mais une porte de chargement- Loaddoor en anglais. On a recours aux portes de chargement pour changer de cellule, la porte doit alors mener à une autre porte dans une autre cellule, intérieure ou extérieure. Une Loaddoor peut conduire aussi à un autre endroit d'une même cellule, pour faciliter le modelage si les deux sets d'architecture de chaque coté de la pièce sont trop différents et qu'ils ne jointent pas bien.
- Pour la porte intérieure, dans la fenêtre Object, dans World Objects/Door/Dungeons/Utility, faites glisser une UtlDoor01 sur l'ouverture coté tunnels. Désactivez la grille pour l'ajuster. Dans le cas de nos portes, les pièces auxquelles elles meneront sont juste derrière, mais dans la même cellule.
- De l'autre extrémité, nous mettrons une grille MetroGateLoad qui permettra de voyager vers la station dans les Wastelands. Pour donner l'impression que l'on utilise la grille pour voyager, on ne changera que le nom de la grille, voire le son émis quand elle s'ouvre. Pour cela, commençons par créer une grille propre à notre mod.
Double Cliquez sur MetroGateLoad dans la fenetre Object (World Objects/Door/Dungeons/metro), et changez son ID en mettant le suffixe de votre mod, par exemple en MONMetroGateLoad. Validez, et à la question "Create a new Form ?", répondez OUI. Double cliquez sur votre nouvelle porte MONmetroGateLoad et dans le champ Name, remplacez "Porte en métal" par "Voyage". Remplacez le son Close Door par AMBMegatonTurbineIDLE01LP (je chercherai quelque chose de plus convaincant comme son !). Ce sera un raccourci à peu de frais pour donner l'illusion d'un voyage en métro. Validez vos changements avec OK. Faites glisser la grille entre le wagon et le COCmarkerHeading (fleche bleue), en faisant attention à ce qu'elle ne morde pas dessus. Agrandissez la avec la souris en clic-gauche et la touche S maintenus appuyés, pour qu'elle fasse la largeur du tunnel.
Sauvegardez votre mod !
Test du niveau :
Pour tester le niveau, nous allons ajouter un marqueur de téléportation, qui ajoute un lieu d'arrivée par défaut dans la cellule :
Placez l'élément COCmarkerHeading près d'un des wagons. La petite pointe indique vers où se tourne le joueur. Puisque nous en sommes aux marqueurs, nous pouvons aussi poser un Northmarker : il sert à indiquer le nord dans une cellule d'intérieur. Ainsi, on a pas à orienter toutes les pièces dans le bon sens, c'est le Northmarker qui indique l'orientation de la pièce. Vérifiez que les deux marqueurs, le bleu (cocmarkerheading) et le jaune (Northmarker), sont placés comme sur l'illustration.
Astuce : Si vous voulez trouver facilement un objet dont vous connaissez le nom dans l'arborescence compliquée du GECK, Cliquez sur "ALL" tout en bas dans la fenêtre Objets. Vous verrez dans la partie droite tous les objets par ordre alphabétique, et il n'y aura plus qu'à faire défiler jusqu'à trouver le bon nom. Faites cela par exemple pour trouver les marqueurs. Vous pouvez aussi changer l'ordre alphabétique en selectionnant l'ID comme critère si vous connaissez l'ID, le nom dans le jeu, la race pour un NPC, ou encore la présence de scripts, ... en haut des colonnes de la fenêtre Object.
Vous pouvez sauvegarder votre travail et quitter le Geck. Vérifiez au passage sur votre poste de travail que votre mod est bien présent dans le dossier "data" de Fallout 3.
Pour tester votre mod, dans le lanceur de Fallout 3, selectionnez fichier données et cochez votre mod.
Lancez Fallout 3, chargez une de vos parties et tapez ² pour activer la console. La console permet d'éxécuter des fonctions du GECK pendant le jeu. Nous utiliserons la fonction COC IDdelacellule qui téléporte le joueur dans une cellule donnée.
Tapez : coc MONmetro01 , ou l'ID que vous avez donné à votre cellule.
Vous devriez être téléporté dans votre premier mod !
Mais vous devez être un peu déçu... C'est un peu vide, et il fait quasiment noir (les portent ne mènent nullepart, mais cela viendra plus tard...). Nous allons donc meubler un peu la scène de manière à lui donner un peu de vie.
Eclairer votre premier intérieur :
Quittez Fallout3 et redemarrez le Geck, chargez votre mod.
Dans la fenêtre Cell View, cliquez sur interior, puis cherchez dans le menu déroulant votre cellule : MonMetro01
Ensuite, dans la fenêtre Object Window, revenez dans Static/Dungeons/Metro/clutter, et faites glisser l'objet Metlight01 dans la fenêtre de rendu, faites le pivoter pour le coller au mur. Cependant, cette lampe n'est pas une lumière : il faut aller chercher celle-ci dans /WorldObject/Light , choisissez par exemple MetroTunnelAmbBright, et mettez la en face de votre lampe.
Il n'y a qu'une lampe, ce qui n'est pas folichon ! Copions la et dupliquons-la ailleurs : cliquez sur votre lampe, puis maintenez enfoncé la touche Ctrl en cliquant sur la lumière, puis allez dans le menu Edit en haut du geck, puis cliquez sur copy render. Collez la selection que vous avez faite en cliquant dans le menu edit/place render. En la faisant glisser, placez la lampe et la lumière contre un autre mur, et répétez l'opération pour éclairer les tunnels.
Une fois vos lampes de metro placées, nous allons placer un barril enflammé pour varier un peu l'éclairage : Dans la fenetre Object, allez dans World Objects/Light et faites glisser un Barrel02Fire256, par exemple dans la portion de voie en cul de sac.
Astuce : Si vous avez un grand nombre de groupes d'objets qui se répètent dans un niveau (exemple, les spots d'éclairage, rochers, arbres, ou des éléments de murs, démultipliez les copies :
- Copiez le premier groupe et copiez/collez un autre groupe à un autre endroit assez proche.
- Selectionnez les deux groupes en maintenant Ctrl enfoncé, et refaites un copy render/paste render de votre selection. - Selectionnez vos 4 groupes et faites un copy render.
- Vous pouvez maintenant poser vos groupes d'objets par 4 ou plus, en déselectionnant avec Ctrl enfoncé au fur et à mesure que vous les mettez à leur emplacement définitif.
Cette astuce rend la mise en place d'un grand nombre de groupes plus rapide et moins rébarbative.
Puisque nous en sommes aux lumières, pour indiquer la sortie vers l'exterieur du metro, nous pouvons rajouter la lumière qui simule l'éblouissement extérieur; mais où se trouve cette lumière ? Pour se donner des idées, rien de tel que de voir ce que les developpeurs ont fait dans la même situation.
- Sauvez votre travail.
- Retrouvez l'élément static qui fait la sortie de metro (MetTunnelTranstoExt01) dans l'aborescence de la fenetre object, dans World objects/Dungeons/metro, et faites un clic droit dessus.
- Dans le menu popup, selectionnez use info : toutes les références de l'objet utilisées dans le jeu sont énumérées. Faites un double clic sur l'une d'elles et allez voir comment la sortie est fabriquée.
- Ce sont les objets WastelandSkyPlane (fond du ciel), FxBrightSpotFlat (lumière eblouissante), MetroLightSun (lumière du métro) et AmbWindMonoLP (son du vent exterieur).
- Après avoir noté leurs noms, vous pouvez retrouver ces éléments et les mettre au même endroit dans votre niveau.
Vous pouvez aussi copier ces quatre éléments (cliquer sur chaque en maintenant Ctrl enfoncé, puis aller dans le menu Edit/ et faire un Copy Render), et ensuite revenir dans votre métro-si la fenetre use info est encore ouverte, double cliquez dessus, et les mettre dans votre niveau en selectionnant Paste Render dans le menu Edit.
Nota : Aller dans les cellules déjà faites du jeu n'est pas sans conséquences, il est possible de déplacer, effacer, ou modifier des objets du jeu original par inadvertance. Et donc de provoquer des bugs. La prudence recommenderait de sauver votre mod, aller voir dans une cellule du jeu et noter ce qui vous intéresse puis sortir du Geck et recharger votre mod pour revenir travailler dans votre cellule. Si vous préférez copier-coller en faisant des aller-retours ailleurs, notez le nom des cellules visitées, car en débugguant votre mod, vous devrez savoir quelles cellules sont sensées avoir été modifiées, et lesquelles ne le doivent pas.
Nota 2 : Avant de copier des objets du jeu dans votre mod, surtout la première fois, regardez s'ils n'ont pas de script attaché, particulièrement les portes ou activateurs. En cas de doute, faites VOTRE version de l'objet avec le suffixe que vous aurez choisi pour votre mod. Retrouvez l'objet dans la fenetre Object et double cliquez dessus. S'il y a marqué Reference en haut de la fenetre, cliquez sur Edit Base pour retrouver l'objet de base : Changez son ID en rajoutant le suffixe de votre mod (par exemple MONNomdeobjet) et faites entrée. A la question "Create a new Form ?" répondez OUI (sinon vous changeriez le nom de l'objet dans le jeu->bugs). Vous pouvez modifier à loisir vos versions des objets de base sans nuire aux originaux : changer leurs noms propriétés, les scripter, ETC...
Meubler votre premier intérieur :
Maintenant nous allons joncher le sol de quelques débris : Dans la fenêtre Object Window, allez dans World Objects/Static/Dungeons/Metro , et faites glisser un MetDebrisPlatfform01 sur la voie devant le train. Ensuite placez deux debris MetBrokenStation01 et MetbrokenStation02 que vous aurez retourné (Clic-droit+X et bougez la souris) de façon à simuler l'écroulement du plafond. Prenez le temps d'ajuster les morceaux pour que cela paraisse réaliste. Au besoin, lancez le mod ingame pour voir le résultat.
Pour ajouter un peu de vie, rien ne vaut des petits détails : Ajoutons un petit campement à coté du barril enflammé. Nous rajouterons plusieurs types d'objets :
- Containers : ce sont des contenants, meubles, boites, caisses, etc... qui contiennent d'autres objets. Allons dans World Objects/Container/Clutter/Junk et faisons glisser une boite à outils "ToolboxContainer", et une Caisse de lance à incendie "FireHoseBox" près du barril.
- Furniture : ce sont des... fournitures ! Lits, sièges, etc... Allez dans World Objects/Furniture/Furniture et faites glisser un Chair02F près du barril.
- Movable Static : des objets que l'on peut bouger physiquement dans le jeu. Allons prendre un Mug dans World Objects/Movable Static/Clutter et mettons le sur la caisse.
- Un Actor : Ce peut être un monstre, ou un NPC (personnage non joueur). Allons dans World Objects/Actors/Creature/Animal et posez un chien "CrDog" sur la voie.
Deux nouveaux outils ont été implémentés pour la construction des cellules du GECK : les Object Palettes pour aider à les meubler en créant des bibliothèques d'objets, et les Navmesh pour remplacer le système de Pathgrid présent sur les précédents éditeurs de la série Elder Scrolls.
Object Palettes:
Les Object palettes ont pour but de faciliter le remplissage des cellules avec divers objets, en les classant en bibliothèques par thèmes qui s'affranchissent du système de classement parfois obscur du Geck. Il permet aussi, avec l'editeur de palettes, de visionner l'objet avant de le placer dans la fenêtre render. Pratique, non ?
Pour commencer, nous devons créer un répertoire pour les palettes objets. Dans le même répertoire où vous avez installé le GECK, créez un dossier "OPAL" :c'est là que vous stockerez les palettes. Vous pouvez les créer vous même dans le GECK et les sauvegarder dans ce dossier, ou les télécharger sur des sites dédiés à Fallout3, ou encore sur le Wiki officiel du GECk, à ces deux adresses :
Téléchargez ces bibliothèques, et mettez les fichiers .opl dans le dossier OPAL.
Maintenant, ouvrez le GECK si ce n'est déjà fait, et chargez la cellule MONmetro01.
Dans le menu World en haut du GECK, cliquez sur Object palette Editing, puis sur le bouton load de la fenêtre qui vient d'ouvrir : Dans le dossier OPAL, selectionnez basement.opl
- Cliquez sur un objet dans la liste de la palette basement : par exemple un filling cabinet (classeur d'archive). Si vous cliquez gauche sur sa visualisation dans la fenetre, vous pivoterez autour pour le voir plus à votre aise.
- Pour placer l'objet dans la fentre render, cliquez sur le haut de la fenetre render pour l'activer, et faites Ctrl+Alt+Clic Gauche sur une surface, mur sol ou plafond (pour le classeur, cliquez sur le sol). Votre objet devrait y apparaitre.
- posez et ajustez d'autres objets de la même manière, par exemple un ou deux metalShelf01...
- Nous pouvons aussi rajouter des lampes. Cliquez sur le bouton load, et chargez la palette shack.opl, et mettez un ShackhangingLight02 au milieu du petit couloir pour faire une source de lumière. Ensuite, fermez la fenetre de palettes et allez dans World objects/Light et glissez-deposez un BasementLightAmbCool à l'endroit de la lampe pour mettre l'éclairage lui-même.
- Cliquez maitenant sur load et chargez la palette subway.opl. Nous allons rajouter un petit monstre; nous choisirons un monstre de niveau (levelled creature in english) Posez un Feral Ghoul.
Vous pouvez sauvegarder votre mod et aller le tester dans le jeu (cochez-le dans Fichier Données, chargez une partie, activez la console en tapant ², puis tapez coc IDdevotrecellule, dans notre cas, coc MONMetro01
Vérifiez que tout est bien positionné et cohérent. Prêtez attention au comportement de la goule, car il sera en question pour la suite !
Nota : Le débugguage étant aussi indispensable que rébarbatif, il est souhaitable de prendre de l'avance et de corriger systématiquement ce qui peut l'être au fur et à mesure de vos travaux.
Lorsque vous testez votre mod ingame, munissez vous d'une feuille de papier ou d'un carnet, et notez tout ce qui vous parait incohérent, pour pouvoir le corriger dès que possible. En effet, on ne se souvient plus forcément de tous les bugs une fois au travail dans le Geck.
Personnellement, je fais un genre de checklist des bugs rencontrés, au fur et à mesure que je joue au mod : une case devant chaque bug ; une fois corrigé dans le Geck je barre la case, et une fois l'absence de bug controlée, je rebarre la case (ce qui fait... une croix, hum hum). Un bon moyen de ne rien oublier en route !
Votre test final à la fin du développement du mod en sera grandement simplifié.
Notre cellule est presque finie ! Cependant, il manque une chose invisible, mais ô combien importante : le Pathfinding ! Celui-ci indique au moteur du jeu sur quelles surfaces peuvent se déplacer les acteurs du jeu, et quels chemins préférentiels ils doivent prendre.
Cependant, le système des Pathgrids cher aux TECS a été laissé de coté au profit d'un nouveau : les Navmesh. Pour résumer, au lieu d'indiquer les lieux de passage à l'IA du jeu par un système de points reliés les uns aux autres en chemins (path en anglais), on découpe les surfaces en triangles, et l'IA se charge de gérer les déplacements dans ces triangles.
En cliquant sur le Bouton du Navmesh, vous ouvrirez une barre d'outils propre au système de pathfinding. Pour le moment, nous n'aurons besoin que des trois boutons de gauche, qui gèrent les triangles.
Avant d'appuyer sur le bouton Editing Navmesh, décochez le bouton de grille "Snap to Grid", car le navmesh se fait au pixel près.
Vous pouvez maintenant appuyer sur Editing Navmesh, et regarder la barre d'outils :
- Le premier bouton Select Triangle permet de travailler... sur les triangles (raccourci : T), - Le deuxième bouton Select Vertex permet de travailler sur les vecteurs des triangles (raccourci : V), - Le troisième bouton Select Edges permet de travailler sur les sommets des triangles (raccourci : G),
Appuyez maintenant sur le bouton Select Vertex, ou la touche V, et faites un clic-droit sur le sol, un point vert va apparaitre. Faites deux autres Vertex, avec clic droit, comme sur l'image. Pour selectionner une vertex, faites un clic gauche dessus (il est vert, les jaunes sont non selectionnés), et maintenez en déplaçant la souris pour dépalcer votre vertex. Appuyez sur la touche suppr ou del pour supprimer une vertex.
Cela forme notre premier triangle, mais il n'est pas validé. Les vertex sont rouges si elles font partie d'un triangle du navmesh, mais pour le moment, elles sont encore indépendantes, et vertes ou jaunes. Pour valider le triangle, maintenez appuyé Ctrl et faites un clic gauche sur chacun des trois points. Une fois les trois points verts, appuyez sur la touche A, ou sur le bouton Create Triangle pour valider votre premier triangle.
Il est facile de créer d'autres triangles en suivant, car deux de vos points sont verts et déjà selectionnés dans le triangle. Cliquez droit à un autre endroit pour créer un nouveau vertex, puis selectionnez en maintenant Ctrl enfoncé deux des vertex du premier triangle, puis appuyez à nouveau sur A ou Create Triangle. Un nouveau triangle est collé au premier.
Couvrez ainsi triangle après triangle tout le sol de votre niveau, en prenant soin de contourner les obstacles sur lesquels les monstres ou NPC ne sont pas censés marcher.
Conseils divers :
- Si vous devez rajouter un vertex sur une ligne déjà faite, appuyez sur le bouton Select Edge, ou la touche G, et faites un clic droit sur la ligne là où vous voulez rajouter un nouveau point. Les triangles se modifieront d'eux-mêmes. Cela est surtout pratique pour faire les passages de portes, et le tour d'objets statiques (bureaux, piliers, debris infranchissables,...).
- A noter qu'il n'est pas nécessaire de faire le tour d'objets havok, ceux que l'on peut déplacer ingame, tels les bouteilles, verres, armes et munitions au sol, etc...
- Vous pouvez déplacer les sommets en faisant un clic gauche dessus, et en les déplaçant avec la souris (et aussi les faire monter ou descendre en maintenant la touche Z) pour ajuster vos triangle. - Pour un effet naturel sur le pathfinding, les traingles doivent être plutôt équilatéraux, des triangles fins peuvent donner quelques bizarreries de déplacement.
- Concernant les nombreux débris qui parsèment les niveaux, ménagez des passages avec le Navmesh aux endroits où les créatures et le NPC sont sensés pouvoir passer. Cela évitera qu'ils restent bêtement devant un tas de gravas. Par exemple, pour le tas de gravas de notre métro, faites que le Navmesh ménage un passage par les cotés, ou le tas est sensé pouvoir s'escalader facilement.
Une fois votre niveau terminé, Sauvez et quittez le Geck pour tester tout cela ingame. Faites courir un peu la goule à travers le niveau en la provocant un peu, et observez si elle se déplace de manière naturelle (enfin pour une goule...).
A SUIVRE...