Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > [reference] .2da, .bif, .dds et tout ce genre de chose ...
[reference] .2da, .bif, .dds et tout ce genre de chose ...
Par mobidique le 15/11/2002 à 11:44:51 (#2567088)
Alors est-ce que quelqu'un, ou plusieurs personnes les unes à la suite de autres, pourrait lister de manière aussi exhaustive que possible les différents type de fichier qui composent les ressources de NwN, dire ce que ça contient, sous quelle forme, comment ce type de fichier est relié aux autres ...
Mes problèmatiques immédiates concernent l'ajout d'une porte personalisé via un hakpack, et la compilation de Hak créant le cas échéant des pbs pouvant être résolu par le tripotage de ces fichiers. Je pars à la pêche de mon coté, je verrais bien ce que je vais trouver et je raménerais ici des trucs peut être ...
Par coolstar le 15/11/2002 à 12:27:34 (#2567414)
Par mobidique le 15/11/2002 à 12:36:18 (#2567488)
Par coolstar le 15/11/2002 à 12:57:18 (#2567672)
Par mobidique le 15/11/2002 à 13:09:59 (#2567788)
Par coolstar le 15/11/2002 à 14:01:29 (#2568260)
Perso, ta question tombe bien... vu que je suis justement en train d'explorer ce type de probs (mais je commence seulement)... alors disons que si personne ne l'a pas encore fait, on peut commencer ! :hardos:
Quoi que je ne suis pas sans savoir que eMRaistlin a dû déjà aborder ce type de sujet... et d'autres encore (ainsi que par chez NWN-fr)... :D
...
Par mobidique le 15/11/2002 à 14:07:30 (#2568321)
Par eMRaistlin le 15/11/2002 à 14:24:38 (#2568433)
Le bif, c'est le fichier NWN, celui dont tu va extraire les info source, pour les editer dans des 2da mis dans l'override ou le hak.
En fait, ce qu'il faut bien retenir, en substance, c'est que les seuls fichier a maitriser vraiment utilses sont les .2da et le dialog.tlk
Le dialog.tlk est un fichier qui attribue a une valeur reference UNIQUE un libelle/texte/autre. En soit, et depuis le patch 1.26 encore moins, ce fichier tlk n'est pas a modifier, et n'est pas réelement interressant.
TOUTEFOIS : lors de la modification future de tes .2da, tu va être ammené a ajouter des entrées, et a incrementer la reference de ces entrée (en general, 67000+). IL FAUT BIEN SUR VERIFIER QUE LA NOUVELLE REFERENCE N'EST PAS UTILISEE DANS LE TLK. sinon, c'est sur, au prochain build de ton module, tu aura une violation ^^
Les 2da, ce sont un ensemble de fichier qui regroupent des infos, un peu a la maniere d'une BDD composée de tables. Chacun concerne un domaine particulier, et dans l'ensemble, ils sont independant (vu qu'en fait, ils pointent tous vers le tlk pour faire la liaison inter-table).
Voila un bref resumé. Si j'ai plus de temps, je passerait plus en detail dessus, même si pour ce que j'en sait, le proctophantasmisme pourra t'en dire plus que moi.Ma porte en fait c'est juste un TGA modifié et à terme je le refilerais ici. Mais ce que je voudrais c'est que ce soit un porte à part entière parce que là, en retravaillant un TGA et en le mettant dans le répertoire override je perd une porte ... en fait 2 même ... c'est couillon
De memoire, c'est en rajoutant une entrée dans le fichier placeable.2da, mais peut etre que y'en a un pour kles portes (mais j'y crois pas^^)
Par mobidique le 15/11/2002 à 14:34:43 (#2568494)
Par LeProctophantasmiste le 15/11/2002 à 15:17:12 (#2568724)
Pour les portes universelles cf doortypes.2da. Pour les portes spécifiques au tilesets je cherche[/EDIT].
De façon générale, éditer les .2da consiste à modifier des entrées existantes ou à rajouter des lignes, ça ne marchera pas pour tous les 2da, certains sont mappés, chaque ligne étant interprétée d'une façon spécifique.
Les .bif ce sont des fichiers compilés, qui regroupent toutes les ressources d'un certain type (2da.bif, .aurora_gui.bif...). Pour les ouvrir, il te faudra un décompilateur : NearInfinity est très bien quoique qu'il n'était pas prévu pour NWN à l'origine, d'autant plus qu'il t'affichera le fichier qui est dans l'override s'il existe (introduits par les patchs, il faut faire attention de ne pas travailler sur une vielle version du .2da), désolé je n'ai pas d'adresse mais je pense que tu devrais trouver par google. Sinon nwnexplorer de Torlack, qui en plus édite les fichiers ITP, ouvre les .tga... http://www.torlack.com/
ou encore NWNViewer de Zoligato.
Les fichiers .bif se trouvent dans \DATA.
Les .2da sont séquentiels, si tu mets une ligne d'id 92 ou 852 immédiatement après la ligne 210 elle sera considérée comme ayant l'id 211.
Si tu as des questions précises, j'essaierais de t'aider...
EDIT: Les portes, je m'étais un peu planté.
Par mobidique le 15/11/2002 à 15:52:47 (#2568937)
Par Iridian le 15/11/2002 à 15:56:07 (#2568959)
Mais alors comment faire exactement => ???
Je suppose qu'il faut ajouter une ligne dans le .2da correspondant, une des colonnes correspondant au nom du script à éxecuter, mais après, aucune idées ?
Faut il aussi rajouter un truc dans le tlk ?
Question subsidiaire, si un jour par le plus grand des miracles j'arrive a faire une modification de ce type, comment l'inclure dans mon module ? (es-ce que c'est automatique ou faut-il distribuer un fichier supplementaire avec le module)
Par mobidique le 15/11/2002 à 16:05:12 (#2569020)
.2da - Rules, references, other?
.asi - ??? Something to do with 3D sound?
.are - Area info file. This file contains a listing and info about all the Tiles in an area
.bic - ?Binary/Bioware ? Character - a character file.
.bif - BioWare/Binary? Information? File. - A compressed archive of all
the other file types.
.bik - BINK movie.
.bmu - ?Bioware MUsic? An MP3 encoded sound file renamed.
.dlg - Dialog. Conversation file.
.erf - External Resource File. A compressed archive containing all the
resources necessary for an object exported from the Toolset. For
example, a custom placeable will include its scripts with its
properties.
.fac - ??? Custom faction reputation file
.flt - ??? Something to do with 3D sound?
.gic - Contains comments about all the non-tile elements of an area. IE. Creatures, Doors, Encounters, Sounds, Stores, Triggers, etc..
.git - Contains the template information for all the non-tile elements of an area IE. Creature, Door, Sound, Store, Waypoint, Placeables?
.gui - Graphical User Interface. Dialogue boxes.
.hak - 'HakPak' - same format as .bif and .erf, a compressed archive
of other files used for user customisation of NWN. Should 'beat'
the /override directory files in resource conflicts. Doesn't always.
.ifo - This is a save game file in the .SAV file which stores information about what items the party has, what journal entries, etc...
.itp - Palette. Where any custom palette placeable, NPCs etc are described
.jrl - Journal file.
.m3d - ??? Something to do with 3D sound?
.mdl - Model. 3D Model description, can be ASCII or binary/compressed?
.mod - Module file.
.ncs - Compiled NWScript file
.nss - NWScript source file (text)
.nwm - 'Official' module. Equivalent format to .mod
.plt - Photoshop? Layered Texture - a texture in BW proprietary format
.sav - SAVe game file.
.set - TileSET description
.ssf - Sound Set File.
.tga - Targa. Image file.
.tlk - Talk? dialog.tlk is the only one that matters.
.txi - ? Some sort of texture mapping information?
.txt - Text. Used for Script Editor templates.
.utc - Creature Template File. Each creature in the game has one of these associated with it. Basically it is the information about the creature that you see in the properties dialog in the editor.
.uti - Item Template File. Each item in the game has one of these associated with it. Bascically it is the information about the item that you see in the properties dialog in the editor.
.utp - Placeable Template File. Each placeable in the game has one of these assocaited with it. Basically it is the information about the placeable that you see in the properties dialog of the editor.
.wav - Wave. Very common sound format
.wok - Walkmesh geometry - ASCII
volé ici http://nwvault.ign.com/kb/data/Maximus@Vaultnetwork.commGMS8nbAqw.shtml
Par LeProctophantasmiste le 15/11/2002 à 16:14:20 (#2569080)
ok merci ... en fait vous faites un peu de la bidouille au coup par coup, j'ai l'impression, je peux me tromper hein no offense guys ...
Au départ toujours :D, tant qu'un 2da n'est pas référencé il faudrait être devin pour savoir ce qu'en sont les effets précis. Avec l'habitude certaines interprétations deviennent naturelles, mais il se trouve que ton histoire de porte est beaucoup plus compliquée qu'elle n'en a l'air, les 2da concernés:
genericdoors.2da
doortype.2da
doortypes.2da
et les t*01.2da (trois ou quatres qui sont spécifiques aux tilesets)
Il s'agit de comprendre comment ils marchent tous ensembles, aucune garantie que de rajouter une ligne ait un effet (à vrai dire pour genericdoors.2da par exemple cela m'étonnerais même), sans faire de test, c'est pas facile :D. La fonction de recherche sur les forums Bio est en panne, donc pas de secours de ce côté là non plus. La démarche pour tester: tu suis chacune des StrRef des 2da dans dialog.tlk, tu ouvres le toolset et tu regardes à quoi ces identifiants correspondent. Une fois que tu t'es fait une idée, tu rajoutes des lignes et tu vois ce qui marche, et quel effet cela produit. Pour l'histoire des portes aller voir du côté des .set est une bonne idée aussi.
Une fois référencé en revanche, modifier un 2da est aisé. Tu pourrais regarder mes fil sur spells.2da, IPPR.2da ou repadjust.2da pour te faire une idée, même si cela ne te dira pas comment cela marche pour les portes.
Tu aurais demandé un truc sur les plaçables ou les créatures, ça aurait quand même été plus simple :D.
EDIT: pétage de plomb en corrigeant l'orthographe une première fois.
Par LeProctophantasmiste le 15/11/2002 à 16:26:16 (#2569189)
Provient du message de Iridian
J'ai cru comprendre qu'on pouvait modifier les .2da pour ajouter des capacités d'armes magiques.
Mais alors comment faire exactement => ???
Je suppose qu'il faut ajouter une ligne dans le .2da correspondant, une des colonnes correspondant au nom du script à éxecuter, mais après, aucune idées ?
Faut il aussi rajouter un truc dans le tlk ?
Question subsidiaire, si un jour par le plus grand des miracles j'arrive a faire une modification de ce type, comment l'inclure dans mon module ? (es-ce que c'est automatique ou faut-il distribuer un fichier supplementaire avec le module)
Tu peux pas faire un autre fil parce qu'il pourrait y en avoir pour un moment? En gros c'est possible, mais à mon avis c'est un peu prématuré tant qu'éditer dialog.tlk est nécessaire. Cela dépend aussi de ce que tu veux faire, si c'est une propriété qui se déclenche à chaque fois que l'arme touche, ça reste de la bidouille (il faut utiliser poison.2da ou disease.2da, donc il y aura des jets de sauvegarde, rien ne t'empêche de les mettre à 99 si tu veux que l'on aie aucune chance de les passer). Si c'est une simple propriété utilisable type "unique power..." mais avec un nom de ton cru et éventuellement un sous menu radial, alors cf mes fils sur IPPR_SPELLS.2da et spells.2da dans les persistants.
Par LeProctophantasmiste le 15/11/2002 à 17:18:02 (#2569592)
[TILE161DOOR0]
Type=0
X=5.00
Y=0.00
Z=0.00
Orientation=-90.0
type = 0 c'est la porte générique, définie soit dans doortype.2da, soit dans t*door.2da correspondant au tileset s'il existe.
DOOR0 <- pourrait bien correspondre aux entrée 0 1 2 de ces 2da.
Je pense que rajouter une ligne à doortypes.2da peut marcher.
J'ai oublié de préciser un truc: ce qu'il faut que tu arrives à faire c'est probablement ajouter une apparence de porte au toolset, pas la porte elle même dans la palette (pour ça, pour les plaçables au moins c'est les .UTP qui sont concernés). Ensuite tu créeras une nouvelle porte en sélectionnant cette apparence à l'intérieur du toolset.
et la compilation de Hak créant le cas échéant des pbs pouvant être résolu par le tripotage de ces fichiers.
J'avais pas vu ça, ce qui peut se passer c'est que les deux hak contiennent un même .2da, auquel cas il n'y a aucun moyen de les associer facilement. Il faut ouvrir les 2da et rajouter à l'un les lignes de l'autre, souviens toi que quelque soit l'id que tu rentres dans la première colonne, les lignes seront en fait traitées de manière séquentielle. Pour appearence.2da ou placeable.2da, cela ne pose pas de problème car les ids ne sont pas référencées ailleurs (enfin, grosso modo, dans un module que tu auras fait avec un hak dont les ids ont été déplacés, les créatures vont prendre l'apparence nouvellement indiquée à l'id d'origine, il n'y a rien à y faire sinon resélectionner l'apparence). Ce n'est généralement pas le cas, donc il faut aussi changer les 2da qui sont en relation avec celui qui a été modifié.
Par Kemay le 15/11/2002 à 21:18:37 (#2571248)
En gros, il s'agit tout simplement de tableaux que vous pouvez éditer avec n'importe quel éditeur de texte. La première ligne contient toujours l'entête des colonnes et la première colonne contient le numéro de référence de chaque ligne (qui n'a rien à voir avec le dialog.tlk)
Vous pouvez ajouter autant de lignes que vous voulez à un fichier .2da mais vous NE pouvez PAS ajouter de colonnes. De plus le label (première colonne) doit être unique pour chaque entrée.
A l'origine, les fichiers .2da étaient utilisés par l'Infintity Engine (moteur de BG1 et 2,IWD1 et 2 et une version altérée pour PS:T) pour gérer les règles ADD et correspondaient en gros aux tables que l'on trouve dans le PHB et DMG 2nd edition plus quelques uns liés aux sons, aux areas et aux modèles. Leur utilisation est amoindrie avec l'Aurora Engine (moteur NWN) mais reste importante.
Le seul rapport entre le fichier dialog.tlk et les fichiers 2da est que parfois (en fait presque toujours) au moins une colonne est dédiée à une chaîne de caractère qui apparaîtra en jeu (par exemple le nom ou la description d'un skill). A ce moment là, cette colonne sera remplie par des références au fichier dialog.tlk
exemple de fichier .2da : loadhints.2da2DA V2.0
LABEL HINT CAMPAIGNONLY
0 Hint1 67053 0
1 Hint2 67054 1
2 Hint3 67055 0
3 Hint3 67653 0
4 Hint3 67655 1
5 Hint3 67656 1
6 Hint3 67657 0
7 Hint3 67658 0
8 Hint3 67659 0
9 Hint3 67660 0
10 Hint3 67661 0
11 Hint3 67662 1
12 Hint3 67663 0
13 Hint3 67664 0
14 Hint3 67665 1
15 Hint3 67666 1
16 Hint3 67667 1
17 Hint3 67668 0
18 Hint3 67669 1
19 Hint3 67670 1
20 Hint3 67671 0
21 Hint3 67672 0
22 Hint3 67673 1
23 Hint3 67707 1
24 Hint 68481 0
25 Hint 68486 0
26 Qbar2Wp 45 0
27 DeadHen 68700 1
Ces fichiers se trouvent dans le fichier 2da.bif lui même situé dans /NWN/Data. Les fichiers .bif sont des fichiers d'archives un peu comme des fichiers zip ou rar et vous pouvez en extraire le contenu à l'aide du NWNViewer de Zoligato. Comme pour tous les fichiers ouverts à la modifications, les 2da d'un hakpak ont priorité sur ceux du dossier override qui a priorité sur le fichier d'oigine (situé dans le bif).
Voilà rapidement pour aider à comprendre l'utilisation des 2da. Après cela chaque fichier .2da est différent et aura un impact complètement différent sur le jeu. Quand j'aurai le temps, je détaillerai plus sur le dialog.tlk qui n'est en fait qu'une réminiscence de l'Infinity Engine et qui est devenu quelque de plus embêtant qu'autre chose avec l'Aurora Engine
Par eMRaistlin le 16/11/2002 à 0:12:17 (#2572183)
bon, bein, je m'excuse...
Merci kemay...
(J'ai toujours eu de la chance alors ^^)
Par Kemay le 17/11/2002 à 8:37:56 (#2578492)
Un peu d'histoire
Pour comprendre à quoi sert le fichier dialog.tlk et pourquoi l'apparition de son nom est régulièrement suivie de "Attention, ne pas toucher", "Modifiez à vos risques et périls" et autres "don't mess with this file", nous devons revenir au bon vieux temps de BG et de l'Infinity Engine. Toutes les données du jeu étaient contenues dans des fichiers .bif (fichiers d'archives) à l'exception des sons, des fichiers du dossier override (qui avaient déjà priorité sur les fichiers d'origine et étaient utilisés quasi-uniquement pour corriger des bugs, puis plus tard pour la "customisation" du jeu), des films et de tous les textes apparaissant en jeu. Ces derniers (les textes) étaient tous situés dans un seul fichier (deux pour la version française): le fichier dialog.tlk (dialog.tlk et dialogF.tlk pour la version française). Je ne vais pas entrer en détails dans la structure même des fichiers .tlk mais grosso modo, il s'agissait tout simplement d'un index suivi de tous les textes du jeu (texte de l'interface comme "Nouvelle Partie" ou "Multijoueur" à l'écran de présentation, nom ou description de PNJ, d'objets, textes des dialogues, des descriptions de sorts,etc...) tapés à la suite d'un seul bloc.
Pour Bioware/Black Isle, le gros avantage de ce système était la traduction du jeu, seul deux(trois pour la plupart des langues) fichier avait besoin d'être modifiés: le fichier dialog.tlk (et dialogF.tlk pour les langues dont les adjectifs/participes/etc. s'accordent au genre) et l'exécutable pour lui dire quand utiliser quel fichier .tlk
Pour la "customisation" du jeu, cela présentait à la fois des avantages et des inconvénients:
l'avantage principal était que tous les textes étaient régis par les même règles, ce qui permettaient notamment l'utilisation de tokens n'importe où, par exemple le nom des NPC pour pouvoir créer des nom dynamiquement ou la description/nom des objets (par exemple dans BG2, les mages pouvaient fabriquer "la dague de " et en jeu vous aviez une dague portant votre nom)
les désavantages résidaient dans le fait que quasiment quoi que ce soit que vous modifiez, il fallait hexediter le(s) fichier(s) .tlk,ce qui au début surtout (ensuite des éditeur de tlk plus ou moins fiables sont apparus) était particulièrement laborieux. De plus pour que quelqu'un d'autre puisse utiliser ce que vous aviez fait, il fallait qu'il ait exactement le même .tlk que vous.
Fichier .tlk et NWN
Si la modification du fichier .tlk était obligatoire du temps de l'Infinity Engine, elle est devenue complètement obsolète et même à proscrire avec l'Aurora Engine. Maintenant les textes liés à des objets, ou à des dialogues sont en grande partie contenue dans le fichier dialogue/objet lui-même. Le(s) fichier(s) .tlk de NWN contient uniquement une grande partie des texte de la campagne officiel, la description des objets de base, les textes de l'interface et les textes liés aux fichiers .2da. Sinon tous les textes sont modifiables facilement sans avoir à toucher au dialog.tlk. Le seul moment où vous pourriez vouloir toucher au dialog.tlk est lors de la modification de fichiers 2da (ex: pour créer une nouvelle classe, je dois rajouter une ligne dans le fichier classes.2da (c'est seulement un exemple, il n'est pas si facile de rajouter une nouvelle classe dans NWN en réalité), or le nom qu'aura cette classe en jeu est défini par une référence au fichier dialog.tlk. Donc si je veux que ma classe ait un nom n'existant pas déjà, je vais devoir le rajouter dans le fichier .tlk).
Que faire dans ce cas là ? Ne pas toucher au .tlk et attendre patiemment ce que Bioware a dit qu'il ferait bientôt cad ajouter une nouvelle colonne aux fichiers .2da servant d'alternative à la référence .tlk et permettant de taper directement dans le fichier .2da ce qui apparaîtra en jeu. En attendant, il ne vous reste plus qu'à utiliser un nom qui existe déjà dans le fichier .tlk. Le problème n'est pas bien grave car la plupart des cas où vous aurez besoin de nom spécifique dansles fichiers .2da sont quasi-uniquement les noms qui apparaissent dans l'Aurora Toolset et non celui qui apparaîtra en jeu. Par exemple je créé un nouveau modèle de chaise. Pour pouvoir l'utiliser il faut que je rajoute une ligne dans placeables.2da qui gère la liste de placeables utilisables dans le Toolset. Comme nom je lui donnerai le même nom que la chaise d'origine. Dans l'Aurora Toolset j'aurai deux placeables dans ma liste nommés "chaise" mais lorsque que j'en place une dans le module je peux lui donner le nom que je veux.
Ok, on n'a plus besoin de toucher aux .tlk, mais pourquoi tout le monde hurle de ne pas y toucher ?
Tout simplement parce que si vous m**dez lors de la modification du fichier, tous les texte qui y sont contenus seront soit pas les bons soit inexistants en jeu (cad plus aucun texte dans l'interface, plus de dialogues dans la campagnes officielles, plus de liste dans le Toolset, etc etc...) En plus pour que quelqu'un puisse utiliser quelque chose qui modifie le dialog.tlk, il faut qu'il utilise spécifiquement ce dialog.tlk, or il ne peut pas être inclus à un HakPak et est n'est pas propre à un module mais à tout le jeu. Bioware ne "supporte" pas la modifications de .tlk donc vous ne pouvez pas patcher automatiquement avec un .tlk modifié.
Bref, pas touche au .tlk
Voilà en gros pour le fichier .tlk, j'espère que c'était utile :)
JOL Archives 1.0.1
@ JOL / JeuxOnLine