• mise à jour 20 août 2015

    Cette page reprend les liens de téléchargement des logiciels évoqués dans le petit article sur l'importation de modèles 3D.

     

    OBLIVION / MORROWIND / FALLOUT 3 / SKYRIM

    NifSkope v.1.1.3.36 : pour visualiser rapidement les modèles avec leurs textures (merci à l'équipe de Nifskope)

    FOMM (Fallout Mod Manager) v.0.13.21
    : pour extraire les meshes et les textures des archives .bsa de ces différents jeux (merci à Timeslip et Kaburke)
    Bien que le développement de FOMM semble être en stand by, vous pouvez vérifier la présence de nouvelles versions sur cette page de sourceforge.

     BSA Browser v.1.7-1395 : un autre outil pour extraire les archives .bsa, FOMM nécessitant la présence de Fallout 3 pour fonctionner. (merci à Fawzib Rojas)

    Plugin NifTools (lien vers la page générale)  : pour importer des modèles dans 3ds, Blender ou Maya.
    Niftools pour 3ds Max - version 3.5.5.4728 ¦¦ Miroir ¦¦ Il faut creuser sur le site de Niftool pour trouver cette version du plugin pour 3ds, qui marche pourtant très bien, et prend en charge un grand éventail de versions de 3ds Max (depuis Max 5 jusqu'à 3ds Max 2012, en versions win32 et x64).

     

    Neverwinter Nights 2

    MDBView v0.5b : pour visualiser rapidement les modèles de Neverwinter Nights 2 (merci à Denice)

    Plugin nwnutilsmaxplugins v.2.3 : pour importer des modèles de NWN2 dans 3ds

     

    Titan Quest

    MeshView v1.13 (31.12.2014) : pour visualiser les modèles de Titan Quest, et les exporter en .obj (merci à Tamashi pour ce programme, auquel il semble continuer de travailler !)
    MeshView v1.12 (ancienne version)

    Arc Explorer v1.0 : pour parcourir et extraire le contenu des archives .arc (merci à Benjamin Haisch)

    Texture Viewer v1.1 : pour afficher et convertir les textures .tex (merci à Max McGuire)


    votre commentaire
  • Fichiers .bam et palettes

    Les fichiers .bam sont en 256 couleurs (8bits). On parle dans ce cas de couleurs indexées, car il existe un index dans lequel chaque numéro de 0 à 255 se voit attribuer une référence de couleur. Cet index forme ainsi une palette (ou Table de couleur) dont les nuances sont appelées via des numéros, pour colorer les différentes parties d'une image.
    Ce qui veut bien entendu dire qu'une animation ne peut avoir que 256 couleurs différentes (les deux premières étant réservées pour la transparence et l'ombre d'une animation, leur nombre effectif est de 254). Cela peut paraître peu, et pourtant c'est largement suffisant pour avoir des rendu très nuancés. D'ailleurs, nombre d'animations utilisent moins d'une cinquantaine de nuances !
    Mais surtout, il faut bien comprendre que ces couleurs sont attribuées selon leur numéro d'index et non pas selon leur nuance par le moteur de l'Infinity Engine (et donc par Bamworkshop 2 ou DLTCEP) : telle animation n'aura pas du brun d'attribué, mais par ex. les références n°20,21,22,23,24 qui peuvent correspondre à différentes nuances de brun dans telle palette, mais peuvent être toutes autres dans telle autre.

    Par exemple, si l'on applique une table de couleur dont les nuances sont identiques, mais indexées à des numéros différents (par ex. les mêmes bruns dont je viens de parler, mais aux n° 178,179,180,181,182), les couleurs seront complètement faussées, et nos nuances de bruns ne seront pas du tout appliquées à l'endroit que l'on voulait.

    Un exemple, où l'on voit deux images différentes, en apparence identiques (même rendu dans un logiciel comme Photoshop) mais qui n'ont rien en commun de part la structure de leur palette :


    Si l'on applique la seconde palette sur une image qui a été construite avec la première, on obtient ceci :

    palette2
    Un autre point important à avoir à l'esprit est qu'une seule palette est utilisée pour toutes les images qui composent une animation. Il est donc indispensable, lorsqu'on créée ou modifie des animations de prendre garde que toutes les images de l'animation utilisent rigoureusement la même palette. Quand on jongle avec des logiciels d'édition et des formats de fichier (.bmp, .gif, .png; images en 32 bits, 16 bits ou 256 couleurs) pour travailler une animation, il arrive que l'on s'emmêle les pinceaux en utilisant sans le savoir différentes palettes, ou en perdant la palette lors d'un passage en 16 ou 32 bits.

     

    Travailler un .bam dans un logiciel d'édition d'image comme Photoshop :
    Pour s'assurer du respect des couleur, il faudra exporter une image et sa palette. Lorsqu'on chargera le fichier dans un programme d'édition, on lui appliquera alors la palette :
    1. Dans BamWorkshop II (et surtout pas le 1 !), exporter un frame en .bmp
    -> Frame -> Export -> choisir le format .bmp
    2. Toujours dans BamWorkshop 2, enregistrer la palette (.pal)
    -> Colors -> Edit Palette -> Save

    3. Ouvrir le .bmp dans Photoshop et le convertir en couleurs indexées en utilisant la palette .pal enregistrée (selon les cas, il suffit de Forcer certaines couleurs seulement, par ex. les 2 premières)

    Conversion d'une Animation de PST en fausses couleurs
    Telle qu'elle, une animation de PST en fausse couleurs est inutilisable. Il faut lui appliquer une nouvelle palette pour qu'elle le soit.
    L'essentiel du travail consiste donc à créer la palette de son choix, en respectant l'index des couleurs de l'animation de PST. On utilise ensuite simplement BamWorkshop 2 pour l'appliquer à l'ensemble des images de chaque animation.

    À ce sujet, on peut consulter sur Spellhold Studios le gros travail qu'à fait Erephine dans son mod "Infinity Animations" qui comprend notamment la conversion/création d'animations en fausses couleurs (dernière version : v.3 - fev. 2011) de PST vers BG.

    1. Création de la palette (Photoshop)
    Les différentes parties d'une animation en fausses couleur de PST sont colorées avec des gammes de couleurs très nuancées (32 parfois 48 nuances ou plus), on peut obtenir donc un joli rendu. Le seul inconvénient est que, contrairement à Baldur's Gate dont la palette pour les fausses couleurs est fixe et donc identique pour toutes les animations de ce type, la palette varie de schéma selon les animations.

    En fait, comme on le voit dans les exemples ci-dessus, une partie, les 128 première couleurs, est variable, tout en ayant quand même un schéma d'organisation. Les 128 autres sont fixes. Il faudra donc créer des palettes différentes selon l'animation à convertir (le plus simple est d'abord de consulter sa table de couleur dans BamWorkshop 2 pour voir sa structure).

    Nous allons prendre pour exemple de conversion, l'animation de la paysanne, CA_MID :

    paysanne
    Les couleurs s'organisent ainsi :
    0 -> transparence
    1 -> ombre
    2 à 127 -> habits 3
    128 à 159 -> Chevelure
    160 à 181 -> habits 1
    182 à 213 -> Peau
    214 à 255 -> habits 2

    La nouvelle devra donc s'organiser selon cette structure. Chaque logiciel d'image dispose de ses propres outils pour créer et modifier des palettes. Je prendrai l'exemple de Photoshop, sur lequel je travaille, mais je pense que le démarche doit être semblable avec des logiciels comme Paint, The Gimp ou autre.

    Dans Photoshop, on peut enregistrer/charger des nuancier de couleur, ce qui peut être pratique pour conserver des nuances de couleurs à réutiliser dans différentes palettes.
    On ajoute des couleurs au nuancier à partir du Sélecteur de Couleur (dbl. clic sur une couleur).  Il suffit de se placer sur la couleur de son choix puis de cliquer sur "Ajouter au nuancier".
    Il faut répéter cette opération pour toutes les couleurs que l'on souhaite utiliser, d'où l'intérêt d'enregistrer ensuite son nuancier (fichier .ACO), pour pouvoir le réutiliser par la suite et en changer aisément.

    Un technique plus spontanée et plus simple consiste à créer un dégradé dans une image à part, qui tiendra lieu de nuancier. Elle se résume à une suite de carrés qui ont été numérotés pour plus de facilités lorsqu'on appliquera les couleurs ensuite :

    palette

    En jouant sur la balance de couleur ou sur la teinte/saturation, on modifie très rapidement les nuances. Il ne restera plus qu'à venir y piocher dedans avec la pipette lors de la création de la table des couleurs.

    Une fois que l'on dispose des nuances de couleurs que l'on souhaite, il reste à éditer la table de couleur, et à modifier les couleurs :
    Double clic sur les couleurs à changer, et utiliser celles du nuancier de son choix à la place, via la pipette et le sélecteur de couleur.
    Enregistrer ensuite la Table de couleur ainsi modifiée (fichier .pal)

    2. Application de la nouvelle palette aux fichiers .bam (Bamworkshop 2)
    Ouvrir Bamworkshop, et charger le fichier .bam que l'on souhaite modifier.
    Cliquer sur "Colors", -> Edit Palette (Shift+K) -> Load et charger le fichier .pal qui vient d'être créé.
    Valider l'opération par OK : en principe, la palette s'applique parfaitement à l'animation.

    paysanne modif

    Enregistrer les changements, et faire de même pour tous les autres fichiers .bam de l'animation.




    1 commentaire
  •  dernière édition : 09.05.2014

    L'objet de cet article est d'indiquer la procédure pour convertir des animations de type G1-G26, fréquentes dans Baldur's Gate, vers le format A1-WK propre à Icewind Dale.
    Quand on cherche à ajouter des animations à IWD2, on se rend compte que la plupart des emplacements disponibles le sont pour des animations de type A1-WK (voir l'article "Ajouter des animations à IWD2"). De plus ce format est plus standardisé avec toujours le même nombre de séquences, peu nombreuses, faciles à contrôler et modifier. Il dispose en revanche de moins d'angles de vues d'où une perte de qualité à ce niveau, et des animations aux déplacements plus saccadés lorsqu'elles changent de direction.

    Outils requis :
    Bamworkshop 1
    DLTCEP

    Généralités sur les fichiers .bam

    Un fichier .bam est une animation qui peut regrouper différents mouvements déclinés sous différents points de vue.
    Chaque point de vue de chaque mouvement est représenté par une séquence, qui appelle un certain nombre d'images (ou frames). Les différentes images, qui peuvent être très nombreuses (plusieurs centaines) selon la richesse des mouvements représentés, utilisent toutes une seule et même palette de couleur, limitée à 256, et intégrée dans le fichier .bam. Certain types de fichiers .bam (et notamment certaines animations comme celles en fausses couleurs) ont des palettes pré-définies que le moteur du jeu manipule : si on les modifie par méconnaissance ou par erreur, c'est le why assuré.
    Dans le cas qui nous préoccupe, on ne touchera pas à la palette des couleurs, mais seulement aux séquences et au frames.


    Chaque fichier xxxx.bam fonctionne de pair avec un fichier xxxxE.bam qui traite la symétrie de l'image. À eux deux ces fichiers forment l'ensemble des points de vue d'un même mouvement.


    Fonctionnement des séquences et des frames

    Les séquences fonctionnent comme un index, une liste de lecture, qui appelle une suite de frames, selon leur numéro. Elles ne contiennent donc rien, et aucune image n'est intégrée à elles. Leur suppression n'a auncun effet sur les frames. L'intérêt de ce mode de fonctionnement est de pouvoir appeller la même image plusieurs fois, ou pour plusieurs séquences différentes, sans multiplier par autant de fois le poids de l'animation. On peut donc manipuler les séquences, leur nombre, leur organisation sans crainte d'endommager les images d'un fichier .bam (au pire il ne sera pas lu).
    Les séquences d'une même animation ont toutes le même nombre de frames.
    Un fichier .bam de type A1-WK ne contient que 5 séquences, qui correspondent à 5 angles de vue d'un même mouvement. On symbolise ces angles de vues par des points cardinaux (N, S, NO, etc..)

    Les frames sont les images à proprement parler qui constituent les différents moments des mouvements d'une animation, vus sous différents angles. Leur taille peut varier dans une même animation, mais elle ne peut dépasser 255x255 px.
    Un fichier .bam peut contenir de nombreuses frames (600 est un chiffre fréquent,on peut dépasser le millier...surtout avec les animations mal optimisées !) dont des frames qui ne sont pas jouées, puisqu'on ne voit que celles qui sont appellées par les séquences.
    Dans Bamworkshop, quand on supprime une frame dans la fenêtre "Frame" on ne fait qu'enlever sa référence dans l'index de la séquence. L'image en tant que telle n'est pas effacée. Il faut se rendre dans la fenêtre "Manage frames" pour supprimer ou importer des images.

    Pour les animations de type A1-WK, les 5 séquences d'une attitude donnée, c'est à dire d'un même fichier .bam et de sa symétrie, doivent avoir rigoureusement le même nombre de frames, autrement le moteur du jeu risque de planter au chargement. En revanche, les différentes attitudes, représentées via les fichiers xxxxA1.bam, xxxxCA.bam, xxxxWK.bam etc., peuvent avoir un nombre de frames non identique.
    De même pour les animations de type BG1/BG2 où les différents mouvements sont soit réunis dans un même fichier .bam, soit répartis sur plusieurs fichiers : les séquences qui traitent d'un même mouvement, sous ses différents points de vue, doivent impérativement avoir le même nombre de frames, et ce nombre doit se répercuter dans les fichiers xxxxxE.bam qui gèrent la symétrie.

    Différence de structure des fichiers .bam de type G1-G26 et A1-WK

    Les animations de type G1-G26 sont différentes de celles d'IWD2. Outre les noms et les mouvements auxquels ils sont associés, la plus grosse différence tient surtout à leur structure, par le nombre et l'organisation de leurs séquences.

    Les animations d'IWD ont seulement 5 séquences correspondant à 5 angles de vue (S,SO,O,NO,N) par fichier .bam. Chaque fichier .bam est indépendant et illustre un mouvement (marche, chute ,attaque...)

    Les animations de type G1-G26 disposent de plus d'angles de vue (9); mais chaque fichier fonctionne comme une partie d'un ensemble recomposé par le moteur du jeu, dont il garde la structure globale. Dans chaque fichier est donc prévue la place des différents mouvements des autres fichiers, 6 pour les mouvements G1-G15, 7 pour les mouvements G2-G26. On se retrouve avec des fichiers ayant 9x6=54 et 9x7=63 séquences, alors que seules 9 séquences sont "fonctionnelles", toutes les autres séquences sont laissées "vides" :

    Séquences G1 G11 G12 G13 G14 G15
    [1 à 9] vide Marche vide vide vide vide
    [10 - 18] debout vide vide vide vide vide
    [19 - 27] vide vide passif vide vide vide
    [28 - 36] vide vide vide blessé blessé  = G13 vide
    [37 - 45] vide vide vide vide blessé & tombe vide
    [46 - 54] vide vide vide vide à terre = G15 à terre

     

     

     

     

     

     

     

     

     

     

    Séquences
    G2 G21 G22 G23 G24 G25 G26
    [1 à 9] ATT.1 vide vide vide vide vide vide
    [10 - 18] vide ATT.2 vide vide vide vide vide
    [19 - 27] vide vide ATT.3 vide vide vide vide
    [28 - 36] vide vide vide ATT.4 vide vide vide
    [37 - 45] vide vide vide vide ATT.5 vide vide
    [46 - 54] vide vide vide vide vide Sort vide
    [56 - 63] vide vide vide vide vide vide Sort

      

     N.B. par "vide", j'entends une séquence qui ne contient aucune attitude représentée par une suite de frames et qui n'est pas affichée dans le jeu; par opposition aux séquences où une attitude précise est représentée. Mais il est important que chaque séquence, même "vide" contienne au moins une frame (n'importe laquelle puisqu'elle ne sera pas affichée), faute de quoi le jeu peut planter.

    Sur cette structure générale se greffent un certain nombre de cas particuliers, gérés par le moteur du jeu. Par exemple les séquences d'animation G1 -debout peuvent se trouver dans les séquences [19-27], dans ce cas, les séquences d'animation G12- passif se retouveront dans les séquences [10-18].
    Lorsque les mêmes séquences sont utilisées par deux fichiers .bam ou plus, ces séquences sont identiques. On le retrouve souvent par exemple dans les animations de combat, G2-G26, où le même mouvement d'attaque se retrouve dans les fichiers G2, G21, G22, qui sont alors identiques.

    Cette rapide analyse de la structure des fichiers G1-G26 montre qu'il est nécessaire de modifier complètement ces fichiers pour en faire des animations de type A1-WK.

    Différences de noms et de mouvement associé :

    Baldur's Gate
    Animations G1-G26
    Icewind Dale 1 et 2
    Animations A1-WK
    xxxxG1.bam [Debout, passif]
    xxxxG11.bam [marchant]
    xxxxG12.bam [debout, passif 2]
    xxxxG13.bam [blessé]
    xxxxG14.bam [chute et mort]
    xxxxG15.bam [allongé]
    xxxxG2.bam [attaque1]
    xxxxG21.bam [attaque2]
    xxxxG22.bam [attaque3]
    xxxxG23.bam [attaque4]
    xxxxG24.bam [attaque5]
    xxxxG25.bam [Invocation sort]
    xxxxG26.bam [lancement sort]
    xxxA1.bam: [attaque1] = G2
    xxxxA2.bam: [attaque2] = G21
    xxxxA3.bam: [attaque3] = G22
    xxxxA4.bam: [attaque4] = G24
    xxxxCA.bam: [lancement sort] = G26
    xxxxDE.bam: [mourant, tombant] = G14
    xxxxGH.bam: [blessé] = G13
    xxxxGU.bam: [se relevant] absent, à créer !
    xxxxSC.bam: [sur ses gardes] = absent, à créer !
    xxxxSD.bam: [Debout, passif] = G1
    xxxxSL.bam: [dormant] = G15
    xxxxSP.bam: [Invocation] = G25
    xxxxTW.bam: [mort] = G15
    xxxxWK.bam: [marchant] = G11

    À cela s'ajoute pour chaque fichier, sa symétrie :
    xxxxA1e.bam, xxxxA2e,.. xxxxWKe.bam

    Mais revenons à nos moutons...

    0. Préparation des fichiers, renommage

    Le premier travail consiste à renommer les fichier xxxxG1 à xxxxG26
    On aura donc :

    xxxxG1.bam    -> xxxxSD.bam
    xxxxG11    -> xxxxWK
    xxxxG12    -> xxxxSC
    xxxxG13    -> xxxxGH
    xxxxG14    -> xxxxDE et xxxxGU
    xxxxG15    -> xxxxSL et xxxxTW
    xxxxG2      -> xxxxA1 - A4
    xxxxG21    -> xxxxA1 - A4
    xxxxG22    -> xxxxA1 - A4
    xxxxG23    -> xxxxA1 - A4
    xxxxG24    -> xxxxA1 - A4
    xxxxG25    -> xxxxSP
    xxxxG26    -> xxxxCA

    Toutefois, on aura rarement l'occasion d'avoir cet éventail complet, car de nombreuses animations de créatures sont reprises dans plusieurs références, ou sont tout simplement inexistantes. Ce qui ne pose pas de problème dans le jeu : il n'est pas nécessaire que toutes les animations d'une créature existent, et l'on n'encourt pas de risque de plantage si le jeu demande une animation qui est absente pour un type d'action donné. L'action ne sera pas affichée, tout simplement. En consultant les animations des différentes créatures, on constate :

    Pour l'attaque, la grande majorité des animations se limitent à un ou deux mouvements différents, A1 A2, ou A1 A4. Quelques unes seulement en ont 3, et aucune n'en a 4. Mais ça reste possible si on le souhaite. Inversement, de nombreuses animations de BG reprennent le même mouvement d'attaque pour G2, G21,G22,G23,G24.

    Si l'on veut entrer dans les détails, ont peut créer des animations spécifiques à un type d'arme. Il faudra alors décliner une animation de l'arme seule, correctement synchronisée avec le corps, pour toutes les attitudes. L'animation a une syntaxe typique, basée sur le type d'arme : xxxxAA1, xxxxAA2 pour une hache (Axe); xxxxSA1,xxxxSWK, pour une épée (Sword), ce qui allonge considérablement le travail et n'est pris en charge par le jeu que pour de très rares animations !


    xxxxSC n'est souvent qu'une copie de xxxxSD pour les monstres ou les animaux.
    xxxxCA et xxxxSP ne sont utiles que pour des créatures faisant appel à la magie
    xxxxTW se résume à une frame, que l'on récupère dans xxxxDE
    xxxxGU peut se créer rapidement par inversion de l'animation de chute récupèrée dans xxxxDE

    Ce qui ramène souvent à 6 le nombre de mouvements indispensables.

    Dans le même ordre d'idée, on constate aussi que certaines animations de BG (notamment les animaux ou les monstres "basiques") se résument à peu de mouvements différents et comportent de nombreuses copies.
    Par exemple, l'Élan (AMOO) :

    amooG1 = comportement passif
    amooG11 = animal en marche
    amooG12 = amooG1
    amooG13 = inclus dans amooG14
    amooG14 = animal blessé, tombant, allongé et mort
    amooG15 = inclus dans amooG14

    amooG2 = fragment de G1
    amooG21 = amooG2
    amooG22 = amooG2
    amooG23 = amooG2
    amooG24 = amooG2
    amooG25 = amooG2
    amooG26 = amooG2

    Au final, on n'a que 3 fichiers .bam sur 12 de nécessaires pour créer notre animation !
    Et l'on pourra s'épargner de créer A2, A3, A4, SC, CA, SP, TW ce qui ramène notre animation à 7 fichiers. En revanche certains mouvements doivent être bien étudiés car il reposent sur des séries de réptition de frames, complexes à reproduire, et peuvent prendre du temps.

    Il est donc très utile de prendre d'abord le temps de visualiser les différents fichiers .bam d'une animation (dans Near Infinity par exemple), avant de se lancer à corps perdu dans son édition ou au contraire de se décourager face au travail à faire. C'est parfois plus simple qu'il n'y paraît.

     

    1. Modification des bam existants :
    Le plus gros travail consiste à éditer chaque fichier .bam, et supprimer les séquences en trop.

    Pour supprimer les séquences vides, le mieux est d'utiliser BamWorkshop 1

    (DLTCEP n'est pas très fiable à ce niveau, et Bamworkshop 2 est à proscrire : le programme essaie de corriger automatiquement l'index quand on supprime des frames, mais hélas il s'emmêle vite les pinceaux, et l'affichage des frames part complètement en live : utilisation à proscrire si on ne veut pas perdre du temps ! L'affichage des séquences/frames n'est pas non plus bien actualisé lorsqu'on fait des modifications, ce qui peut encore amener des erreurs. Bref, si Bamworkshop 2 est excellent pour la gestion/modification des palettes, il n'est pas du tout approprié pour ce type de boulot)


    - Lancer Bamworshop premier du nom et ouvrir le fichier .bam à modifier
    - Dans la fenêtre "Séquences", cliquer sur chaque séquence, et supprimer toutes les séquences vides, les orientations en trop, et les séquences redondantes. Bref il ne doit rester que 5 séquences [0 - 4] correspondant aux orientations :

    0 : Sud
    1 : Sud-Ouest
    2 : Ouest
    3 : Nord-Ouest
    4 : Nord

    Pour supprimer une séquence, le plus simple est de faire un clic droit sur la séquence concernée, puis de choisir "Delete sequence" (et répondre par l'affirmative à la question "Are you sure..." oui, on est sure)
    Cette phase de travail étant particulièrement casse-bonbons, il vaut mieux sauvegarder une fois qu'elle est terminée !

    À ce stade, on peut très bien s'arrêter là et passer à l'étape 3. Le fichier .bam que l'on aura conservera toutes les vieilles frames de l'ancienne version, et ne sera pas vraiment optimisé ni facile à retravailler, mais il fonctionnera parfaitement. D'ailleurs, dans certains cas où les séquences se comportent à la manière d'une partition musicale, avec de nombreuses répétitions, et crescendo/decrescendo de frames, il vaut mieux en rester là.

    L'étape suivante va supprimer définitivement de nombreux frames, pour ne garder que ceux qui sont utilisés pour la nouvelle animation. Cela permet d'avoir une animation plus légère, et clairement organisée. En revanche, il va falloir recréer entièrement les 5 séquences; ce qui peut prendre très peu (à peine 1 ou 2 minutes) ou beaucoup de temps (1 heure)

    2. Optimisation du fichier .bam
    Le fait de supprimer des séquences n'ayant aucune incidence sur les frames, on se retrouve avec un fichier bam comprenant de nombreuses frames dont moins d'un tiers sont réellement utilisées. Si l'on veut ne garder que les frames utiles au nouveau format, il va falloir supprimer les autres. Bamwokshop ayant ses limites, le fait de supprimer des frames va nous obliger à recréer entièrement les 5 séquences, ce qui peut prendre un temps très variable.
    Avant de se lancer dans cette procédure, il vaut mieux consulter l'organistion des séquences qui représentent un mouvement.

    •  Si le mouvement est traduit par une simple suite de frames (1,2,3,4,5..), cela ne prendra pas plus que 2 trois minutes.
    •  Si l'on rencontre une suite de répétitions (par ex. 1,1,2,2,3,3,4,4,5,5..) ça va déjà être plus long.
    •  Si l'on est face à un mouvement complexe, représenté par une longue suite d'images, ressemblant à une parition musicale (par ex. 1,1,2,2,3,3,3,3,2,2,1,1,2,2,3,3,3,3,4,4,5,5,5,4,4,3,3,2,2,2,2,3,3,4,5,6,7,7,7...) ça peut vraiment, vraiment, prendre du temps sous Bamworkshop 1 (en revanche cela peut se faire très vite sous DLTCEP qui permet d'ajouter des frames de façon ultra-rapide)

    Ces précautions prises...

    Suppression de frames
    Dans un premier temps, il faut repérer les n° des frames qui sont utilisés par les séquences qui restent, en cliquant sur chaque séquence, puis en cliquant sur Frame, pour voir les références des frames qui lui sont associées (il suffit de les noter sur un bout de papier)


    Par  ex : bamworskhop - manage0: 0-16; 1: 156-172; 2: 312-328; 3: 468-484; 4 : 624-640

    On va alors utiliser un outil très pratique dans BamWorkshop, la gestion de Frames, que l'on appelle depuis
    -> Edit > Manage frames
    Ou plus simplement en cliquant sur "Manage"

    Toutes les frames sont alors affichées.
    - Sélectionner celles qui sont inutiles, puis cliquer sur "Delete" (la combinaison Shift+clic fonctionne bien, mais pour des lignes entières). Pour y voir clair parmis ces séquences, rien n'empêche de garder une ou plusieurs frames vides entre les animations de deux séquences différentes (pour plus de lisibilité, je termine toujours une ligne d'anim avec des frame vides)

    Bamworkshop - Manage frames


    Maintenant que l'on a gardé seulement les frames qui nous intéressent, les séquences d'origine ne nous servent plus à rien, et par surcroit elles poseraient des problèmes puisque leur index est devenu erroné. Par ex. les frames n°164-173 sont devenues n°10-19. Or la séquence 1 continue à "appeler" les frames 164-173. Comme elles ne correspondent à rien, l'animation n'afficherait rien.
    C'est ce problème qu'à essayé de résoudre Bamworkshop 2...sans y parvenir !!! Le programme tente de reconstruire l'index lorsqu'on supprimer des images ou des séquences, mais il s'emmêle vite les pinceaux dans les références et l'animation devient inutilisable.

    Création de séquences et ajout de frames
    - Supprimer toutes les séquences 0 à 4 et en créer 5 nouvelles (clic droit dans la fenêtre Sequence -> Add sequence)
    - Associer les frames à chaque séquence (clic droit dans la fenêtre Frame -> Add Frame et sélectionner les frame à associer à une séquence donnée). Les différentes séquences doivent impérativement avoir le même nombre de frames (autrement le jeu a de forte chances de planter au lancement)

    bamworkshop  - ajouter des frames

    Cette opération faite, le fichier ne contient finalement que les 5 nouvelles séquences, et les frames qui sont appelées sont correctement ordonnées : on peut enregistrer son fichier .bam, et voir s'il est bien lu par Near Infinity ou DLTCEP (le plus simple est de le copier dans le dossier override)

    Il ne reste plus qu'à faire pareil pour les autres fichiers .bam !

    3. Création des bam ___e
    (cette phase de travail est identique à celle décrite dans l'article sur la conversion des animations de PST)

    La particularité des anims de type A1-WK par rapport aux animations G1-G26, est de gérer la symétrie (elle se résume à trois points de vues NE,E,SE) dans un fichier à part, de même nom, auquel est ajouté le suffixe "e" : xxxxA1e, xxxxA2e,... xxxxWKe. Ce fichier contient 8 séquences : 5 vides, et les 3 qui viennent d'être indiquées.
    On pourrait les créer manuellement, mais il se trouve que DLTCEP offre la possibilité de faire automatiquement cette procédure.

    • Ouvrir un fichier .bam sous DLTCEP ("Load external BAM")
    • Dans l'onglet "Tools", choisir "Create mirror frames", et DLTCEP crée automatiquement le bon nombre de frames (8) avec les 5 premières vides et les trois dernières en miroir.
    • Enregistrer (Save Bam As) (...DLTCEP nous prépare le nom de fichier en ajoutant le suffixe E au fichier que l'on vient d'ouvrir, du travail de pro !)

    Après avoir répété l'opération pour chacun des 13 fichiers, on dispose maintenant des 26 fichiers .bam propres aux animations de type A1-WK.

    Conversion des animations de Baldur's Gate pour IWD2




    votre commentaire
  •  

    Merci à Chronis pour ses infos
    Merci à Avenger pour son travail dans DLTCEP

    dernière modification : 26 mai 2015

    Planescape Torment contient un bon nombre d'animations qui sont vraiment bien foutues.
    À tel point qu'elles possèdent certains mouvements (par exemple les gestes que font les persos en parlant) que l'on ne retrouve pas dans Baldur's Gate et Icewind Dale. S'il n'est pas possible de les réutiliser telles quelles, leur structure très proche des anims d'IWD fait qu'il suffit de quelques manips, grandement facilitées par DLTCEP pour les convertir dans un format de type A1-WK, reconnu par Baldur's Gate 2 et bien entendu Icewind Dale
    Par format de type A1-WK, je veux dire des animations composées de fichiers .bam, où chaque fichier représente un mouvement particulier et suit un schéma nominatif typique :
    xxxxA1 (pour la première) jusqu'à xxxxWK (pour la dernière). Ces animations se retrouvent dans Icewind Dale I et II, mais on peut tout à fait les utiliser dans Baldur's Gate 2.

    Pour ceux qui voudraient s'éviter la procédure, la plupart des animations ont été converties par Cuv - bravo pour son travail ! - , et on peut les récupérer sur le site de Spellhold Studios.

    On aura besoin de 4 programmes pour travailler.
    La conversion d'une anim prend en tout environ 15 mn. Pas de quoi se décourager donc !

    Programmes requis :

    1. Un programme pour extraire les fichiers BAM originaux de PST ( Infinity Explorer le fait très bien, WinBiff, si l'on sait quelle archive .bif utiliser, ça peut aller très vite , NearInfinity ...)
    2. DLTCEP (qui dispose de fonctions très intéressantes dans le cas qui nous préoccupe)
    3. BamResizer, pour redimensionner les fichiers .bam (les anims de PST sont d'une échelle légèrement supérieure)
    4. BAMWorkshop I pour une étape de travail optionnelle, que DLTCEP ne gère pas.

    Il vaut mieux éviter d'utiliser BamWorkshop 2 lorsqu'on modifie les séquences d'une animation, car dans ce domaine il est vraiment source de bugs...

    Problème des animations en fausses couleurs :
    Comme dans BG, certains personnages de PST n'ont pas leurs couleurs définitives, mais des zones qui correspondent à des types de couleur (peau, cheveux, habits,etc.), qui sont colorées au cours du jeu; ce qui permet des variations d'habits, de peau, de chevelure. Les anims que l'on récupère "brutes" sont donc en fausses couleurs, et inutilisables telles quelles, car la structure de leur palette ne correspond pas du tout à celle des anims en fausses couleurs de Baldur's Gate.
    La solution la plus simple est de leur attribuer une nouvelle palette, qui respecte l'organisation des couleurs et change certaines de leurs valeurs (cheveux, peau, habits,etc.) de façon à obtenir des couleurs réalistes (voir cet article qui indique comment procéder)

    1ère étape (récupération des fichiers d'animations / renommage)
    1. Tout d'abord, récupérer les anims de PST. Elles seront plus nombreuses que nécessaire (ne pas hésiter parfois à mettre des anims de mouvements passifs dans les attaques, A3 et A4, ça peut apporter de la variété à l'anim, et c'est con de les balancer sinon).

    • Sous Infinity Explorer, un clic droit sur un fichier .bam permet de choisir l'option "Save" (et non pas export !) On indique un répertoire et l'on répète cette opération pour toutes les anims.
    • Sous NearInfinity, un clic droit sur un fichier .bam permet de choisir l'option "Export". L'ordre de classement de NearInfinity n'est, dans ce cas, pas très pratique, car il ne permet pas de lister à la suite les fichiers .bam d'une même anim. On lui préfèra donc Infinity Explorer (ou Winbiff)


    2. Comme elles ne suivent pas du tout le même schéma nominatif, il va d'abord falloir les renommer selon le schéma de type A-WK, en leur donnant un nom approprié à leur mouvement (nous ne disposons alors pas des fichiers ____e.bam, nous verrons comment les créer à l'étape suivante).
    Se rappeler que la longueur du nom complet ne doit pas faire plus que 8 caractères. Les suffixes en occupant entre 2 et 4, il ne reste que 4 caractères pour attribuer un nom.

    Schéma nominatif des anims de type IWD, et correspondance pour PST :
    xxxxA1  [Attaquant 1] = AT1
    xxxxA2  [Attaquant 2] = AT2
    certaines créature ont des attaques en plus :
    xxxxA3
    xxxxA4
    xxxxCA  ["CAst" -> lançant un sort] = SP2 (souvent absent)
    xxxxDE  ["DEad" -> Mourant, mais aussi tombant inconscient] = DFB
    xxxxGH  ["Get Hurt" -> Étant touché, blessé] = HIT
    xxxxGU  ["Get Up" -> Se relevant] = GUP
    xxxxSC  [Debout, sur ses gardes] = CF1
    xxxxSD  [Debout, passif] = STD ou SF1
    xxxxSL  ["SLeep" -> Dormant] = G15
    xxxxSP  ["SPell" ->invoquant un sort] = SP1 (absent chez les créatures non-magiciennes)
    xxxxTW [Mort, à terre - images fixes] = (G14)
    xxxxWK ["WalK" -> Marchant] = WLK

    Notez la différence entre xxxxSC (attitude d'un personnage offensif, prêt à attaquer) et xxxxSD (attitude passive, "paisible"), ainsi qu'entre xxxxSP (invocation d'un sort) xxxxCA (lancement d'un sort).

    Schéma nominatif des anims de type PST  et correspondance pour IWD :
     xAT1xxxx = A1 = Attaque 1
    xAT2xxxx = A2 = Attaque 2
    xC2Sxxxx Stoppant le combat, baissant sa garde  = pas d'équivalent
    xCF1xxxx Mouvement d'arme 1 = pas d'équivalent (peut être mis en xxxxA3)
    xCF2xxxx Mouvement d'arme 2 = pas d'équivalent (peut être mis en xxxxA4)
    xDFBxxxx = DE = Mourant
    xGUPxxxx = GU = Se relevant
    xHITxxxx = GH = Touché (blessé)
    xRUNxxxx Courant = pas d'équivalent
    xS2Cxxxx Se mettant en garde = pas d'équivalent
    xSF1xxxx = SD = Mouvement passif (tournant la tête, se grattant une oreille ou autre, etc..)
    xSP1xxxx = SP = Jettant un sort 1 (ou SPeaking, gestes accompagnant des paroles)
    xSP2xxxx = CA = Jettant un sort 2
    xSTCxxxx = SC = En garde (prêt à combattre)
    xSTDxxxx = SD (Neutre)
    xTK1xxxx Parlant 1 (hochement de tête, mouvement des bras) = pas d'équivalent
    xTK2xxxx Parlant 2 = pas d'équivalent
    xTK3xxxx Parlant 3 = pas d'équivalent
    xWLKxxxx = WK = Marchant

    En gris italique : les animations que l'on ne peut guère réutiliser car elles n'ont pas d'équivalent..
    Les différentes animations ne possèdent pas tous les mouvements listés ci-dessus et certaines en possèdent de spécifiques que je n'ai pas indiqué ici.

    2nde étape (création d'un fichier ____e.BAM)
    Ensuite, on va devoir créer des orientations manquantes. Dans IWD/BG2, chaque action animée est répartie en 2 fichiers :
    - le premier contient 5 angles d'animation (S, SO,O,NO,N)
    - le second, ayant le suffixe _____e, ne contient que 3 angles (NE,E,SE), qui ne sont que la symétrie des angles Nord-Ouest, Ouest et Sud-Ouest du premier fichier.

    Les animations de PST n'ayant pas les fichiers BAM de second type, on va devoir créer un fichier ____e.BAM pour chaque animation, en se basant sur les fichiers récupérés dans PST et en y appliquant un effet de symétrie (miroir).

    Ce serait assez laborieux à faire manuellement, heureusement, DLTCEP permet de faire tout cela automatiquement ! Génial !!! (et un grand merci à Avenger)
    Seules quelques anims de format particulier (nombreuses frames ou autres) passent à la trappe (nous verrons les cas particuliers ensuite - pour info, il suffit de les modifier en amont en les ramenant à un nombre de points de vue standard pour éviter ce problème)

    • Ouvrir le fichier .BAM sous DLTCEP ("Load external BAM")
    • Dans l'onglet "Tools", choisir "Create mirror frames", et DLTCEP crée automatiquement le bon nombre de frames (8) avec les 5 premières vides et les trois dernières en miroir).
    • Il ne reste plus qu'à enregistrer sous (Save Bam As) (...et DLTCEP nous prépare le nom de fichier en ajoutant le suffixe E au fichier que l'on vient d'ouvrir, du travail de pro !)


    On procèdera ainsi pour toutes les anims, excepté la dernière xxxxWK qui pose parfois un petit soucis :
    Si DLTCEP ne parvient pas à appliquer son effet miroir, un message d'erreur apparait :
     "This function works only on special animation bams. See the manual !"
    -> Cela apparaît avec les fichiers dont le nom n'est pas reconnu par DLTCEP. Les noms de fichier doivent faire 7 lettres, pour qu'avec les E qui sera ajouté ils fassent 8 caractères maximum.
    -> Si les fichiers sont correctement nommés, cette erreur se produit généralement avec les anims de types WK, et globalement avec celles ayant plus de  5 séquences (0-4). Les anims de PST où les créatures marchent, sont représentées sur plus d'angles (un luxe inexistant sous BG2/IWD !) et ont 8 séquences (0-9) : DLTCEP ne pige pas ce qui se passe et affiche cette erreur. DLTCEP se contente alors de créer une copie du fichier.
    Là encore, le programme a tout prévu, sans devoir passer sous BAMWorkshop pour supprimer des anims, il dispose d'un outil tout prêt, pour réduire les anims à 5 :
    - dans l'onglet "Tools", choisir "Reduce orientation" et en principe, ça marche nickel !
    Il reste plus qu'à appliquer l'effet miroir, qui ce coup-ci fonctionne parfaitement, et bien entendu enregistrer l'anim.

    2b - création de l'anim TW/TWE
    Les anims de BG2/IWD disposent de séquences qui représentent la créature morte/allongée.  Il ne s'agit pas d'une animation, mais simplement de deux images fixes déclinées sous les angles de vue classique (S, SO, O, NO, etc..). Or on ne trouve que très rarement cette anim dans PST, et sous des noms différents (xCOLxxx ou DEADxxxx).
    Le plus simple est alors de faire une copie de l'animation de la créature mourant, et de ne garder que les frames finales où elle est étendue à terre sous les différents angles.

    Pour cette procédure, DLTCEP nous aide bien là encore :

    • faire une copie de l'animation de la créature mourant (xxxxDE) et la renommer correctement : xxxxTW
    • l'ouvrir dans DLTCEP
    • Dans l'onglet "Tools", choisir l'option "Drop all but last" (supprimer toutes les frames sauf les 2 dernières)
    • Enregistrer l'anim, puis, comme pour les cas précédents, dans l'onglet "Tools", choisir l'option "Create mirror frames" afin d'avoir son pendant _____e.
    • Enregistrer sous (Save Bam As) la nouvelle anim xxxxTWe, et le tour est joué.


    3ème étape (redimensionner l'animation)
    L'échelle des personnages est légèrement plus grande sous PST. Si l'on garde des anims de même taille pour des créature humanoïdes, on obtient systématiquement des "ogres" sous BG/IWD ! Il faut donc les redimensionner !
    On utilisera un programme qui fonctionne en mode commande : Bam resizer
    Son intérêt majeur, est de pouvoir traiter des fichiers par lot. Il suffira de taper une commande pour que toutes les frames de toutes les anims soient redimensionnées: un sacré gain de temps !
    Pour le faire fonctionner, il faut lancer, sous Windows, la console de commande (Exécuter -> cmd) et se positionner dans le dossier où se trouve Bam resizer.

    pour rappel :
    pour changer de disque dur, on écrit simplement son nom de volume, par ex. d:
    pour remonter dans un répertoire parent, utiliser la commande cd..
    pour se placer dans un répertoire donné, utiliser la commande cd /[nom du répertoire] par exemple cd /utilitaires/bamresize
    ... sinon la commande help offre la liste des commandes disponibles et le commutateur  /? après une commande, permet d'avoir l'aide qui est associée à cette commande.

    Attention au chemin dans lequel se trouve "bamresize.exe" (dossier de -8 caractères, pas d'espaces, etc.). Si l'on a un chemin d'accès du type :
    G:\Sauvegardes permanentes\Programmes\Jeux\Utilitaires d'Édition de Jeux\ = non fonctionnement assuré
    Le plus simple est de copier le dossier à la racine d'un disque dur pour travailler.

    Par défaut le programme redimensionne à 75 %, mais on peut changer ce paramètre.

    exemples de syntaxes :
    bamresize MN03A1.bam
     -> Redimensionne toutes les frames du fichier MNO3A1.bam à 75% et crée un fichier MNO3A1R.bam

    bamresize -p 90 c:\extractedBams\*.bam
     -> Redimensionnes toutes les frames de tous les fichiers .bam présents dans le dossier \extractedbams à 90%

    75% est un bon réglage et fonctionne correctement pour la plupart des anims, mais on peut l'ajuster au pourcentage que l'on souhaite (pour des anims d'humains, la réduction est trop grande : prendre une valeur comme 90%)

    4ème étape (optionnelle)
    On contrôlera l'animation dans le jeu après l'avoir redimensionnée afin de voir s'il est nécessaire de passer par cette étape.
    Le redimensionnment n'est parfois pas parfait. Il arrive que durant le déroulement du processus, une frame soit déplacée d'un pixel. Ce n'est pas notable lorsque la créature se déplace, mais on le remarque sur des scène fixes, donnant l'impression que la créature se soulève. Il faudra retravailler le fichier .bam sous BamWorkshop, en remplaçant les frames décalées par des frames proches. L'animation perd un peu en "richesse" de mouvements, mais c'est la solution la plus simple.

    Exemple d'un fichier ayant 12 frames par direction, et dont 3 d'entre elles sont décalées :

    Original..........Corrigé
    1...................1
    2...................2
    3...................3
    4...................4
    5...................5
    6...................6
    7 décalé....... 6 (copie)
    8 décalé........11 (copie)
    9 décalé........11
    10 décalé......12
    11
    12

    Quelques exemples (archives .rar contenant des fichiers .bam) :

    moine Moine  Ange déchu ratRat

     


    2 commentaires
  • modifié le 14 septembre 2016

    Icewind Dale II, avec 307 animations, contient beaucoup plus de créatures qu'Icewind Dale (225). Comme lui, il reprend bon nombre d'animations des Baldur's Gate I et II (qui n'en avait que 126) :toutes celles des PJ, des civils, certains animaux; mais aussi de Planescape Torment (qui sont d'ailleurs vraiment excellentes !).

    Pour assurer une continuité, et éviter sans doute de s'emmêler les pinceaux, les développeurs ont conservé les mêmes références aux mêmes animations au travers des différents jeux, dans les fichiers .IDS et les fichiers .BAM.
    Par exemple l'Ours noir est à l'adresse 0x7200 BEAR_BLACK et les fichiers .bam qui lui sont associés s'appelent MBERG1, MBERG1E, MBERG2, MBERG2E. Comme IWD2 est sorti après BG2, toutes les références des anims de BG2 existaient déjà, et divers fichiers d'IWD2 indiquent que les développeurs avaient intégré leur références dans le jeu, dans l'optique peut-être de les utiliser, ou simplement pour éviter d'utiliser des références existant déjà. Pourtant, si l'on parcourt les fichiers .bam, on se rend vite compte que toutes n'ont pas été utilisées. Impossible d'avoir les anims d'Elminster ou de Volo, des animaux sympa comme les élans, les daims ou les lapins, etc.
    Comme ces références sont "connues" du moteur du jeu, il peut suffire de copier les fichiers .bam correspondant aux anims que l'on veut rajouter dans le dossier override pour qu'elles puissent être utilisées par le jeu. Encore faut-il les connaître, et pouvoir les manipuler aisément (et qu'elles fonctionnent, car toutes ne semblent pas opérationnelles). C'est pourquoi il est préférable d'avoir recours à deux fichiers particulièrement utiles, ANIMATE.SRC et ANIMATE.IDS, et de modifier ce second fichier afin de pouvoir les utiliser dans des fichiers .CRE ou des scripts.

    ANIMATE.ids & ANIMATE.src

    Deux fichiers tiennent lieu d'index, et permettent de connaître les références et d'appeler facilement les animations des créatures du jeu, via un alias (c.a.d un nom associé à un chiffre, et plus facile à retenir qu'elle) : ANIMATE.ids et ANIMATE.src.
    Ce fonctionnement est un peu différent de BG2 qui utilise deux fichiers .ids pour indexer les animations, et offre la possibilité d'ajouter de nouvelles animations au jeu : ANIMATE.ids et ANISND.ids.

    • Le fichier animate.ids indique l'adresse des animations qui existent dans le jeu, et leur associe un nom qui permet de les appeler facilement dans des fichiers .CRE ou des scripts.
    • Le fichier animate.src est une simple liste de toutes celles connues par le moteur du jeu. Il nous renseigne sur les références des fichiers .bam qui sont invariablement associées à certaines adresses.
      Malheureusement, toutes les références listées ne sont pas utilisables. Un certain nombre ne peuvent être appelées, et font planter le jeu si l'on cherche à les utiliser (voir en fin de page)

    Quand on se penche sur ce fichier ANIMATE.SRC (consultation sous NearInfinity, puis exportation pour une utilisation plus souple - le fichier s'ouvre avec un simple éditeur de texte), on constate qu'il liste la quasi totalité des anims de BG2 (seulement une quinzaine ne sont pas listés comme les variations de couleur des Dragons) ainsi que la totalité de celles d'IWD et les nouvelles d'IWD2 lui-même.
    Parmis les références et les fichiers .BAM auxquels elle renvoient, on se rend compte qu'un certain nombre n'ont jamais été utilisées par le jeu (fichiers .bam inexistants, aucune référence dans des fichiers .CRE, des dialogues ou des scripts). Au total, une quarantaine d'animation dont une vingtaine de BG2 et une vingtaine d'IWD1.

    Chaque animation est listée selon une syntaxe qui reprend celle des jeux dont elle provient :

    // CGAMEANIMATIONTYPE_BEAR_BLACK
    0x7200=MBERG1
        pour les anims issues des Baldur's Gate

    // Barbarian 3
    0xF798=MBA3WK
        pour les anims issues d'Icewind Dale et créées pour IWD1/IWD2

    À la différence de BG2 où l'on doit créer des entrées dans le fichier anisnd.ids pour pouvoir ensuite en ajouter dans animate.ids, le fichier animate.src nous prémâche donc le travail ! Les références étant connues, il suffit :

    1. d'ajouter celles que l'on souhaite au fichier ANIMATE.ids
    2. de récupérer les fichiers .bam qui leur sont associés tels quels et de les copier dans le dossier OVERRIDE d'Icewind Dale 2

    Ajout des références au fichier ANIMATE.ids

    Le fichier ANIMATE.ids, comme la plupart des fichiers .ids, est un outil de modding dans le sens où le moteur du jeu n'a pas besoin de lui pour tourner (on peut marquer n'importe quoi dans ce fichier sans que ça ait la moindre conséquence sur les fichiers existants et le fonctionnement du jeu).
    En revanche lors de la création ou la modification de fichiers existants, les fichiers .ids servent à associer une adresse (par exemple 0x6403) à un nom (SKELETON), plus facile à retenir. Si dans un fichier .CRE on souhaite appeler l'animation du Squelette, on pourra le faire en indiquant sa référence en hexadécimal ou tout simplement son nom. Le moteur du jeu trouvera la première via le second, grâce à la "table de concordance" que représente le fichier ANIMATE.ids.

    Supposons que l'on veuille ajouter Drizzt et Volo. On va d'abord rechercher leurs références dans le fichier animate.src, et l'on obtient :

    // CGAMEANIMATIONTYPE_VOLO
    0x2100=UVOLG1

    // CGAMEANIMATIONTYPE_DRIZZT
    0x6400=UDRZ1G1

    • La première ligne indique, après l'expression CGAMEANIMATIONTYPE_,  le nom sous lequel l'animation est appelée par convention. Dans la mesure du possible, et dans l'optique du modding où d'autres personne peuvent être amenées à travailler avec les mêmes fichiers, autant respecter cette convention.

    • La seconde ligne contient l'adresse à laquelle l'animation qui lui correspond est connue dans le jeu (le moteur du jeu ne connait que celle-là : à une adresse donnée correspond une référence d'animation, et aucune des deux ne peut être changée)

    Ouvrons maintenant le fichier animate.ids
    Si l'on est familier avec celui de BG2, on remarque que le classement des références varie entre BG2 et IWD : il est fait selon l'adresse pour les anims de BG2 puis selon le nom pour IWD2. Ce classement est pratique car il permet de trouver les références d'une animation de manière assez rapide. Du point de vue du fontionnement du jeu, peu importe où l'on écrit une référence, seule la syntaxe [adresse] [nom] et son exactitude comptent.

    Pour garder la logique du fichier, et éviter de perdre son temps à chercher une référence par la suite, autant ajouter nos deux références à la place qu'elles ont dans le fichier .ids de BG2, en recopiant les références d'adresse et de nom que l'on a notées précédemment :

    0x2100 VOLO
    0x4000 STATIC_NOBLE_MAN_CHAIR
    0x4002 STATIC_NOBLE_MAN_MATTE
    0x4010 STATIC_NOBLE_WOMAN_CHAIR
    ...
    0x6312 THIEF_FEMALE_DWARF
    0x6313 THIEF_FEMALE_HALFLING
    0x6400 DRIZZT
    0x6402 MONK
    0x6403 SKELETON

    Modification optionnelle : Un fichier .ids commence par indiquer le nombre de références qu'il contient (307 dans le fichier original). Comme nous venons d'en ajouter deux, il convient de modifier ce chiffre (ainsi on saura du premier coup d'oeil dans quelle mesure ce fichier a été modifié). Nous aurons donc désormais :

    309
    0x2100 VOLO
    0x4000 STATIC_NOBLE_MAN_CHAIR
    0x4002 STATIC_NOBLE_MAN_MATTE
    ...

    Il ne reste plus qu'a récupérer les fichiers .bam dans Baldur's Gate 2, en se basant sur le nom que nous a donné le fichier .src : UVOLG1 et UDRZ1G1. Le plus simple est d'utiliser NearInfinity pour ce travail, puisqu'il liste entre autres tous les fichiers .bam d'un jeu et permet de les extraire.
    L'animation se composant de plusieurs fichiers .bam, il faudra récupérer tous ceux dont la racine du nom est UVOL et UDRZ, puis les copier dans le dossier OVERRIDE d'IWD2.

    attention

    Il reste aussi à récupérer/ajouter les sons associés à la créature et à modifier le fichier sounds.ini en conséquences... mais ceci fait l'objet d'un autre article !

     

    Peut-on ajouter de nouvelles animations de créatures à Icewind Dale 2 ?

    Les références des animations de créatures que le jeu connaît sont codées dans le fichier .exe du jeu, ce qui voudrait dire modifier ce fichier, et ne peut être fait que par un programmeur (ce qui a été fait pour le moteur de BG2, grace au mod "Infinity Animations" d'Erephine, mais qui n'existe pas pour l'heure pour Icewind dale I et II)
    Au niveau du modding, à défaut d'ajouter, on se contentera de connaître ces références, de savoir à quoi elles sont associées et de remplacer les fichiers qu'elles appellent.

    C'est en utilisant NearInfinity et ses fonctions de recherches que l'on peut arriver à savoir quelle animation est associée à un fichier .cre et plus rarement des fichiers .bcs ou .dlg
    ... ce qui nous réserve certaines surprises :

    1. un certain nombre de références sont manquantes dans le jeu (leurs fichiers .bam ne sont pas présents dans le jeu). Les animations appelées par ces références étant manquantes, on peut mettre celles de son choix, sous le nom connu par la référence, en prenant garde qu'elles soient de la même structure que celle qui était appelée (c'est ce que nous venons de voir dans cet article)

    Deux sources de références nous indiquent les animations que le jeu connait:
    - le fichier ANIMATE.IDS liste toutes les références des animations utilisées par le jeu, telles qu'on les trouvent dans des fichiers .CRE ou .BCS... et pourtant toutes ne le sont pas ! Il manque purement et simplement les fichiers .bam d'une bonne vingtaine, qui proviennent toutes d'IWD1. On peut bien entendu récupérer ces fichiers et les copier dans le dossier OVERRIDE, mais rien n'empêche d'en mettre de nouvelles, en respectant comme toujours leur structure (A1-WK, G1-G26)

    Listes des animation manquantes, listées dans le fichier animate.ids, avec le nom du fichier .bam sous lequel elles doivent être appelées et son type :

           

    Ref. Décimal Refs. Hexa Nom
    Fichier .bam Type
    60168 0xEB08 Animated Plate MANI [A1-WK]
    60184 0xEB18 Animated Plate 2 MAN2 [A1-WK]
    60200 0xEB28 Animated Plate 3 MAN3 [A1-WK]
    60401 0xEBF1 Arundel MARU [A1-WK]
    63384 0xF798 Barbarian Warrior 3 MBA3 [A1-WK]
    59249 0xE771 Barbarian Shaman 1 MBA4 [A1-WK]
    59265 0xE781 Barbarian Shaman 2 MBA5 [A1-WK]
    59308 0xE7AC Barbarian, Icasaracht MBAI [A1-WK]
    60217 0xEB39 Belhifet MBE1 [A1-WK]
    60233 0xEB49 Belhifet, Priest MBE2 [A1-WK]
    32516 0x7F04 Golem, Iron_BG2 (audio non-modifiable) MIGO [G1-G26]
    60265 0xEB69 Lich, White MLIC [A1-WK]
    32548 0x7F24 Pirate - (audio non-modifiable)
    NPIR [G1-G26]
    32554 0x7F2A Sailor (Marin) - (audio non-modifiable)
    NSAI [G1-G26]
    60241 0xEB51 Seer (voyante d'HoW)
    MSEE [A1-WK]
    59672 0xE918 Shadow, Buff MSH2 [A1-WK]
    60337 0xEBB1 Shrieker (criard) MSHR [A1-WK]
    59385 0xE7F9 Umber Hulk, Vodyanoi MUM2 [A1-WK]
    57938 0xE252 Water Weird (Élémental d'Eau) MWWE [A1-WK]
    58201 0xE359 Wight 2 MWI2 [A1-WK]
    58217 0xE369 Wight 3
    MWI3 [A1-WK]


     

    - le fichier ANIMATE.SRC liste toutes les références des animations connues par le jeu. Là encore, un grand nombre d'animation, en plus de celles précedemment indiquées, n'ont pas été utilisées par le jeu. Leurs références n'apparaissent dans aucun fichier du jeu, et les développeurs ne les ont donc pas intégrées au fichier ANIMATE.IDS.
    Il s'agit en quelques sorte de "fossiles de programmation", le moteur d'IWD2 étant construit par-dessus celui des Baldur's Gate, dont certains peuvent être activés et d'autres non.
    Leur utilisation peut poser problème : certaines font planter le jeu, d'autres ne peuvent pas être sonorisées (on a beau associer un son à leur réf., il n'est pas joué), d'autres enfin marchent parfaitement !

    Liste de celles qui marchent parfaitement :

    // CGAMEANIMATIONTYPE_SIRINE - Sirène
    0x2000=MSIRG1 (fausses couleurs)

    // CGAMEANIMATIONTYPE_VOLO - Volo
    0x2100=UVOLG1

    // CGAMEANIMATIONTYPE_OGRE_MAGE - Ogre-Mage
    0x2200=MOGMG1 (fausses couleurs)

    // CGAMEANIMATIONTYPE_DRIZZT - Drizzt 
    0x6400=UDRZ1G1 (fausses couleurs)

    // CGAMEANIMATIONTYPE_SAREVOK - Sarevok
    0x6404=USAR1G1

    // CGAMEANIMATIONTYPE_OGRILLON - Ogrillon
    0x7001=MOGNG1

    // CGAMEANIMATIONTYPE_BASILISK - Basilic
    0x7100=MBASG1

    // CGAMEANIMATIONTYPE_ELEMENTAL_BG2 - Élémental de Feu BG2
    0x7310=MFIEG11

    // CGAMEANIMATIONTYPE_GIBBERLING - Grouilleux
    0x7800=MGIBG1

    // CGAMEANIMATIONTYPE_KOBOLD_XVART - Xvart
    0x7C00=MXVTG1 (fausses couleurs)

    // CGAMEANIMATIONTYPE_KOBOLD_TASLOI - Tasloï
    0x7C01=MTASG1 

    // CGAMEANIMATIONTYPE_ZOMBIE - Zombie
    0x7D00=MZOMG1 (fausses couleurs)

    // CGAMEANIMATIONTYPE_TROLL - Troll
    0x7F00=MTROG11

    // CGAMEANIMATIONTYPE_KOBOLD - Kobold
    0x8200=MKOBG1 (fausses couleurs)

    // CGAMEANIMATIONTYPE_EAGLE - Aigle
    0xD000=AEAGG1 (1 bam statique)

    // CGAMEANIMATIONTYPE_SEAGULL - Goéland
    0xD100=AGULG1 (1 bam statique)

    // CGAMEANIMATIONTYPE_VULTURE - Vautour
    0xD200=AVULG1 (1 bam statique)

      Liste des références qui posent problème (plantage ou non affichage dans le jeu) :

    0x3000 ANKHEG
    0x6401 ELMINSTER

    0x7311 ELEMENTAL_FIRE_SMALL
    0x7703 GHOUL_SHADOW
    0x7F09 SAHUAGIN
    0x7F0C KUOTAI
    0x7F0D LICH
    0x7F0E DEMILICH
    0x7F0F TROLL_SMALL
    0x7F12 VAMPIRE
    0x7F14 GITHYANKI
    0x7F15 BEHOLDER_SMALL
    0x7F16 MOOSE
    0x7F17 RABBIT
    0x7F19 DANCING_SWORD
    0x7F20 GROUNDHOG
    0x7F21 PHEASANT
    0x7F22 VAMPIRE_FEMALE
    0x7F23 SAHAUGIN_LARGE
    0x7F28 KUO-TOA_LARGE
    0x7F2C AMISH_SOLDIER
    0x7F2D WYVERN_FAMILIAR
    0x7F30 BODHI
    0x7F31 ELLESIME
    0x7F35 MIST_CREATURE
    0x7F36 SHADOW_THIEF
    0x7F37 JON_IRENICUS

    Le fait qu'une adresse pose problème empêche nullement de récupérer l'animation qui lui est associée par défaut; il faudra juste l'associer à une autre adresse appellant une animation de même type, et attribuer aux fichiers .bam les noms qui y correspondent.
    Je n'ai par exemple pas pu réutiliser les anims d'Elminster aux références qui lui sont attribuées ( 0x6401 ELMINSTER) : l'animation n'apparaissait pas dans le jeu ! (d'autres font purement et simplement planter le jeu)

    [ Globalement, c'est surtout avec des anims de type G1-G26 que ça bloque. La solution consiste à convertir ces animations en animations de type A1-WK. J'indique la procédure à cette page -> ]

    Après plusieurs tests, j'ai réussi à afficher les .bam d'Elminster en utilisant l'adresse des anims de Sarevok (0x6404 dont l'animation, par chance, ne me plait pas des masses...) J'ai donc dû entrer comme référence dans le fichier animate.ids 0x6404 ELMINSTER et surtout renommer les fichiers .bam de l'anim d'Elminster sous le nom de celle de Sarevok (USAR1A1, USAR1A3, USAR1A5, USAR1G1, USARW2, et leurs pendants xxxxxxE)


    2. d'autres sont inutilisées, au sens où les fichiers .bam existent, mais aucune créature et aucun script ne les utilise.
    Leur modification est à priori possible, sans crainte de répercussions dans le jeu, mais n'a pas été totalement vérifiée.
    Dans ce cas, il sufit, pour remplacer les fichiers .bam, de copier dans le dossier OVERRIDE les nouvelles animations ayant le nom de celle que l'on veut remplacer, en prenant les même précautions que précédemment vis à vis de leur structure (A1-WK, G1, etc...)

    Liste des références du fichier ANIMATE.IDS inutilisées par le jeu :

    53248   0xD000 BIRD, EAGLE (Aigle)  - AEAG [G1]
    53760   0xD200 BIRD, VULTURE (Vautour) - AVUL [G1]
    58120   0xE308 Ghoul - MGH2 [A1-WK]
    58136   0xE318 Ghoul 2  - MGH3 [A1-WK]
    58249   0xE389 Mummy  - MMUM [A1-WK]
    32562   0x7F32 Slayer - MSLY [G11]
    58441   0xE449 Svirfneblin armé d'une hache - MSVI [A1-WK] 


    1 commentaire