Page 1 sur 1
[TUTORIEL] [CARTES] Créer une porte dans une carte : Chapitre 1
Posté : mar. 19 avr. 2016, 21:17
par Freddy_Gwendo
DIDACTICIEL EN COURS DE RÉDACTION
Note :
Ce didacticiel est conçu en 5 parties : il se peut que des utilisateurs expérimentés remarquent l'absence de certains points. Soyez gentils d'attendre la publication du dernier chapitre pour m'en faire part : il est possible que j'ai oublié des points importants, mais il est aussi probable qu'ils soient abordés dans les chapitre suivants.
COMMENT CRÉER UNE PORTE DANS UNE CARTE
OBJET DE CE DIDACTICIEL.
Dans ce didacticiel, nous allons apprendre comment créer des portes dans une carte. Pour cela, nous aurons besoin de plusieurs outils :
- Votre logiciel graphique préféré
- DLTCEP.
- IESDP
- NearInfinity
- WeiDU
- Et éventuellement IETME.
Je pars du principe que puisque vous avez déjà lu les tutos d'Armand sur la création de cartes, vous les avez déjà installés.
Sinon, vous trouverez leurs liens de téléchargement ici, mais surtout lisez les tutos d'Armand sous peine d'avoir beaucoup de mal à suivre.
Petit rappel :
Les informations concernant les portes sont réparties dans trois fichiers : ARE, WED et TIS.
- ARE: les informations générales (nom de la porte, emplacement d'ouverture, polygones d'ouverture et de fermeture, passages bloqués, apparence du curseur permettant d'ouvrir la porte, nature de la porte – ouverte ou fermée, secrète, verrouillée ou pas, piégée ou pas...).
- WED : les informations « cachées » (wallgroups – polygones permettant de rendre transparents les personnages qui passent derrière ), la structure du fichier TIS et l'organisation des tiles, la visualisation des portes ouvertes et fermées...
- TIS : les tiles de la porte (apparence visuelle du fond de carte : porte ouverte et fermée).
Dit comme ça, ça paraît assez compliqué. Mais rassurez-vous, c'est finalement assez simple. Le tout c'est de bien respecter l'ordre défini par ce tutoriel.
Pour rendre ce didacticiel le plus digeste possible, je l'ai scindé en 5 parties :
[INDENT]Chapitre 1 : Créer une porte dans une nouvelle carte.
Nous verrons comment insérer cette carte dans les fichiers .ARE et .WED et .TIS.
Chapitre 2 : Créer une porte de transfert dans une carte.
Nous aborderons ici le cas particulier des portes permettant de passer d'une carte à une autre (typiquement la porte d'entrée d'un bâtiment).
Chapitre 3 : Créer une porte secrète.
Dans le même esprit, nous traiterons ici des portes secrètes menant à une autre carte et des portes secrètes plus classiques à l'intérieur d'une carte.
Chapitre 4 : Ajouter une porte dans une carte existante.
Description de deux techniques pour ajouter une porte à une carte existante avec en bonus une procédure WeiDU pour cloner une carte et lui ajouter automatiquement des éléments (régions, points d'entrées).
Chapitre 5 : Créer des portes « particulières ».
Description de techniques pour créer des portes invisibles, des portes s'ouvrant en plusieurs étapes (portes simulées par des animations), etc.
[/INDENT]
Par commodité, j'utiliserai le code graphique suivant :
- Edit > Tileset : Onglet ou commande de menu de DLTCEP.
- Exit : Bouton d'une fenêtre de DLTCEP.
- "Door name" : Champ "Door name".
Nous allons commencer par créer deux portes dans une carte toute nouvelle.
Posté : mar. 19 avr. 2016, 21:38
par Freddy_Gwendo
CRÉATION D'UNE PORTE DANS UNE CARTE NOUVELLE
Pour commencer, il nous faut un fond de carte. J'utiliserai celui de ma carte GW0019 :
C'est l'étage d'une auberge créé à partir de cartes de BG2 que vous reconnaissez sans doute.
Comme il lui manquait des portes, je les ai créées dans un logiciel graphique.
Voici la version « portes ouvertes » :
Et la version « portes fermées » :
>> De base, c'est la version « portes ouvertes » qui constitue le fond de carte sauvegardé dans le fichier TIS.
Petit rappel : Puisque vous avez lu les tutos d'Armand, vous devez le savoir, mais comme on n'est jamais à l'abri d'une perte de mémoire...
- Les fichiers image des portes que nous allons utiliser doivent avoir une hauteur et une longueur exprimées en multiples de 64 pixels : 64 x 64, 128 x 64, 192 x 192, etc. Sinon, DLTCEP remplira les pixels manquants de pixels gris.
- Le coin en haut à gauche de la porte fermée doit se situer à des coordonnées représentant aussi un multiple de 64. N'essayez pas de tricher : c'est une limitation du moteur du jeu (Infinity Engine) et si vous ne vous y conformez pas, votre carte fera planter votre partie.
En ajoutant des portes à une carte, il va donc nous falloir ajouter les tiles (carrés de 64 x 64 pixels) à la fin du fichier TIS et indiquer au fichier WED qu'il doit les afficher lorsque la porte est fermée.
Fort heureusement, DLTCEP le fait pour vous, à condition de bien le renseigner.
Un conseil : avant de créer une porte dans le fichier ARE, n'oubliez pas de créer vos tiles de portes. Après, c'est trop tard !
Alors allons-y.
A. CRÉER DES TILES DES PORTES.
Comme nous l'avons vu, le fichier TIS est composé de plusieurs tiles (tuiles) de 64 x 64 pixels. Nous allons donc construire nos portes en utilisant ce format.
Dans votre logiciel graphique, créez une grille de 64 x 64 pixels :
En jonglant avec les calques « portes ouvertes » et « portes fermées », il devient alors facile d'isoler les carrés caractérisant les portes.
La porte du haut : - - Et celle du bas : -
Avec la grille, c'est plus simple : -
Comment faire ?
Utilisez l'outil de sélection de zone (ici, paramétrez-le à 128 x 192) et sélectionnez les portes fermées à l'aide de la grille, puis sauvegardez-les au format bmp 24 bits.
Si vous trouvez ça vraiment trop compliqué, chargez votre fond de carte des portes fermées dans IETME et utilisez la grille pour exporter les tiles des portes.
Il sera possible de les importer telles quelles dans DLTCEP.
Cependant, il est beaucoup plus sûr de les convertir au format TIS pour les intégrer dans les cartes. C'est ce que nous allons faire.
Copier les fichiers obtenus dans votre répertoire override.
Lancez DLTCEP et ouvrez l'onglet Edit > Tileset :
Chargez le fichier bmp de la porte fermée :
Note : si votre fichier fait plus de 8 caractères, utilisez le menu suivant :
Une nouvelle fenêtre s'ouvre représentant votre fichier :
Vérifiez que c'est le bon, puis appuyez sur le bouton Back.
Vous constatez alors que votre fichier a bien été chargé et qu'il correspond bien à sa taille : 128 x 192 (soit 2 x 64 sur 3 x 64).
Il ne vous reste plus qu'à le sauvegarder au format TIS en appuyant sur la touche Save Tis As.
Choisissez un nom facile à retenir. J'ai choisi GW0019D1.
Faites la même chose avec la seconde porte fermée que je sauvegarde sous le nom GW0019D2.TIS.
Avant de passer aux choses sérieuses, quittez l'onglet TIS et n'oubliez pas de mettre à jour la mémoire de DLTCEP :
Note : Nous verrons dans un autre tuto comment procéder lorsque les tiles de la porte fermée ne constituent ni un carré, ni un rectangle.
B. CRÉER UNE PORTE DANS LE FICHIER .ARE.
Maintenant que nous avons tout ce dont nous avons besoin, il est temps de créer notre porte.
On commence par charger notre carte dans DLTCEP et on sélectionne l'onglet Doors :
Et là, ça devient très compliqué : pour ajouter une porte à notre carte, il faut... Cliquer sur le bouton Add door !
Par défaut, DLTCEP a créé une porte appelée Door001. Vous remarquerez les deux champs surlignés : "Door name" et "Identifier".
- Le premier ("Door name") correspond au nom de la porte. Vous pouvez lui donner le nom que vous souhaitez, comme " Porte menant aux toilettes ".
- Le second ("Identifier") correspond au nom de script de la porte. C'est celui qui sera utilisé dans les scripts du jeu pour, par exemple, ouvrir et former automatiquement une porte selon certaines conditions, vérifier qu'une porte est ouverte...
Pour des raisons pratiques, je vous conseille de leur attribuer le même identifiant, ça vous évitera de vous emmêler les pinceaux.
Par ailleurs, nous le verrons plus tard, le fichier WED contient aussi des informations sur les portes. Pour les relier au fichier ARE, il utilise comme clé la valeur du champ Identifier.
Vous n'êtes pas obligé de procéder comme moi, mais j'ai pris l'habitude de nommer mes portes ainsi :
- Door01, Door02 ... Door99 : Les portes d'intérieur d'une carte (celles qui mènent à des pièces de la carte).
- Doornnnn (avec nnnn = numéro de la carte de destination) : Les portes de transfert (celles permettant au groupe d'entrer dans une autre carte).
- Pour toutes les autres, j'essaie de leur trouver un identifiant « parlant » : Secret, Cache, Tableau, Pool, etc. Numéroté ou pas selon mes besoins.
Mais revenons à notre porte : je vais l'appeler Door01.
Petit rappel pour ceux qui ont lu mes tutos sur les animations : La même règle de saisie s'applique ici.
- Le champ "Door name" est limité à 32 caractères.
- Le champ "Identifier" est limité à 8 caractères.
- Pour l'identifiant, évitez les mots composés et toute association de plusieurs mots : Il y a de fortes chances pour les scripts ne les apprécient pas vraiment.
- Évitez ABSOLUMENT les accents pour la même raison.
- DLTCEP transforme « PorteWC » en « Portewc ». Si vous souhaitez conserver les majuscules, il vous faudra modifier l'intitulé avec IETME ou NearInfinity.
En l'occurrence, je vais la nommer « Door01 ».
Il suffit de placer le curseur de la souris sur le champ "Door name" et de saisir « Door01 », puis d'appuyer sur la touche [Tab]. La touche [ENTRÉE] est inefficiente.
:!: Avant de saisir « Door01 », vous devez impérativement vous assurer que « 1. Door0001 » est surligné en entier. Sinon, le changement de nom ne sera pas effectif. C'est une des bizarreries de DLTCEP.
Modifiez de même le champ "Identifier". Et vous obtenez :
Dernier petit détail. J'ai aussi pris l'habitude de créer mes portes en commençant par celle située le plus près du bord supérieur gauche, puis je crée les suivantes en balayant la carte de gauche à droite et de haut en bas. Ça n'a l'air de rien, mais ça me permet de retrouver très facilement les tiles de mes portes à la fin du fichier TIS en cas de nécessité.
Cette digression réglée, nous allons commencer par définir les paramètres principaux de notre porte, en particulier ceux encadrés en cyan.
" Launch point " : C'est le « point de lancement » de la porte. En fait, il est surtout utilisé si vous la piéger. Dans ce cas, c'est le point à partir duquel le sort est lancé. Par défaut, il se situe en [0.0], soit dans le coin supérieur à gauche de la carte. Je vous conseille de le placer près de la porte pour une raison simple et inexpliquée : je me suis aperçu que lorsqu'on ouvrait ou fermait la porte par un script, un point de lancement situé à [0.0] peut causer des ralentissements dans le jeu.
Cliquez sur le bouton Set à droite des coordonnées du champ " Launch point ".
Une fenêtre affiche le fond de carte. Je vous épargne une capture d'écran supplémentaire, et vous allez devoir me croire sur parole : la main pointant l'emplacement des coordonnées se trouve sur le coin haut et gauche de la carte aux coordonnées 0.0.
Nous allons donc déterminer les coordonnées que nous souhaitons en cliquant tout simplement avec la souris sur l'endroit souhaité. Vous pouvez affiner la position du point de lancement en utilisant les flèches de direction en bas à gauche de l'écran.
Une fois que vous êtes satisfait de l'emplacement du point, vous validez avec le bouton Set.
Si vous faites une fausse manipulation, utilisez le bouton Back qui fermera la fenêtre après avoir annulé vos modifications.
Et voici le résultat :
Passons maintenant aux champs "Open location". Kezako ? Littéralement, ce sont les « points d'ouverture ». En d'autres termes, c'est la position à laquelle doit se tenir un personnage pour pouvoir ouvrir la porte.
Il en existe deux : "front" et "back".
Note : Ne vous fiez pas à leur dénomination, ils sont interchangeables. L'essentiel est que les deux soient renseignés, chacun servant à ouvrir la porte de chaque côté du chambranle.
D'ailleurs, pour certaines portes ouvrant un placard mais ne menant nulle part, vous pouvez très bien utiliser les mêmes coordonnées pour les deux points.
Nous allons procéder de la même manière que précédemment : Appuyez sur le bouton Set à droite des coordonnées du champ "Open location front" et définissez le point d'ouverture de la porte à partir du couloir :
Une fois de retour dans l'onglet des portes, vous noterez une chose intéressante qui illustre la note précédente : par défaut, DLTCEP a attribué les mêmes valeurs au champ " Open location back " :
C'est très pratique pour deux raisons :
- Lorsque vous passerez au point suivant, la main sera automatiquement positionnée sur le premier point d'ouverture et vous pourrez ainsi mieux définir la position du second.
- Si vous créez une porte « cul-de-sac » qui ne mène nulle, part, inutile de saisir de nouvelles coordonnées, c'est déjà fait !
Je vous laisse donc faire la même chose pour le champ " Open location back " qui permettra d'ouvrir la porte à partir de la chambre.
Ce qui donne au final :
Il est tant de SAUVEGARDER notre travail.
Lorsque vous aurez pris l'habitude de créer des tables, vous pourrez continuer de renseigner les autres champs de l'onglet Doors avant de passer à l'étape suivante. Personnellement, je ne m'en prive pas, mais pour un début, mieux vaut suivre la procédure indiquée.
C. PARAMÉTRER CETTE PORTE DANS LE FICHIER .WED.
Nous allons maintenant indiquer au jeu comment représenter les portes selon qu'elles sont ouvertes ou fermées. Et ça se passe dans le fichier WED.
Cliquez sur l'onglet General et appuyez sur le bouton Edit wed :
Une nouvelle fenêtre s'ouvre : celle du fichier WED.
DLTCEP a automatiquement créé une porte.
Seul problème, il l'a nommée DOOR0001. Pas de souci : Il suffit de modifier le champ " Doorname " en saisissant le nom de l'identifiant que vous avez choisi (rappelez-vous, c'était Door01).
Et voilà le travail !
Nous allons commencer par insérer les tiles de la porte fermée dans le fichier TIS. Appuyez donc sur le bouton Edit tiles :
Certes, cet écran n'est pas très parlant. Cependant, vous constatez que par défaut, il nous affichera les tiles des portes fermées ("Draw Closed") .
Nous allons maintenant afficher le fond de carte en appuyant sur le bouton Preview. Une nouvelle fenêtre s'ouvre :
Lecteur a écrit :
Quoi ? Tu as fumé la moquette ! Les portes sont ouvertes !
Ben oui, mon grand ! C'est bien pour ça qu'on modifie ce fichier : pour lui attribuer les images des portes fermées. Et avant de l'avoir fait...
Bref, dans cette fenêtre, vous n'avez besoin d'aucune information particulière. La tile sélectionnée est encadrée en magenta (en haut à gauche à l'ouverture de la fenêtre) et le message à droite de la flèche rouge vous indique laquelle vous avez sélectionnée.
Ça peut paraître un peu bizarre, mais ça correspond à (colonne 0, ligne 0). Bon, je sais, il aurait été beaucoup plus parlant de dire (1,1). Mais que voulez-vous, c'est comme ça, l'auteur a conservé les routines informatiques qui comptent les index à partir de 0 pour le premier. Il se passe exactement la même chose avec les images des fichiers BAM : la première est la 0. Pareil pour les cycles des animations.
Alors on ne va pas faire de caca nerveux, et on continue.
Le principe est simple : on va sélectionner avec la souris les tiles correspondant à la porte que nous souhaitons paramétrer :
En pratique, c'est un peu plus fastidieux ][/CENTER]
Vous notez qu'il s'agit de la tile de la colonne 11 et de la ligne 5.
Aussitôt une nouvelle fenêtre d'information s'ouvre :
Le voilà ce foutu contrôle ! Il nous demande si on veut bien placer le curseur de la souris sur cette tile qui ne fait pas (encore) partie de la porte. Comme si on avait fait cette manip pour passer le temps... Puisqu'on n'est pas rancunier, on valide.
Lecteur a écrit :
Et... Il ne se passe rien : tout ça pour ça...
Je vous avais prévenu, foutu contrôle !
Pour ajouter la tile à la porte, il faut appuyer sur le bouton Add tile :
Et DLTCEP enregistre enfin notre saisie :
Il suffit alors de recommencer l'opération pour les cinq autres tiles de notre porte, en respectant l'ordre suivant : de gauche à droite et de haut en bas. Donc la seconde est :
Et au final, on obtient ceci :
Avant de continuer, juste une petite explication des champs surlignés :
Ils correspondent aux données du fichier TIS :
Lecteur a écrit :
Et « Alternate tile », c'est quoi ?
J'y viens...
Nous venons d'indiquer à DLTCEP quelles étaient les tiles concernées par la porte Door01. Comme vous l'avez vu, les images affichées montraient une porte ouverte (celle de notre fond de carte). Il faut maintenant lui indiquer à quelles images de porte fermée elles correspondent.
Pour cela, nous avons le choix entre deux possibilités :
- Soit vous voulez insérer un fichier BMP et vous cliquez sur le bouton Set door (bmp).
- Soit vous voulez insérer un fichier TIS et vous cliquez sur le bouton Set door (tis).
Comme nous avons créé des fichiers TIS de nos portes fermées au début de ce tuto, j'utilise donc la seconde option.
:!: ATTENTION : avant de cliquer, assurez-vous bien que le curseur est bien placé sur la première tile ([0.0]). Sous peine de vous exposer à un bug aléatoire !
Une nouvelle fenêtre de sélection s'ouvre :
Le curseur se positionne automatiquement sur le fichier TIS du fond de carte (en l'occurrence GW0019). Ce n'est pas celui qui nous intéresse. Sélectionnez celui de la porte Door01 fermée. Rappelez-vous, nous l'avons nommé GW0019D1.
Validez [OK] et... :
C'est bien l'image de notre porte fermée qui apparaît !
Maintenant, amusons-nous à tester que notre porte s'ouvre et se ferme bien en jouant avec les boutons Draw closed et Draw open :
Notre porte s'ouvre et se ferme correctement.
Lecteur a écrit :
C'est déjà ça de gagné !
Si vous observez bien l'écran, vous constatez certains changements :
La tile [0.0] 116 [0] –] 116 [336] – 0.
Traduction >> Il existe deux manière d'afficher ce carré de la carte : en mode normal en utilisant la tile 116 (porte ouverte), en mode alterné en utilisant la tile 336 (porte fermée) ajoutée à la fin du fichier TIS. Le 0 correspond au numéro d'overlay (ici le fond de carte).
Cliquez sur Back pour revenir à la fenêtre WED.
Avant de sauvegarder, nous allons effectuer une dernière opération : définir les polygones des wallgroups qui permettent de cacher les créatures lorsqu'elles passent derrière la porte.
Occupons-nous d'abord de la porte fermée :
Par défaut, DLTCEP a créé un polygone vide, nous allons donc le modifier : Edit polygon.
On constate qu'on est bien en mode « Portes fermées ». Nous allons avoir besoin des deux boutons entourés de cyan : Preview pour visualiser la carte et Insert pour insérer le polygone.
Cliquons donc sur les deux et commençons à dessiner notre polygone à l'aide la souris : le principe est simple, il suffit de cliquer avec la souris pour créer les différents points du polygone. Allons-y :
Le point rouge matérialise le départ du polygone.
Quant à l'écran de saisie, il est mis à jour automatiquement :
Et ainsi de suite :
Jusqu'à :
Ce qui se traduit dans la fenêtre de saisie par :
Cliquez sur Back pour revenir à l'écran WED. Le polygone a été enregistré :
Cliquez sur le bouton closed (qui devient opened) pour dessiner le polygone de la porte ouverte, toujours avec Edit polygon :
Ce qui donne :
Mais nous allons un peu affiner le bouzin, car il se trouve que nous avons affaire à une porte à double battant. Autant faire les choses bien, nous devons donc définir le polygone du second battant.
Ajoutons donc un second polygone à notre porte ouverte :
Sélectionnons-le (c'est le numéro 2) et dessinons-le :
Ce qui donne au final :
Voilà, c'est parfait : notre porte cachera bien les personnages qui passeront derrière elle.
Revenons sur l'écran WED, cliquons sur Back et SAUVEGARDONS le fichier.
Avant de continuer, un petit aparté sur le fichier TIS pour les pointilleux.
► Afficher le texte
1. Le fichier TIS a bien été modifié :
2. D'ailleurs, le voici en version « visible » :
Les 6 tiles de la porte Door01 ont été ajoutés à la fin du fichier TIS.
D. FINALISER LE PARAMÉTRAGE DE LA PORTE DANS LE FICHIER .ARE.
Et c'est ici que le passage au fichier WED prend son sens car il va nous faciliter la tâche.
Retour à l'onglet Doors. Nous allons maintenant définir les polygones d'ouverture et de fermeture des portes (les zones bleues ou magenta que la souris découvre dans le jeu lorsqu'on pointe une porte).
Comme c'est le même principe que pour définir les wallgroups du fichier WED, je me contenterai de vous donner les résultats.
Commençons par la porte ouverte (bouton Edit polygon) :
Vous remarquerez qu'il n'est pas possible de définir deux polygones d'ouverture pour la porte à double battant : je vous conseille donc de dessiner le battant le plus visible de la porte.
Puis, appuyons sur le bouton Open pour passer en mode Close et dessinons le polygone de la porte fermée :
Comme ces opérations sont assez, pénibles, je vous conseille de SAUVEGARDER à ce moment de vos manipulations. Ça ne mange pas de pain.
Maintenant, nous allons définir les zones délimitant les zones de la carte accessibles ou pas selon que la porte est ouverte ou fermée parce qu'il est évident pour tout le monde que le but du jeu, c'est bien qu'on ne puisse pas passer à travers la porte.
Pour cela, nous allons utiliser la même partie de l'onglet (impeded blocks). Selon le même principe, nous allons marquer les parties de la carte infranchissables selon qu'elle est fermée ou ouverte. Seul le bouton change : il s'agit de Edit blocks (au-dessus de Edit polygon).
Pour nous aider, nous allons afficher la grille :
Tout ce qu'il nous reste à faire, c'est de déterminer quels éléments de la grille seront inaccessibles lorsque la porte sera ouverte. Pour cela, il suffit de cliquer sur les carrés concernés. Ils seront remplis par un « 1 » :
Appuyez sur le bouton Back pour valider.
On fait la même chose avec la porte fermée :
Il nous reste deux détails à régler :
Définir le curseur pris par la souris lorsqu'on clique sur une porte dans le jeu. Il vous suffit de faire défiler l'index pour voir apparaître l'icône correspondante et choisir celle qui vous convient.
De même, lorsque vous entrez dans une carte, vous pouvez choisir si les portes sont ouvertes ou fermées par défaut : cliquez sur la case Open pour que la porte soit ouverte.
Notes :
- Par défaut, à sa création, une porte est TOUJOURS fermée. Si vous voulez qu'elle soit ouverte, vous devrez donc impérativement cocher cette case.
- ATTENTION : fermée ne signifie pas verrouillée ! Nous verrons comment verrouiller une porte fermée plus tard.
Nous verrons la signification des autres flags dans les tutoriels suivants.
On recommence les mêmes opérations pour la seconde porte (Door02) qui sera fermée :
Et on teste in-game :
A l'arrivée, Door01 est ouverte et Door02 fermée.
Door02 fermée.
Door02 ouverte.
Il est temps de passer au chapitre suivant : Chapitre 2 : Créer une porte de transfert dans une carte. traitant du cas particulier des portes permettant de passer d'une carte à une autre (typiquement la porte d'entrée d'un bâtiment).