Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

Gestion des nouveaux textes liés au mod

<img src="filesforums/mods/editeur_baldur.jpg" alt="editeur" class="image_left" />Cette section traite du développement d'un outil graphique pour créer des mods Infinity Engine.
Répondre
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne

Gestion des nouveaux textes liés au mod

.

Message par Cocrane »

La dernière version de test a soulevé la contrainte à avoir un dialog.tlk de référence fixe pour les nouveaux textes.

Je propose donc le fonctionnement suivant pour faciliter le modding:

1- le dialog.tlk de référence sera utilisé uniquement pour les fichiers en provenance du jeu ou de l'override.
Ce fichier sera crée lors de l'installation de l'éditeur et remplacé en cas de changement de chemin du répertoire de jeu BG signalé dans la configuration de l'éditeur.

2- la création de nouveau fichiers va engendrer de nouveaux textes. Les nouveaux textes seront sauvegardés dans les données de l'éditeur. Ils ont auront un indice particulier.
Exemple: E12345. E pour signaler Editeur.

Si un fichier BG à afficher signale le caractère 'E' dans l'un de ses indices, le texte fera donc référence aux données de l'éditeur.

Avantage: les nouveaux textes ne seront pas liés au fichier dialog.tlk.
Désavantage: on ne peut pas copier-coller un fichier du répertoire mod dans le répertoire de l'override pour le tester dans le jeu BG. Les indices de type 'E...' ne seront exploitables.


3- Pour tester, un fichier du mod dans le jeu, une fonction de test effectuera les actions suivantes
- copie du ou des fichiers ciblées du mod avec des nouveaux indices compatibles avec BG.
- création d'un fichier dialog.tlk à partir de celui du jeu BG avec les nouveaux indices.

Les fichiers seront crées dans un répertoire de test.

Les fichiers seront à copier-coller dans l'override.

Le test dans BG pourra commencer.


Conclusion:

Qu'en pensez vous?

Avez vous une solution plus simple?


Coco
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Cocrane a écrit :1- le dialog.tlk de référence sera utilisé uniquement pour les fichiers en provenance du jeu ou de l'override.
Ce fichier sera crée lors de l'installation de l'éditeur et remplacé en cas de changement de chemin du répertoire de jeu BG signalé dans la configuration de l'éditeur.
Si tu fais ça, ça ne sert à rien de faire une copie. Autant utiliser directement celui du répertoire du jeu.
Cocrane a écrit :2- la création de nouveau fichiers va engendrer de nouveaux textes. Les nouveaux textes seront sauvegardés dans les données de l'éditeur.
Où sont les données de l'éditeur ? Si c'est pour faire comme avec la version 2.1.6, c'est à dire un endroit propre à l'éditeur et non pas au mod, cela ne fera pas vraiment progresser la situation. Tu courras toujours le risque d'écraser ce fichier avec un auteur de mod qui veut en gérer plusieurs à la fois.
Cocrane a écrit :Ils ont auront un indice particulier.
Exemple: E12345. E pour signaler Editeur.

Si un fichier BG à afficher signale le caractère 'E' dans l'un de ses indices, le texte fera donc référence aux données de l'éditeur.
Le pointage du fichier CRE vers le texte est un entier 32 bits (4 octets). Tu ne peux pas y mettre une lettre !
Si tu veux faire ça, décide d'une valeur frontière énorme en terme de nombre entier, par exemple 1 million ou 1 milliard, et au-delà tu décrètes que ça vient du mod et non du jeu.
Cocrane a écrit :Avantage: les nouveaux textes ne seront pas liés au fichier dialog.tlk.
Désavantage: on ne peut pas copier-coller un fichier du répertoire mod dans le répertoire de l'override pour le tester dans le jeu BG. Les indices de type 'E...' ne seront exploitables.
Le désavantage est lourd par rapport à la situation présente. Il t'oblige à coder tout un module spécifique uniquement pour que l'auteur de mod ne se retrouve pas coincé et puisse avoir un moyen simple de tester. Bref tu vas devoir recoder en quelque sort un bout de WeiDU pour y parvenir.
Cocrane a écrit :3- Pour tester, un fichier du mod dans le jeu, une fonction de test effectuera les actions suivantes
- copie du ou des fichiers ciblées du mod avec des nouveaux indices compatibles avec BG.
- création d'un fichier dialog.tlk à partir de celui du jeu BG avec les nouveaux indices.

Les fichiers seront crées dans un répertoire de test.

Les fichiers seront à copier-coller dans l'override.

Le test dans BG pourra commencer.
Si tu veux partir dans la voie de gérer séparément les textes du mod, il serait tout aussi simple de créer un fichier TP2 d'installation des créatures du mod et un fichier TRA asocié, voire de mettre les textes directement dans le fichier TP2 et te passer de fichier TRA. En plus tu faciliterais le travail de l'auteur de mod en lui fournissant un bloc qu'il pourrait recopier avec un minimum d'adaptation dans son mod.

Par exemple, un mod copie une créature dans le jeu de la façon suivante (exemple tiré du mod Chloé) :
COPY ~Chloe/Creatures/CHLOE7.cre~ ~override/CHLOE7.cre~
SAY NAME1 @17
SAY NAME2 @17
SAY LEADER @16
SAY TIRED @35
SAY BORED @36
SAY BATTLE_CRY1 @37
SAY BATTLE_CRY2 @38
SAY BATTLE_CRY3 @39
SAY BATTLE_CRY4 @37
SAY BATTLE_CRY5 @39
SAY DAMAGE @40
SAY DYING @41
SAY HURT @42
SAY AREA_FOREST @43
SAY AREA_CITY @44
SAY AREA_DUNGEON @45
SAY AREA_DAY @46
SAY AREA_NIGHT @47
SAY SELECT_COMMON1 @48
SAY SELECT_COMMON2 @49
SAY SELECT_COMMON3 @50
SAY SELECT_COMMON4 @51
SAY SELECT_COMMON5 @52
SAY SELECT_COMMON6 @49
SAY SELECT_ACTION1 @53
SAY SELECT_ACTION2 @54
SAY SELECT_ACTION3 @55
SAY SELECT_ACTION4 @56
SAY SELECT_ACTION5 @57
SAY SELECT_ACTION6 @58
SAY SELECT_ACTION7 @59
SAY SELECT_RARE1 @60
SAY SELECT_RARE2 @61
SAY CRITICAL_HIT @62
SAY CRITICAL_MISS @63
SAY TARGET_IMMUNE @64
SAY INVENTORY_FULL @65
SAY PICKED_POCKET @66
SAY HIDDEN_IN_SHADOWS @67
SAY SPELL_DISRUPTED @68
SAY SET_A_TRAP @69
SAY REACT_TO_DIE_GENERAL @70
SAY BIO @71
Ici tu as non seulement le nom du personnage, mais aussi sa biographie et également l'ensemble des textes et voix du personnage (cas où l'auteur les a définis dans l'éditeur).
@16 = ~Tu veux que ce soit MOI qui prenne la tête du groupe ? Très bien, si c’est ta décision...~ [CHLOEB]
@17 = ~Chloé~
@35 = ~(Soupir) Je vais m'endormir sur place. Nous devons installer notre campement au plus tôt.~ [CHLOEC]
@36 = ~Pourrais-tu S'IL TE PLAIT nous dire pourquoi nous restons plantés là comme des idiots ?~ [CHLOED]
@37 = ~Les Yr'Kai sont invincibles !~ [CHLOE8]
@38 = ~Vous ne recevrez aucune pitié de ma part !~ [CHLOE9]
@39 = ~Subis les foudres d'Akadie !~ [CHLOEA]
@40 = ~Argh...~ [CHLOEL]
@41 = ~Akadie... je te rejoins...~ [CHLOEM]
@42 = ~Arrgh... On a besoin d'aide par ici, un prêtre...~ [CHLOEE]
@43 = ~Aaahh... sentez-moi ce bon air frais... Ressentez ces piqûres d’insectes... Quelle MERVEILLEUSE idée de faire un crochet par la forêt*...~ [CHLOEN]
@44 = ~Les villes me fascinent. Le moindre coin de rue recèle une bonne occasion... et un voleur pour la saisir.~ [CHLOEO]
@45 = ~Il fait plutôt sombre ici... j'aimerais tant que mon héritage divin m’ait également rendue nyctalope...!~ [CHLOEP]
@46 = ~La lumière du jour. C'est une telle bénédiction... Merci Lathandre.~ [CHLOEQ]
@47 = ~Est-ce que quelqu'un aurait une lanterne ou de la lumière ? Je ne vois pas plus loin que le bout de mon nez...~ [CHLOER]
@48 = ~J'écoute. Que veux-tu ?~ [CHLOE0]
@49 = ~Qu’y a-t-il pour ton service ?~ [CHLOEF]
@50 = ~Oui ?~ [CHLOEG]
@51 = ~Cesse donc de me donner des coups de coude et dis-moi simplement ce que tu veux.~ [CHLOEH]
@52 = ~Bien sûr*! Heu... que dois-je faire, déjà ?~ [CHLOES]
@53 = ~D'accord. Je vais m'en charger.~ [CHLOEI]
@54 = ~T’es sûr de ce que tu me demandes*? D'accord, d'accord...~ [CHLOEJ]
@55 = ~J'ai la situation en main, pas d'inquiétude.~ [CHLOEK]
@56 = ~Bon sang ! Je suis une guerrière, pas une esclave ! Cesse donc de me donner des ordres à tout va.~ [CHLOE_]
@57 = ~Zha'liis ! Envoyer une Yr'Kai... quelle bonne idée.~ [CHLOET]
@58 = ~Je m'en charge.~ [CHLOEU]
@59 = ~D'accord... Mais la prochaine fois c'est TOI qui t’en charges.~ [CHLOEV]
@60 = ~Encore !! De quoi s’agit-il*cette fois ?~ [CHLOEX]
@61 = ~Lucy dit "salut" !~ [CHLOEY]
@62 = ~Prends ça, nil'la fiem !~ [CHLOEZ]
@63 = ~Shal'lach siev ! J'ai raté mon coup !?~ [CHLOE1]
@64 = ~S'tekzhai est invulnérable !~ [CHLOE2]
@65 = ~Tu ne penses pas que je trimballe assez de camelote comme ça ? Je ne suis pas une bête de somme.~ [CHLOE3]
@66 = ~Je m'ennuie.~
@67 = ~Je m'ennuie énormément.~
@68 = ~Tu vas regretter d'avoir brisé ma concentration.~
@69 = ~Ce n’est pas pour dire, mais je m'ennuie VRAIMENT.~
@70 = ~Sales bâtards ! Je vais tous vous crever !!~ [CHLOEW]
@71 = ~Chloé a grandi dans un petit orphelinat près de Padhiver. Elle prétend être issue de l'union d’Akadie - déesse de l'Air et de la Rapidité – avec un mortel. Bien qu'elle n'ait aucune preuve de ce qu’elle avance, sa rapidité et ses talents surnaturels accréditent cette affirmation. Chloé semble motivée par une force intérieure qui la pousse à améliorer ses compétences en permanence, passant le plus clair de ses journées à s'entraîner. Vous vous demandez comment elle fait pour se battre aussi bien alors que la plupart seraient épuisés par un tel sacerdoce, mais elle se contente d’un sourire complice et déclare que c’est tout simplement dû à son entraînement quotidien, non à son héritage divin. Elle se sent proche d’Imoen et de vous, qui partagez également des ascendances divines.~
@72 = ~Argh... tu as signé ton arrêt de mort !~ [CHLOEL]
Moyennant un peu de code avant pour que le fichier TP2 soit complet, tu donnerais la possibilité à l'auteur d'installer facilement ses créatures pour les tester. Avec les avantages de WeiDU en prime : la désinstallation, pour revenir à un état "vierge", à l'exception du fichier dialog.tlk (WeiDU n'efface jamais les textes qu'il y a ajoutés).
A titre d'exemple (peut-être incomplet)
BACKUP ~MonBeauMod/backup~
AUTHOR ~mon adresse mail~

// Version appearing in WeiDU.log
VERSION ~v0.1~

AUTO_TRA ~MonBeauMod/Language/%s~

LANGUAGE ~Francais~
~Francais~
~MonBeauMod/Language/Francais/setup.tra~

BEGIN ~Mon Beau Mod : installation de base pour test des creatures~

// Ensuite, tu mets tous les COPY xxx pour toutes les créatures
Et tu crées l'arborescence de fichiers qui va bien pour que le fichier tra soit au bon endroit par rapport à ce qui est indiqué dans le TP2.

Cette solution aurait l'avantage d'ouvrir la voie à ce que l'auteur a besoin de faire pour l'installation de son mod.


Pour mémoire, je te rappelle que j'avais proposé des pistes de solution alternative dans mon rapport de bug :
Isaya a écrit :Solutions possibles (pouvant être combinées pour plus d'efficacité) :
  • ajouter un bouton Annuler dans l'écran de configuration
  • vérifier s'il y a vraiment eu des changements dans l'écran de configuration pour ne recopier le fichier dialog.tlk qu'à bon escient
  • placer le fichier dialog.tlk dans le répertoire de mod choisi par le créateur de mod : c'est un pas vers la gestion multi-configurations, et surtout ça te permettrait de mettre en place une stratégie de protection du fichier dialog.tlk du mod, en refusant de l'écraser s'il a été modifié par rapport à la référence que tu cherches à recopier
    ...
  • imposer un redémarrage de l'éditeur quand un changement de configuration intervient, de façon à ce que tous les fichiers de référence soient bien chargés
Tu pourrais conserver le principe du fichier dialog.tlk incluant les textes du jeu plus ceux du mod.
  • en le stockant dans le répertoire du mod, tu le protèges contre le changement de répertoire de mod (un fichier par mod).
  • en sécurisant l'utilisation de l'écran de configuration, tu évites que la personne qui y entre par erreur ne soit obligé de cliquer sur le seul bouton de sortie et que le programme n'écrase le fichier incluant les textes du mod
  • en empêchant l'écrasement, sauf sur confirmation par l'utilisateur, tu fais en sorte que ce soit l'utilisateur qui prenne la décision de perdre ses textes
  • et enfin l'utilisateur garde la possibilité de tester assez facilement ses fichiers, en recopiant temporairement ce fichier dialog.tlk dans le jeu
La dernière suggestion permet d'éviter que quelqu'un qui change vraiment la configuration ne continue à travailler sur la base d'un fichier dialog.tlk qui a été chargé au démarrage du programme, donc avant le changement de configuration (si je suis passé de BG II à BGT, les informations lues au démarrage ne sont pas du tout bonnes).


La deuxième solution devrait t'occasionner moins de travail, il me semble (surtout des contrôles).
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

Je vais être synthétique.

La solution TP2 - TRA est la meilleure solution. Comme quoi, faire un 'tour de table' est tj très utile à celui qui accepte les idées des autres surtout quand elles sont meilleures. ^^

De plus, j'ai pour but d'automatiser tout ce qui est possible pour faciliter la réalisation du tp2 et tra du moddeur. Ta solution va clairement dans ce sens.

dialog.tlk dans le rep mod.
> Oui

redémarrage de l'éditeur lors d'une mise à jour de la config
> Non obligatoire. Il faut lancer la fonction de lecture du nouveau dialog.tlK et initialiser les variables liées au chemin.

Bouton annuler sur l'écran de config
> Oui

Bouton 'continuer' au lieu de 'Quitter' sur l'écran de config

Réactiver la sauvegarde auto du répertoire mod à chaque fermeture de l'éditeur. On a un historique des sauvegardes.
> bonne ou mauvaise idée?

Coco
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Cocrane a écrit :La solution TP2 - TRA est la meilleure solution. Comme quoi, faire un 'tour de table' est tj très utile à celui qui accepte les idées des autres surtout quand elles sont meilleures. ^^
C'est une qualité rare, en effet.
Cocrane a écrit :De plus, j'ai pour but d'automatiser tout ce qui est possible pour faciliter la réalisation du tp2 et tra du moddeur. Ta solution va clairement dans ce sens.
Sans vouloir doucher ton enthousiasme, je tiens à préciser que les créatures sont un cas simple, jusqu'à ce que tu ajoutes un éditeur de kit. Alors autant en profiter. Il y aurait bien d'autres cas où il vaudra mieux laisser tomber l'idée de faire le boulot à la place de l'auteur.
Cocrane a écrit :dialog.tlk dans le rep mod.
> Oui
Si tu adoptes cette idée et la protection contre l'écrasement du fichier, la création du TP2 n'est plus prioritaire. Tu pourrais alors te consacrer à achever l'éditeur de créature et sa mise au point avant de t'intéresser à cette autre capacité.
Cocrane a écrit :redémarrage de l'éditeur lors d'une mise à jour de la config
> Non obligatoire. Il faut lancer la fonction de lecture du nouveau dialog.tlK et initialiser les variables liées au chemin.
Je crois au contraire que c'est nécessaire. Si je change vraiment la configuration et que je passe d'un répertoire de BG II à une installation de BGT, il est clair que mon fichier CHITIN.KEY et la liste des fichiers du jeu va considérablement changer. Sans oublier les fichiers 2DA et IDS, que tu recopies, semble-t-il, au démarrage de l'éditeur. Donc, à mon avis, pour être bien certain de couvrir tous les cas possibles, il faut que tu répètes quasiment toute la séquence de démarrage quand on modifie la configuration, tout au moins si c'est celle du jeu de base. Seul le dialog.tlk serait effectivement nécessaire si c'est seulement le répertoire du mod qui est changé.

Ma proposition de redémarrer, c'était juste pour éviter de bloquer l'IHM pendant 15 secondes ou plus à la sortie de la fenêtre de configuration dans le cas où il faut tout reparcourir.
Cocrane a écrit :Réactiver la sauvegarde auto du répertoire mod à chaque fermeture de l'éditeur. On a un historique des sauvegardes.
> bonne ou mauvaise idée?
Puisque tu envisages de laisser le choix de l'écrasement du fichier dialog.tlk à l'utilisateur, pourquoi ne pas laisser ce choix à l'opérateur, via un panneau de configuration, par exemple. Autrement, la multiplication des sauvegardes à chaque lancement, même si c'est juste pour consulter, ce serait vraiment un gâchis et cela rendrait sacrément bordélique l'endroit où tu stockerais ces sauvegardes. Pour cet emplacement aussi, ce serait bien que l'utilisateur puisse intervenir, sous peine qu'il ignore où les sauvegardes se trouvent et ne puisse donc pas en bénéficier en cas de pépin.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Cocrane
Adepte de Grondemarteau
Ogre mage
Messages : 1328
Enregistré le : dim. 21 mars 2010, 12:03
Localisation : Paris
Contact :
Statut : Hors ligne
.

Message par Cocrane »

1- Automatisation TP2 / TRA

Toute action automatisable que l'on m'expliquera clairement sera proposée dans l'éditeur.

Je ne doute pas de ton analyse sur le fait que certains cas seront complexes et à gérer manuellement uniquement.

Je ferais une rubrique prochainement sur ce sujet afin de lister les types d'actions/données contenues dans le TP2/TRA.


2- Bilan configuration

- Dialog.tlk dans le répertoire Mod

- A chaque changement de configuration, les données de l'éditeur et de BG seront rechargées par défaut.
> Effectivement, selon la modification, tout n'est pas à recharger mais cela nécessite de tester chaque cas et d'agir en conséquence.
C'est fastidieux. Le retour d'investissement est non valable compte tenu que la configuration ne va pas changer constamment.

- Si le dialog.tlk va être écrasé, l'éditeur préviendra le moddeur des conséquences et demandera une confirmation.

- A chaque fermeture de l'éditeur, une nouvelle sauvegarde sera créée sur un chemin que le moddeur peut configurer.
Si le champ est non renseigné, il n'y a pas de sauvegarde.

Actuellement, tout est conservé par défaut. Faut il une mécanique de purge automatique? ("conserver "la dernière sauvegarde, les 10 dernières? etc...)

Le nom du répertoire de sauvegarde est du type 'Date_2011_8_28_Heure_15_42'.

- Pour effectuer un test, il faudra copier les fichiers du mod et le fichier dialog.tlk dans l'override.


Coco
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

1. C'est bien le souci. C'est difficile d'expliquer clairement, parce qu'il faudrait avoir fait soi-même le tour de la question.

En principe, si tu connais les offsets où on peut mettre un texte personnalisé, tu sais où il faut mettre un SAY xx @nn. Et les valeurs de xx qui représentent l'offset sont normalement dans la doc WeiDU (chapitre "Constants") avec l'offset correspondant.

Pour les objets et les sorts, ça ne corse un petit peu, parce que tu peux affecter un effet dont la fonction est d'afficher un texte (par exemple "sous l'effet de hâte", ...). L'offset à patcher dépend de la position de l'effet (il y en a un nombre variable, donc la position varie, comme les sorts dans un fichier CRE). Evidemment, si tu réalise un éditeur d'objet ou de sort, tu seras forcé de te poser la question de la mémorisation du texte associé à l'effet en question, donc la logique pour le patch dans le fichier TP2 devrait alors couler de source. Mais il faudra alors veiller à ne pas faire d'erreur de calcul comme avec les offsets. ;)


2. Je pense effectivement que tu peux tout recharger à chaque changement de configuration. Et si tu vérifies bien qu'elle a vraiment changé, tu peux éviter de perdre du temps si l'utilisateur n'a rien modifié dans l'écran de configuration.

Pour la sauvegarde et le ménage, je suis partisan de laisser l'utilisateur décider. Parce que si je lance l'éditeur juste pour consulter, à quoi bon faire une nouvelle sauvegarde à la fin ? Ce n'est pas bien gênant de faire une copie pour rien, mais bon.

En tout cas, je ne ferais pas confiance à un outil qui déciderait pour moi quelles sont les sauvegardes inutiles à supprimer, alors qu'il n'en a aucune idée. Dans le meilleur des cas (pour lui), il en saura autant que moi si j'ai oublié. Dans tous les autres cas, je saurai mieux que lui quand j'ai fait des modifications significatives et donc quelle sauvegarde antérieure j'ai intérêt à garde au cas où je découvre tardivement que j'ai fait une bêtise.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Répondre

Retourner vers « Éditeur Baldur's Gate »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité