Affichage des résultats 1 à 3 sur 3

Discussion: [TUTORIEL] LE KIT DE SURVIE - CHAPITRE 3 : Comprendre un fichier d

  1. #1
    Date d'inscription
    December 2007
    Localisation
    Dordogne
    Messages 
    1 141

    Flèche [TUTORIEL] LE KIT DE SURVIE - CHAPITRE 3 : Comprendre un fichier d

    LE KIT DE SURVIE DU MODDER DEBUTANT
    Ou comment survivre dans la jungle quand on est un puceau du tp2



    Chapitre 3 : Comprendre un fichier d




    Avant propos


    Un fichier .d (un fichier dialogue) est un fichier qui va vous permettre de faire parler votre personnage. Comment ? Eh bien en organisant les répliques des personnages : qui parle, à qui, dans quel ordre. Ce fichier .d qui peut être conçu avec un simple éditeur de texte sera compilé par la suite par WeiDU pour le transformer en un fichier .dlg compatible avec le moteur du jeu.



    Préparation


    Tout d'abord il vous faudra un éditeur de texte c'est à peu prés la seule chose dont vous aurez l'utilité d'ailleurs. De manière générale je suggère plutôt pspad qui est un logiciel que j'ai en affection mais les logiciels qui feront l'affaire se compte par dizaines tout ce qu'il faut c'est qu'il sache compter les lignes de codes et ai si possible la fonction rechercher remplacer qui est très pratique. Pour vous faciliter le travail par la suite je vous recommande d’installer des fichiers de colorisation de votre code qui vous aideront dans votre périple. On appelle ça des highlighters et vous pourrez en trouver ici pour le commun des éditeurs et ici pour Pspad.


    Ensuite vous pouvez toujours ouvrir IESDP à coté ça pourra vous être utile plus tard. Sachant qu'il y a deux onglets qui pourraient vous intéresser : l'onglet trigger (conditions) et actions (les actions). Jusque là, rien d'extraordinairement compliqué.



    Étape 1 : Savoir lire les différents types de fichier d


    Comme je l'ai déjà dit, j'ai voulu dans ce tutoriel rester le plus concret possible et vous montrer étape par étape la marche à suivre. Néanmoins pour être suffisamment complet et pour que vous ne soyez pas trop paumé lorsque vous consulterez éventuellement d'autres mods, un petit briefing sur les différentes façon de coder ne serait pas de trop.


    Mais rien ne vaut un exemple comme dirait ma grand mère. Commençons par le cas le plus simple un bloc de dialogue avec la création du dlg :


    Les éléments de bases






    Voici votre premier bout de code à décortiquer, le premier d'une longue liste j'ose espérer. Décortiquons tout ça :


    Begin ~nomdudlg~
    Très important ici, la commande BEGIN c'est ce qui va permettre plus tard au fichier de compilation de créer un dlg (le fichier dialogue utilisable par le jeu). Sachant que comme j'ai déjà pu le dire ce sera votre fichier dlg qui fera parler votre personnage. Donc vous devrez obligatoirement collez autant de BEGIN que de personnages qui parlent, la référence se trouvant entre les ~~ étant le nom du fichier dlg sans l'extension.


    // Premier...
    Ce double slash en début de ligne permet de mettre des commentaires dans votre code, n’hésitez pas à en abuser, ça vous sera très utile par la suite surtout quand vous serez resté un moment sans y toucher. Pensez bien au double slash par contre en début ligne pour que WeiDU ne la prenne pas en compte dans le code.

    IF ~~
    Traduit littéralement ça donne « SI ». Si quoi ? Si telle condition est remplie alors le dialogue commence.

    BEGIN WESLEY
    Le nom du dit bloc « Wesley » choisi arbitrairement par le modder.

    Global("#VOhMyGod","AR1000",1)
    Je parlais de conditions à l'instant, en voilà une. C’est la plus connue : avec la commande GLOBAL on vérifie une variable préalablement implantée en spécifiant de quel type il s'agit (ici il s'agit d'une variable de zone). En gros ça permet d’éviter que le dialogue se déclenche n'importe quand, n'importe comment.

    SAY @1
    Le NPC parle, ici on est dans le DLG de #vchat c'est donc lui qui parle. Son texte symbolisé par un @1 sera placé plus tard dans un fichier externe : le fameux fichier tra ou translation qu'on a pu évoqué au début.

    IF ~~ THEN REPLY @2 EXIT
    On retrouve sensiblement le même fonctionnement qu'au début « SI telle condition est rempli ALORS... Alors quoi ? Eh bien Charname répond @2 et la conversation se termine grâce au mot clef « EXIT ».


    Ici, on a vu un cas simple mais vous avez le concept. Si vous avez compris ça, vous avez compris la base car un bloc de dialogue s'articulera toujours sensiblement autour de la même mécanique.


    Déclencher des événements avec DO





    On passe au cran au dessus là. On va passer d'un bloc à un autre tout en en profitant pour voir deux trois petites choses.


    GOTO
    Un des éléments nouveaux : « GOTO » littéralement « allez à ». Allez ou ? Allez à la référence d'un nouveau bloc pour connaître la réponse du PNJ. Ici on va à « INTROQUESTONE11 » le bloc juste en dessous.

    SAY @1735=@17343
    Petit truc sympathique, on a la possibilité de couper la réplique de notre personnage en une suite de plusieurs répliques. C'est ce qui se passe parfois dans le jeu pour épurer une réplique assez longue ou pour donner un effet de style le même personnage parle plusieurs fois d'affilée.

    DO ~~
    A l'instant on a vu le mot clef REPLY voici le mot clef DO qui permet de déclencher des actions, c'est à dire des événements dans le jeu visible ou non par l'utilisateur. Cela peut aller de la perte de réputation à un déclenchement de combat, la progression d'une romance, un item qui nous est donné ou l'entrée journal d'une quête qui est implantée. Comme vous pouvez le voir sur ce screen, le mot clé DO peut être couplé avec un REPLY par exemple, il n'y a pas de restrictions à ce niveau.


    Là, vous avez vu la logique d'un fichier d. C'est la manière de coder que vous pourrez voir le plus souvent, pas forcément la plus efficace mais la plus courante. Avant de passer à la pratique nous allons voir un cas particulier qui est l'APPEND.




    Mettre en place un APPEND





    EXTERN ~nomdudlg~ NOMDUBLOC
    Quoi encore un nouveau mot clef ? Eh oui, mais promis c'est le dernier cette fois ! Jusqu'à présent nous avons vu un système où le PNJ parle et Charname lui répond. Mais que se passe-t-il quand un autre personnage intervient entre temps ? On utilise un renvoi vers un autre fichier dlg, ce renvoi est permis grâce à la commande EXTERN et la référence du fichier est précisé entre les ~~ comme on a pu le voir pour d'autres commandes. Enfin le nom du bloc (LOUCHE17 ici) qui suivra à l'intérieur de l'APPEND.

    APPEND ~nomdudlg~
    Voilà le fameux APPEND qui est la fonction permettant d’éditer en fait un fichier dialogue existant, toutes les modifications que l'on fait dans l'APPEND se répercuteront dans le fichier dlg dédié. C'est exactement comme si vous écriviez directement sous le Begin ~~ qui permet de déclencher le fichier dlg.


    Question du noob : l'APPEND permet donc de faire des dialogues à plusieurs voix ?

    Techniquement oui mais c'est pas le plus pratique. Je vous ai montré ici juste la manière basique de coder tel que vous pourrez la rencontrer dans le jeu original ainsi que dans pas mal de mods. Mais dans la pratique vous ne coderez pas comme ça, je vais vous apprendre une manière beaucoup plus souple et surtout au final beaucoup plus efficace. En définitive vous n'utiliserez l'APPEND que pour éditer des fichiers dialogue de personnages existant déjà dans le jeu. A titre personnel, avec la méthode que j'utilise, je n'utilise l'APPEND que pour faire parler Charname comme indiqué dans ce tuto. Pour tout le reste il y a mieux et beaucoup plus pratique.




    Étape 2 : Savoir écrire dans un fichier d sans se fouler


    Nous y voilà. Voici venu l'heure de votre dépucelage, vous allez écrire vos premières lignes de codes !
    Et pour que vous ne soyez pas paumé au milieu de toute ces informations j'ai crée un one-day mod ou plutôt un one-hour mod avec un code extrêmement basique que vous pourrez vous amusez à décortiquer, rapiécer, modifier et j'en passe... Vous pourrez suivre dans les fichiers en même temps que vous suivrez les screens que je commenterai et détaillerai ici. On commence par le premier d'entre eux :



    Coder en CHAIN : un cas simple





    Le fichier d du mod que l'on peut trouver dans le dossier dialogues. Comme vous pouvez le voir tout y est codé en CHAIN. C'est un mot clef qui à la base sert à enchaîner les répliques entre plusieurs personnages non joueurs. Nombre de moddeurs ne l'utilise que pour ça d'ailleurs mais je pars de l'idée que si cette commande peut tout faire pourquoi ne pas s'en servir systématiquement ? On retrouve ici une structure un peu différente de ce qu'on a vu précédemment, je vais donc la détailler pour que vous puissiez comprendre son fonctionnement :


    CHAIN IF ~~ THEN
    Ce qui remplace le « IF THEN ~~ BEGIN » tout simplement. On annonce qu'on est dans un bloc de type CHAIN avec sa mise en forme spécifique.

    « #VMonk83 »
    On annonce qui initie la dialogue en précisant son dlg. Dans le format CHAIN c'est le gros avantage : vous pouvez faire parler n'importe qui n'importe où. Pas besoin comme on a vu précédemment d'être en dessous d'un Begin ~machin~ pour savoir qui parle : on le précise à chaque début de bloc.

    @1=@2=@3=@4
    Nouveauté encore ici pas besoin de SAY on met les @ directement (n’hésitez pas d'ailleurs à allez farfouiller dans le dossier translation pour suivre les répliques en même temps).

    END
    Dans un CHAIN on place le END juste avant que Charname parle, ça fonctionne toujours comme ça.

    EXTERN ~nomdudlg~ NOMDUBLOC
    Pour la partie réponse de Charname cela reste, inchangé mais vu qu'on code en CHAIN, maintenant la fonction GOTO sera insuffisante vu que en fonction de qui initiera les blocs suivants on devra faire référence à un autre dlg.




    Coder en CHAIN : on bascule d'un bloc à un autre





    Vous avez ici la suite logique du précèdent bloc : on précise qui initie le dialogue en indiquant la référence du dlg avec le nom du bloc précisé dans l'EXTERN qui a précédé. Pour le reste de la syntaxe comme le mot clef DO ici on retrouve le même fonctionnement. Ça nous permet d'ailleurs de revoir le fonctionnement de mise à jour des variables : on peut voir plus haut que le dialogue se déclenche quand la variable est à 1. A la fin du dialogue on met la variable à 2 pour éviter que le dialogue ne se répète.





    Petit tour dans le tra où on retrouve nos références de type @ présentes dans notre fichiers d. La syntaxe est toujours la même :


    @numéro = ~Votre texte~

    ou éventuellement

    @numéro = ~Votre texte si Charname est un homme~ ~Votre texte si Charname est une femme~


    Pour les tra, vous pouvez utiliser un chapitrage pour le développement des répliques ou bien encore vous réserver des créneaux de type :


    @21000,21001,@21002,@21003... // Réplique d'un personnage marchand
    @22000,@22001,@22002,@22003... // Réplique d'une prostituée
    @23000,@23001,@23002,@23003... // Réplique d'un mechand



    Sachant que vous pourrez attribuer un fichier tra pour chaque fichier d (dialogues) et baf (script) que vous serez amené à créer un jour alors n’hésitez à jongler avec les numéros puisque vous pourrez utiliser les mêmes références dans des fichiers tra différents.



    L'avis de Brigitte : Si je peux me permettre un conseil de ma longue expérience dans le classement des dossiers. Ne pas hésiter à mettre des noms explicites fussent ce t-ils longs, ce n'est pas le joueur qui lit le code c'est vous ! Idem pour les annotations, cela risque de vous servir énormément quand votre mod prendra de l'ampleur !! Un nom de bloc court de type « cmbat01 » ne vaudra jamais « quoibatestchaotiquemauvais ». Alors n'oubliez pas mon vieux credo : RANGEMENT ! RANGEMENT ! RANGEMENT !




    Conclusion


    On vient de voir la base du fonctionnement d'un dlg avec une partie théorique que vous pourrez revoir plus tard et surtout une partie pratique que vous pourrez expérimenter de suite. Vous avez donc de quoi commencer à remplir le dossier dialogues et translations de votre module. N’hésitez pas à bidouiller un peu et à farfouiller dans le mod qui vous a servi de guide pour voir comment ça fonctionne. Ça vous aidera avant de passer à ce tuto approfondi sur les dlgs .
    Dernière modification par Freddy_Gwendo ; 29/03/2016 à 07h18. Motif: Modification du titre de la discussion et mise en page

    http://toutlemondesontrolistes.blogs...nitiation.html
    Ancien moddeur pour bg2, critique sur la sphère roliste et gamedesigner en herbe

  2. #2
    Date d'inscription
    December 2007
    Localisation
    Dordogne
    Messages 
    1 141
    Le one hour mod de ce tuto a été mis à jour. L'incompatibilité avec le script de zone a été résolu.

    http://toutlemondesontrolistes.blogs...nitiation.html
    Ancien moddeur pour bg2, critique sur la sphère roliste et gamedesigner en herbe

  3. #3
    Date d'inscription
    April 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    4 644
    Pour les ceusses qui se désolaient, j'ai actualisé les liens des images.

    Bonne lecture.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

Discussions similaires

  1. Réponses: 7
    Dernier message: 29/03/2016, 07h29
  2. [TUTORIEL] LE KIT DE SURVIE - CHAPITRE 2 : Le fichier cre
    Par Armand dans le forum Guides, tutoriels
    Réponses: 2
    Dernier message: 29/03/2016, 07h10
  3. [TUTORIEL] LE KIT DE SURVIE - CHAPITRE 1 : Introduction au modding
    Par Armand dans le forum Programmation WeiDU
    Réponses: 1
    Dernier message: 23/03/2016, 22h56
  4. Réponses: 6
    Dernier message: 23/03/2016, 21h37
  5. [TUTORIEL] [CARTES] CHAPITRE 2 : Les mini-maps d'un fichier are
    Par Armand dans le forum Tutoriels, guides
    Réponses: 8
    Dernier message: 23/03/2016, 21h00

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250