COMMENT TESTER ET INTÉGRER UNE ANIMATION DE CRÉATURE DANS LE JEU (partie 4)
D. ATTRIBUER DES SONS À VOTRE ANIMATION.
>> :!: Cette étape est facultative.
Vous aurez remarqué que certaines créatures émettent des sons lorsqu’elles effectuent certaines actions. Ces sons sont gérés de deux manières :
- Soit dans le fichier .cre.
- Soit dans un fichier 2da. lié à un slot d’animation.
Je traiterai ici de la manière d’attribuer des sons à une animation par l’intermédiaire du fichier 2da.
1. Définir une base de données de sons.
Les fichiers sons utilisés sont au format .wav.
Je passe sur la manière dont vous pouvez les obtenir : exportation avec un utilitaire de modding (Near Infinity, WinBiff̷) , téléchargement sur Internet, exportation et conversion à partir d’un autre jeu…
Une fois ces fichiers définis, vous devez les attribuer à votre animation par l’intermédiaire d’un fichier 2da.
2. Structure générale des fichiers 2da.
Les fichiers 2da stockent des informations nécessaires au moteur du jeu (XP par niveau, nombre de sorts disponibles par niveau, progression du TAC0 par niveau, PV par niveau̷) .
Leur format est assez simple : comme leur nom l’indique ("2-Dimensional Array"), ils sont constitués d’un tableau de données (lignes / colonnes).
Ils sont d’ailleurs parfaitement éditables dans votre éditeur de texte préféré.
3. Structure des fichiers 2da. associés aux animations : théorie.
Certains contiennent donc des références aux sons émis par toutes les créatures utilisant un même type d’animation (même code de 4 lettres) selon les actions (séquences) qu’elles effectuent.
Prenons par exemple le premier fichier 2da de cette série : le fichier MAIR.2da.
Il correspond à la ligne 0x7320 MAIR CGAMEANIMATIONTYPE_ELEMENTAL_AIR du fichier ANISND.ids, c'est-à-dire le slot d'animation des Élémentaires d'Air.
La première ligne contient le préfixe de l'animation et un nom qui la définit, séparés par un « / ».
La seconde ligne contient la valeur par défaut des données du fichier.
La troisième ligne contient l'entête des colonnes. Dans le cas particulier de ce type de fichier 2da., nous n'avons que « SOUND ».
Les lignes suivantes contiennent les données du fichier.
ATTENTION ! Surtout, ne travaillez pas ces fichiers avec DLTCEP car ce dernier n'affiche que la première colonne de données :
Par ailleurs, voici les règles de fonctionnement de ces fichiers :
a. Les lignes sont regroupées par paires – chaque paire correspondant à une action, elle même répertoriée dans le fichier SEQ.ids :
Code : Tout sélectionner
0 SEQ_ATTACK
1 SEQ_AWAKE
2 SEQ_CAST
3 SEQ_CONJURE
4 SEQ_DAMAGE
5 SEQ_DIE
6 SEQ_HEAD_TURN
7 SEQ_READY
8 SEQ_SHOOT
9 SEQ_TWITCH
10 SEQ_WALK
11 SEQ_ATTACK_SLASH
12 SEQ_ATTACK_BACKSLASH
13 SEQ_ATTACK_JAB
14 SEQ_EMERGE
15 SEQ_HIDE
16 SEQ_SLEEP
b. La première ligne de chaque paire contient la référence du fichier son associé à la séquence.
c. La seconde ligne de chaque paire contient le numéro de la frame de la séquence du fichier .BAM qui lance le son à jouer.
d. Tous les sons sont joués tant que la créature n'est pas rendue silencieuse (STATE_SILENCED).
e. Les lignes Battle_Cry et Selection ne sont utilisées que si le fichier .CRE de la créature ne contient pas de référence prédéfinie de son pour ses champs battle cry et selection.
Après la théorie, passons à la pratique.
4. Structure des fichiers 2da. associés aux animations : pratique.
D'abord, il arrive que deux sons soient attribués à une même action, comme pour les dragons :
Parfois, c'est même trois sons, comme pour le Solaire :
Quoi qu'il en soit, le fonctionnement reste le même :
a. Si plusieurs sons ont été définis pour une même séquence, un seul est joué de manière aléatoire.
b. Aucun son n'est joué si la valeur enregistrée est identique à la valeur par défaut (ici ***), ou si elle est nommée « nosound » : Comme aucun fichier nosound.wav n'existe, ce son sera considéré comme invalide par le moteur et aucun son ne sera joué.
Dans notre exemple, l'Élémentaire de l'Air dispose de 3 sons d'attaque : airel01, nosound et nosound, joués respectivement aux frames 2, 0 et 0.
Lorsqu'il attaque, le moteur choisit au hasard un de ses sons. Donc, il y a en théorie une chance sur 3 pour qu'il produise le son airel01.wav et deux chances sur trois pour qu'il reste silencieux (puisque nosound est une valeur invalide). Mais nous verrons plus loin que ce n'est pas le cas !
Lorsqu'il est touché, il produira toujours le son airel06.wav.
Il ne produira aucun son lorsqu'il s'endort, se relève, lance un sort et marche.
Quant au dragon rouge, il utilisera les sons red01 et red 02 pour les actions Battle_Cry and Selection. Mais Firkraag utilisera à la place les sons référencés dans son fichier .cre.
J'attire maintenant votre attention sur un bug (ou plutôt un dysfonctionnement) présent dans ToB :
Lorsqu'une ligne dispose de plus de deux références de son, le moteur ne choisit au hasard que les deux références extrêmes (la première et la dernière).
Ainsi, toute créature représentée par l'animation d'un solaire (MSOL CGAMEANIMATIONTYPE_SOLAR) n'émettra jamais le son solarg02 lorsqu'elle attaque.
5. Créer son propre fichier 2da.
Plutôt que de créer ex-nihilo un fichier 2da, le plus simple est d'en charger un dans un éditeur de texte et de le modifier.
Voici celui que j'ai créé pour mes Gargouilles :
Après avoir choisi et renommé mes fichiers sons, j'ai modifié le fichier MDR1.2da du Dragon rouge avec ces nouvelles références et l'ai sauvegardé sous le nom µDL.2da. correspondant à la référence de l'animation de la Gargouille dans le fichier ANIMSD.2da.
Reste à le copier dans le répertoire override.
Dans le cadre d'un mod, le plus simple est de le transférer dans le répertoire contenant les fichiers .BAM de la créature et de les copier ensemble dans le répertoire override avec le fichier d'installation tp2 :
Code : Tout sélectionner
APPEND ~animate.ids~ ~0x5296 GARGOYLE_DIABLO~ UNLESS ~^0x5296~
APPEND ~anisnd.ids~ ~0x5296 µDL CGAMEANIMATIONTYPE_GARGOYLE_DIABLO~ UNLESS ~^0x5296~
COPY ~Diamant/Bam/GAR~ ~override
L'étape la plus pénible a été l'écoute et la nomenclature des fichiers sons : comme ils sont très courts (pas plus de 2-3 secondes), faire la différence entre un son évoquant une blessure ou la mort peut parfois relever du parcours du combattant, et je ne parle même pas des différences de qualité d'oreilles de chacun.
Bref, je suis persuadé que 4 personnes qualifieraient de manière différente les fichiers de sons d'un même lot.
Donc, ne vous prenez pas trop la tête et attribuez chaque son à une séquence selon votre propre ressenti.
Cependant, si vous utilisez des fichiers sons provenant d'I.E., il y a de fortes chances pour qu'ils répondent au schéma suivant, enfin... dans le meilleur des cas... :
- xxxx01 : BATTLE_CRY.
- xxxx01-02 : SELECT.
- xxxx03-05 : ATTACK.
- xxxx06 : DAMAGE.
- xxxx07 ou 09 : DYING.
C'est fait, votre nouvelle créature est terminée et prête à être implantée dans votre mod.
[/size][/font]