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é...

CRE et choix du son

<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

CRE et choix du son

.

Message par Cocrane »

Le fichier CRE contient les caractéristiques de votre créature. Il existe 100 places pour définir un texte s'affichant à l'écran et/ou un son à produire en fonction d'un évènement pendant le jeu.

Exemple: vous placez un des compagnons du Charname en position 1 (Leader) et vous entendez la voix du personnage réagissant à son nouveau statut dans le groupe.

Extrait de la structure du fichier CRE

"
0x00a4 4x100 (Strref) Strrefs pertaining to the character
* Most are connected with the sound-set (see SOUNDOFF.IDS (BG1) and SNDSLOT.IDS for (BG2)).
"


Le fichier SNDSLOT et SOUNDOFF contiennent le libellé de chaque événement paramétrable. La liste étant inférieure à 100 on peut imaginer que tout n'est pas utilisé ou utilisable dans le jeu.


Contenu SNDSLOT.IDS
"
0 INITIAL_MEETING
1 MORALE
2 HAPPY
3 UNHAPPY_ANNOYED
4 UNHAPPY_SERIOUS
5 UNHAPPY_BREAKING_POINT
6 LEADER
7 TIRED
8 BORED
9 BATTLE_CRY_1
10 BATTLE_CRY_2
11 BATTLE_CRY_3
12 BATTLE_CRY_4
13 BATTLE_CRY_5
14 ATTACK_1
15 ATTACK_2
16 ATTACK_3
17 ATTACK_4
18 DAMAGE
19 DYING
20 HURT
21 AREA_FOREST
22 AREA_CITY
23 AREA_DUNGEON
24 AREA_DAY
25 AREA_NIGHT
26 SELECT_COMMON_1
27 SELECT_COMMON_2
29 SELECT_COMMON_3
30 SELECT_COMMON_4
31 SELECT_COMMON_5
32 SELECT_ACTION_1
33 SELECT_ACTION_2
34 SELECT_ACTION_3
35 SELECT_RARE_1
36 SELECT_RARE_2
37 SELECT_RARE_3
38 SELECT_RARE_4
39 INTERACTION_1
40 INTERACTION_2
41 INTERACTION_3
42 INTERACTION_4
43 INTERACTION_5
44 INSULT_1
45 INSULT_2
46 INSULT_3
47 COMPLIMENT_1
48 COMPLIMENT_2
49 COMPLIMENT_3
50 SPECIAL_1
51 SPECIAL_2
52 SPECIAL_3
53 REACT_TO_DIE_GENERAL
54 REACT_TO_DIE_SPECIFIC
55 RESPONSE_TO_COMPLIMENT_1
56 RESPONSE_TO_COMPLIMENT_2
57 RESPONSE_TO_COMPLIMENT_3
58 RESPONSE_TO_INSULT_1
59 RESPONSE_TO_INSULT_2
60 RESPONSE_TO_INSULT_3
61 DIALOG_HOSTILE
62 DIALOG_DEFAULT
69 IDLE_1
70 IDLE_2
71 IDLE_3
72 IDLE_4
73 IDLE_5
74 BIOGRAPHY_TEXT"


Chaque case du fichier CRE mémorise un indice du fichier dialog.tlk. Cet indice permet d'accéder aux informations suivantes:

Structure de la section entrée du fichier dialog.tlk
"
Offset Size (data type) Description
0x0000 2 (word)

* 00 - No message data
* 01 - Text exists
* 02 - Sound exists
* 03 - Standard message. Ambient message. Used for sound without text (BG1) or message displayed over characters head (BG2) , Message with tags (for instance <CHARNAME>) for all games except BG2
* 07 - Message with tags (for instance <CHARNAME> ) in BG2 only

0x0002 8 (resref) Resource name of associated sound
0x000a 4 (dword) Volume variance
0x000e 4 (dword) Pitch variance
0x0012 4 (dword) Offset of this string relative to the strings section
0x0016 4 (dword) Length of this string
"


On a donc grâce à cet indice:
- le nom du fichier son associé avec le paramétrage de la variance (volume et pitch).
> je n'ai pas encore vu des valeurs différentes de 0. Je suppose que le paramétrage joue sur les caractéristiques du son produit.

- la position du texte à afficher à l'écran.

- le type d'entrée (Son, Son + texte, texte seul, texte à afficher au dessus de la tête du personnage).

Exemple Edwin BG2 sur l'événement Leader
Indice: 3972
Fichier son (wav): Edwin07
Volume: 0
Pitch: 0
Type info: 3
Texte: " Ils finissent par comprendre quelle est ma véritable place !"

Conclusion
On peut paramétrer de l'affichage texte ou la production de son en rapport avec la créature suite à un événement existant.

Je connais au moins NI qui le permet à l'heure actuelle.


A noter:
- les fichiers Wav du jeu sont pour la plupart compressé en "WAVC". On ne peut écouter le fichier via un lecteur multimédia.

Il faut à partir du fichier source créer un nouveau fichier en copiant le fichier source du 28ième octets jusqu'à sa fin.

Le fichier obtenu est à mettre sous l'extention .ACM.

Il doit ensuite être décrompressé par "acm2wav.exe".Deux méthodes:
- à partir d'une fenêtre explorateur, on fait glisser le fichier ACM sur l'exe. L'exe se lance et produit un fichier WAV avec le nom du fichier ACM. Le fichier obtenu peut être écouté.

- lancement d'une ligne de commande du type:
chemin de l'exe\acm2wav.exe "chemin du fichier cible\nom fichier cible.ACM" -m

Coco
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 »

L'interface est faite. J'ai un problème pour proposer l'écoute des sons des voix des personnages.

Des informations que j'ai:
- BG stocke le son dans des fichiers ACM.
- acm2wav.exe permet de les convertir en .WAV que l'on peut écouter.

Existe t'il un exécutable que je pourrais lancer dans mon éditeur me permettant d'écouter le son.

Exemple de lancement
Chemin\Exe_WAV.exe "chemin du fichier à écouter"

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 »

A mon avis, tu as deux solutions plus simples que de trouver un programme en ligne de commandes capable de jouer le son.

Near Infinity utilise manifestement une fonction type PlaySound incluse dans les bibliothèques ou dans la machine virtuelle Java. Vu l'orientation de WinDev vers le multimédia, on peut penser qu'une fonction similaire pour jouer un fichier WAV existe quelque part dans WinDev.

L'autre façon de faire, c'est de déléguer le travail à Windows. Il existe une fonction [url=http://support.microsoft.com/kb/224816/fr]ShellExecute[url] dont le rôle est d'exploiter les mécanismes d'association des types de fichier aux outils capables de les afficher/jouer. Si tu appelles cette fonction avec le nom d'un fichier txt, Windows lancera Notepad ou l'éditeur que tu auras associé aux fichiers txt. WeiDU utilise notamment ce mécanisme pour afficher les readme des mods sans se soucier du type de document : fichier txt, html ou encore chm. C'est ainsi que les html s'affichent chez moi avec Firefox, puisque c'est mon navigateur par défaut.
En pratique, avec un fichier WAV, c'est Media Player ou le remplaçant choisi par l'utilisateur qui sera exploité.


Je n'avais pas fait attention à ce sujet avant. J'avais eu l'impression que tu avais simplement extrait le contenu de messages du le long sujet et fait une synthèse.

Dans tous les fichiers IDS, ce qui compte est le numéro. S'il apparaît deux fois, les deux noms associés sont considérés comme identiques à la valeur quand ils sont utilisés dans des scripts, par exemple. C'est comme si tu crées deux #define en C avec des noms différents mais la même valeur. Au final, la seule chose qui importe, c'est la valeur.

Tous les doublages sons ont forcément un texte associé, qui apparaît si le joueur active l'option sous-titre dans le jeu. C'est utile pour les langues qui n'ont pas bénéficié d'une traduction des voix.
Par conséquent, toutes les répliques sont forcément associées au fichier dialog.tlk, puisque c'est lui qui stocke les textes. Chaque texte peut être associé à une ressource son, par le nom du fichier WAV/ACM qui contient le doublage sonore. Ceci ne concerne pas uniquement ces répliques. Les dialogues utilisent aussi des doublages sonores pour certains personnages ou certaines répliques (souvent seulement la toute première), de même que les textes affichés au changement de chapitre.

Dans ton éditeur, tu peux te contenter de proposer seulement les sons et textes (bio) qui sont vraiment exploités dans le jeu. Le fichier IDS les identifient tous, et même un peu trop. A ma connaissance les 39 à 62 ne sont pas utilisés dans BG 2. Le meilleur moyen de découvrir lesquels sont vraiment utiles est de consulter plusieurs fichiers de personnages recrutables. Ou d'étudier ceux utilisés dans le fichier TP2 d'un mod de PNJ avec voix.
:!: 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 »

Salut Isaya,

ton analyse est bonne, j'ai vu compliqué alors que Windev propose de lire des fichiers sons en donnant le chemin.

J'arrive à lire des fichiers wav mais pas ceux de BG...

J'exporte via Weidu ou NI des fichiers Wav de BG et ensuite je n'obtiens rien. Si j'écoute le fichier via NI ca marche.

C'est lié au fait que le fichier est au format ACM? Pourant à l'exportation, je suppose qu'il est converti via "acm2wav.exe" en un vrai Wav.

As tu une idée du problème?

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 »

NI a aussi besoin de acm2wav pour convertir un fichier WAV de type ACM (la plupart de ceux utilisés dans le jeu, mais il y a aussi des "vrais" WAV non compressés) en format WAV non compressé, avant de le jouer. Si tu retires acm2wav du répertoire du jeu et de celui où est Near Infinity, NI sera lui-aussi incapable de jouer le son.

NI ne convertit que quand tu appuies sur le bouton "Play" du magnétophone de NI et le fichier converti est effacé à chaque fois après. Near Infinity lui-même se contente d'exporter le fichier WAV brut, donc au format ACM la plupart du temps. Il fait pareil pour les autres fichiers, il se contente d'extraire du fichier BIF ou de recopier depuis l'Override, sans transformation.

Bref, si tu veux jouer un fichier WAV de type ACM, il te faut l'extraire, le convertir avec acm2wav et enfin tu peux le restituer par un moyen standard.
:!: 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 »

la ligne de commande trouvé sur le net est la suivante:

chemin\acm2wav.exe "chemin\fichier.acm" -m

Tu obtiens un fichier wav si le fichier source convient à l'exe.

J'ai pris un fichier du rep music du jeu et le wav peut être écouté.

Par contre si je prends le fichier de NI annoncé WAV ou celui extrait via weidu. Je n'obtiens rien.

J'ai cherché des fichiers ACM dans la liste des fichiers de weidu, il ne les mentionne pas.

Si les wav obtenus sont compressés, comment on les décompresse?

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 »

Le jeu exploite le format ACM pour plusieurs types de fichiers, pas uniquement ceux de type ACM. Bien des fichiers de type "WAV" du jeu peuvent exister sous deux forme : "vrai" WAV (non compressé), tels que les sons pour le personnage principal (répertoire Sounds) mais pas uniquement, ou "faux" WAV - "vrai ACM".

Plus de précisions dans IESDP. Notamment la partie concernant WAV(0x0004)
Sounds. Note that 'WAVC' and 'RIFF' .wav files are used interchangeably throughout the engine; WAVC is an internal format -- more precisely, an ACM file with a header attached to simplify buffer estimation during file decompression.
Tout fichier WAV extrait par NI ou WeiDU que tu ne peux pas écouter directement doit correspondre à ce cas.

A ma connaissance, NI lit l'en-tête du fichier WAV. S'il trouve WAVC au début (cf définition du format WAVC), il extrait la partie propre de données ACM vers un fichier qu'il fait convertit à acm2wav.
Quand tu sélectionnes un fichier WAV dans NI qui est de type WAVC, Near Infinity crée un fichier WAV normal (suite à traitement par acm2wav) dans le répertoire du jeu. Si tu le mets de côté (NI l'efface automatiquement dès que tu choisis un autre fichier), tu auras un WAV "simple". Par ce moyen, tu pourras comparer si tu arrives à effectuer le même travail d'extraction du ACM depuis un WAVC et à le faire convertir par acm2wav.
Near Infinity a deux méthodes d'export : Export ou Export & Convert. La seconde n'est disponible que si le fichier est de type WAVC. Utilise la première pour obtenir le fichier WAVC.
Le principe de traitement devrait être tout à fait similaire à celui employé pour les fichiers BAMC. Si je comprends bien, il faudra utiliser Zlib et les informations de l'en-tête pour décompresser le contenu ACM, qu'il faudra ensuite écrire dans un fichier temporaire pour le convertir avec acm2wav.
:!: 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 »

J'ai pris le fichier 'MINSC02.wav' exporté du jeu via NI ou Weidu (je ne sais plus).

Je lis le fichier via la structure du fichier WAVC pour obtenir les données suivantes

0x0000 4 (char array) Signature ('WAVC')
WAVC

0x0004 4 (char array) Version (V1.0)
V1.0

0x0008 4 (dword) Uncompressed size of file
244020

0x000a 4 (dword) Compressed size of file
38544

0x0010 4 (dword) Pointer to ACM data (usu. 0x1c)
28

0x0014 2 (word) Number of sound channels (usu. 1)
1

0x0016 2 (word) Number of bits per sample (usu. 16-bit)
16

0x0018 2 (word) Sample rate (usu. 22050 Hz)
22050

0x001a 2 (word) Unused (usu. 0x777e)
30695

0x001c 4 (bytes) Standard ACM header (0x97280301)
227



TOTAL des octets 'infos' 32 octets
Taille du fichier 38572 octets

38572 - 32 = 38540
38572 - 38544 = 28

Les données WAV commencent t'elle réellement au 28ième octet ou au 32 ième?

Je continue l'enquête.

Suite:
Ca ne marche pas pour le moment.

Je réutilise le code de BAMC en l'adaptant.

Que je décompresse à partir de la position 28 ou 32 avec une taille compressée de 38540 ou 38544 ne change rien. J'ai retour de la dll à -3.

J'ai raté quoi?

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 »

Mon hypothèse qu'il fallait utiliser Zlib pour la décompression était fausse. Les indications de l'en-tête du fichier WAVC sont trompeuses.

En bricolant un fichier bat converti en exécutable afin d'observer la façon dont Near Infinity appelait acm2wav, j'ai pu récupérer le fichier ACM obtenu par Near Infinity et voir quelle était sa taille.
Dans le cas de MINSC02, le fichier ACM que Near Infinity fait convertir a une taille de 38544. Ce qui correspond à la taille restante dans le fichier après les 28 premiers octets. Il suffit donc de recopier de l'offset 28 à la fin du fichier dans un fichier ACM, que tu pourras alors donner à acm2wav.

A noter qu'après conversion, le fichier WAV a une taille de 244152, donc je ne sais pas trop à quoi correspond la taille décompressé indiqué dans l'en-tête WAVC.
Il est possible que les outils officiels de l'éditeur diffèrent d'acm2wav et que le résultat après conversion soit conforme à l'indication avec l'algorithme intégré dans le jeu.

Comme l'indique le "Pointer to ACM data", qui a la valeur 28, la partie ACM commence à la position 28. Le fait que l'auteur de la description ait fait figurer "Standard ACM header" à cet endroit veut simplement dire que, comme tout bon fichier qui se respecte, le fichier ACM doit commencer par sa partie en-tête et qu'elle doit avoir la valeur indiquée.

A noter que Near Infinity n'utilise l'option -m d'acm2wav que si le fichier est indiqué comme étant mono et non stéréo (Number of sound channels = 1).
:!: 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 »

J'ai suivi tes conseils sur le mode opératoire et ca fonctionne.

J'avoue que je trouve super agréable de cliquer et t'entendre le son associé au texte.

Il reste une question concernant le type de l'entrée dans dialogue.tlk

"
TLK V1 Entries

This section is hardcoded to start at byte 18 from the beginning of the file. The string offsets are relative to the strings section.

Offset Size (data type) Description
0x0000 2 (word)

* 00 - No message data
* 01 - Text exists
* 02 - Sound exists
* 03 - Standard message. Ambient message. Used for sound without text (BG1) or message displayed over characters head (BG2) , Message with tags (for instance <CHARNAME>) for all games except BG2
* 07 - Message with tags (for instance <CHARNAME> ) in BG2 only
"


J'ai consulté plusieurs CRE BG2, ils ont tous la valeur "03" avec des cas différents. conclusion la valeur est elle réellement importante?

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 »

Comme tous les doublages sonores ont forcément un son et une version texte, affichée si tu actives l'option sous-titre dans le jeu, il est normal que tu trouves toujours la valeur 3.
Pour le reste, le mieux est de faire comme ce que tu trouves dans le jeu. S'il y a 3 même pour des textes sans son, alors mets 3. Mais alors assure-toi que la référence au fichier son est bien vide (des 0 binaires), sinon le jeu va chercher (pour rien) à trouver le fichier correspondant.

Ce qui ne veut pas dire que tu dois mettre 3 pour tous les textes. Pour des dialogues ou des descriptions d'objets où des mots-clés tels que <CHARNAME> apparaîtrait, il faudrait impérativement mettre la valeur 7 pour Baldur's Gate II.
:!: 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 0 invité