[Tutoriel] Modifier et créer des créatures

Sous Forum réservé aux mods H5

Modérateurs: Zénithale, Morrock

[Tutoriel] Modifier et créer des créatures

Messagepar Morrock » Dim 17 Fév 2008, 13:12

Ce tutoriel s'adresse aux moddeurs francophones de tous niveaux qui veulent modifier ou créer de nouvelles créatures pour Heroes V.

Il est très largement inspiré des travaux déjà réalisés et disponibles aux liens suivants :

Modding wiki : http://www.heroesofmightandmagic.com/he ... ding_wiki/
Tutorial de Radar : http://heroescommunity.com/viewthread.php3?TID=24678

... ainsi que des explications de Nelgirith et Sfidanza recueillis sur ce forum et d'autres.


Plan du tutoriel

1 - Prérequis
2 - Modèle général des créatures existantes
3 - Créer une nouvelle créature en copiant une ancienne
4 - Changer les caractéristiques d'une créatures
5 - Modifier l'apparence d'une créature
6 - Ajouter ou modifier les effets d'une créature
7 - Modifier la taille d'une créature
Modifié en dernier par Morrock le Mer 13 Aoû 2008, 12:15, modifié 3 fois.
Ci-gît la signature de Morrock, exterminée par une défaillance de disque dur...
Avatar de l’utilisateur
Morrock
Grand Maître
Grand Maître
Administrateur
Administrateur
 
Messages: 3114
Enregistré le: Ven 9 Juin 2006, 12:24
Localisation: Erre dans les couloirs du châteaux à la recherche de chair fraîche

1 - Prérequis

Messagepar Morrock » Dim 17 Fév 2008, 13:13

1 - Prérequis

Pour créer un mod pour Heroes V, il vous faut utiliser les fichiers contenus dans les archives du dossier data du répertoire d'installation de Heroes V.

Dans ce tutoriel, nous utiliserons des fichiers contenus dans data.pak et texts.pak. Ces archives .pak sont en fait des archives zip, vous pouvez donc extraire les fichiers en utilisant n'importe quel logiciel de décompression (et si vous le voulez, en copiant les archives et en les renommant data.zip et texts.zip).

Ce tutoriel n'abordera pas la partie pratique de l'utilisation des logiciels de retouche d'image (quel que soit celui que vous vouliez utiliser), mais il vous sera nécessaire de savoir vous servir de ce type de logiciel.

Dans l'ensemble de ce tutoriel, nous utiliserons les notations 'Faction' pour désigner le nom d'une faction (par exemple Neutral) et 'Creature' pour désigner le nom d'une créature (par exemple Phenix).

Des notions de xml peuvent vous être utiles pour comprendre plus facilement les explications données, mais elles ne sont pas essentielles (je vais tenter de faire simple ^^).
Modifié en dernier par Morrock le Mer 13 Aoû 2008, 12:17, modifié 4 fois.
Ci-gît la signature de Morrock, exterminée par une défaillance de disque dur...
Avatar de l’utilisateur
Morrock
Grand Maître
Grand Maître
Administrateur
Administrateur
 
Messages: 3114
Enregistré le: Ven 9 Juin 2006, 12:24
Localisation: Erre dans les couloirs du châteaux à la recherche de chair fraîche

2 - Modèle général des créatures existantes

Messagepar Morrock » Dim 17 Fév 2008, 13:13

2 - Modèle général des créatures existantes

Ce chapitre traite de l'organisation générale des créatures, mais n'aborde pas le fonctionnement des effets ajoutés (flammes, transparence...). Ces effets seront traités dans un chapitre ultérieur.

2.1 - Schéma synthétique

Image

Dans les fichiers du jeu, ce schéma apparaît sous la forme d'enchaînements de fichiers .xdb (au format xml) regroupés dans les archives data.pak et texts.pak.

Nous allons voir dans cette partie l'ensemble des fichiers qui consituent ce modèle pour une créature. Dans chaque fichier, un lien est fait vers un autre fichier avec une structure de cette forme :

Code: Tout sélectionner
<Balise1 href="chemin.ext#xpointer(/Balise2)"/>


- Balise 1 : Nom d'une balise indiquant le type de fichier. Par exemple <Visual ... > indiquera un lien vers un fichier définissant le visuel d'une créature

- chemin : chemin d'accès du fichier. Si ce chemin commence par le symbole " / ", alors le chemin est relatif à la racine du dossier data. Si ce chemin commence par une lettre, alors le chemin est relatif au dossier dans lequel se trouve le présent fichier.

- ext : extension du fichier (ici, nous verrons trois extensions différentes : les fichiers xdb, qui contiennent du texte définissant les créatures, les fichiers .dds, qui contiennent des images, et enfin les fichiers .txt qui contiennent simplement du texte)

- Balise 2 : Nom d'une balise indiquant le type de fichier. Elle peut être différente de Balise1, et elle se retrouve souvent dans le chemin d'accès au fichier (par exemple <Icon href="/Creature.(Texture).xdb#xpointer(/Texture)"/> - Ici la balise Texture apparaît également dans le nom du fichier).

Tout cela est pour l'instant très théorique, cela deviendra de plus en plus concret au cours du tutoriel (donc pas d'inquiétude si vous êtes déjà largués ^^).

2.2 - Liste des fichiers formant le modèle (version ToE) :

Voici la liste des fichiers qui constituent toute l'arborescence du modèle de la créature. Cette liste est définie sur le modèle des créature de ToE, dont l'arborescence est la plus simple. Nous verrons ensuite comment s'en sortir avec les créatures des versions précédentes.

Précautions à prendre : de façon générale, il est possible que les chemins d'accès aux différents fichiers soient approximatifs. Ceci est du au fait qu'en fonction des créatures, les chemins peuvent être très différents (les joies de l'organisation selon Nival). Dans ce cas, la meilleure façon est de partir du premier fichier dans la liste ci-dessous (ceux là sont toujours bien organisés), et de suivre les différents enchaînements de liens.

Dans les liens entre les fichiers, c'est la balise utilisée (Balise1) qui définit à quoi correspond le fichier ciblé.

- /GameMechanics/Creature/Creatures/Faction/Creature.xdb : c'est le fichier de base à partir duquel tous les autres fichiers peuvent être retrouvés, il définit également toutes les caractéristiques et les capacités des créatures. Dans ce fichier, vous trouverez des liens vers les deux parties suivantes du modèle : Visual (Visuel de la créature) et MapObject (Définition de la créature sur la map) dans les liens suivants :
Code: Tout sélectionner
<MonsterShared href="/MapObjects/Faction/Creature.(AdvMapMonsterShared).xdb#xpointer(/AdvMapMonsterShared)"/>
<Visual href="/GameMechanics/CreatureVisual/Creature.xdb#xpointer(/CreatureVisual)"/>


- /MapObjects/Faction/Creature.(AdvMapMonsterShared).xdb : ce fichier définit donc la créature sur la map, en pointant vers le modèle de la créature et ses animations :
Code: Tout sélectionner
<Model href="/Characters/Creatures/Faction/Creature.xdb#xpointer(/Model)"/>
<AnimSet href="/Characters/Creatures/Faction/Creature-arena.xdb#xpointer(/AnimSet)"/>


-/GameMechanics/CreatureVisual/Creature.xdb : ce fichier définit l'apparence de la créature en pointant vers le modèle de la créature, ses animations, les fichiers textes contenant son nom et sa description et ses icônes :
Code: Tout sélectionner
<CreatureNameFileRef href="/Text/Game/Creatures/Faction/Creature.txt"/> point vers le fichier du nom de la créature
<CreatureAbilitiesFileRef/> est inutile.
<DescriptionFileRef href="/Text/Game/Creatures/Faction/Creature_Desc.txt"/> pointe vers le fichier contenant la description de la créature.
<Icon128 href="/UI/H5A2/Icons/Creatures/Faction/Creature.(Texture).xdb#xpointer(/Texture)"/> est la seule icone importante. Les Balises <Icon/>, <Icon32/> et <Icon64/> peuvent donc rester vides.
<AnimCharacter href="/Characters/Creatures/Faction/Creature.(Character).xdb#xpointer(/Character)"/>


- /UI/H5A2/Icons/Creatures/Faction/Creature.(Texture).xdb : ce fichier pointe simplement vers le fichier .dds contenant l'image de l'icône grâce au lien suivant :
Code: Tout sélectionner
<DestName href="Creature.(Texture).dds"/>

Cette même ligne de code servira dans tous les fichiers .xdb qui pointent vers une texture .dds

- /Characters/Creatures/Faction/Creature.(Character).xdb : ce fichier pointe vers le modèle 3D et l'animation de ce modèle. Vous reconnaîtrez facilement les mêmes liens que dans le fichier MapObject vu précédemment :
Code: Tout sélectionner
<Model href="/Characters/Creatures/Faction/Creature.xdb#xpointer(/Model)"/>
<AnimSet href="/Characters/Creatures/Faction/Creature-arena.xdb#xpointer(/AnimSet)"/>


- /Characters/Creatures/Faction/Creature.xdb : définit le modèle 3D, ce modèle est divisé en plusieurs parties : le squelette (forme principale), la géométrie(formes autour du squelette) et les matériaux (pour faire simple, les textures) :
Code: Tout sélectionner
<Skeleton href="Creature-skel.xdb#xpointer(/Skeleton)"/>
<Geometry href="Creature-geom.xdb#xpointer(/Geometry)"/>
<Materials>
   <Item href="Fichier_1.(Material).xdb#xpointer(/Material)"/>
   [...]
   <Item href="Fichier_n.(Material).xdb#xpointer(/Material)"/>
</Materials>


Il peut y avoir 1 ou plusieurs liens entre les balises Materials, chacun d'entre eux étant défini par une balise <Item> pointant vers un fichier xdb. Les fichiers ciblés pointent eux-même vers des fichiers de Texture, qui pointent vers des fichiers .dds contenant les images des textures.

- /Characters/Creatures/Faction/Creature-arena.xdb : ce fichier contient des liens vers toutes les animations utilisées pour chaque mouvement de la créature. Il utilise la structure suivante :

Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<AnimSet>
   <animations>
      <Item>
         <Kind>idle00</Kind>
         <Anim href="Creature-arena-idle00.xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
      [...]
      <Item>
         <Kind>move</Kind>
         <Anim href="Creature-arena-move.xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
   </animations>
   <ExpSrcScene href="/H5A2/Creatures/Faction/Creatures/Creature.mb"/>
   <ExpSrcClipFolder href="/H5A2/Creatures/Faction//Creature/Animations/Clip/"/>
   <ExpRootTransform>Global</ExpRootTransform>
</AnimSet>


Chaque <Item> pointe vers un fichier .xdb, qui contient lui-même des liens vers les animations et vers les effets associés. Chaque Item est défini pour une action particulière de la créature (par exemple idle00 quand la créature reste inactive, death pour sa mort, move pour son déplacement...). Derrière chaque <Item> de ce fichier peut se cacher 1 ou 2 fichiers si le mouvement est simple et sans effet, ou plusieurs dizaines pour les effets les plus compliqués. Nous reviendrons sur les effets dans une autre partie.

Pour résumer tout ça, on peut utiliser le schéma détaillé réalisé par Radar de Heroes Community :

Image

2.3 - Liste des fichiers formant le modèle (version précédentes) :

Dans les versions précédentes de Heroes V, les fichiers étaient plus éparpillées, mais ils suivaient tout de même une certaine logique dans la plupart des cas :

- /GameMechanics/Creature/Creatures/Faction/Creature.xdb : Le fichier de base est identique et placé dans le même répertoire que les fichiers de ToE. Encore une fois, le meilleur moyen de retrouver tous les fichiers est de partir de celui-la et suivre tous les liens pour accéder à tous les autres fichiers.

- /MapObjects/Faction/Creature.(AdvMapMonsterShared).xdb : ce second fichier se trouve également au même emplacement que son équivalent version ToE. Par contre, les liens qu'il contient peuvent être différents car ils pointent vers des fichiers "LOD" (voir note 1).

Les liens de ce fichier ressemblent alors à ceci :
Code: Tout sélectionner
<Model href="/Characters/Creatures/Faction/Creature_LOD.xdb#xpointer(/Model)"/>
<AnimSet href="/Characters/Creatures/Faction/Creature-adv.xdb#xpointer(/AnimSet)"/>


-/GameMechanics/CreatureVisual/Creature.xdb : là encore, ce fichier est en général situé au même emplacement. Donc jusque là, rien de très différent, mis à part dans le contenu.

En effet, dans ce fichier sont définis les emplacement des icones. Dans les fichiers ToE, seule la balise <Icon128> est utilisée (et quelquefois la balise <Icon64>), mais dans les versions précédentes, les quatre icônes sont utilisées (donc <Icon>, <Icon32>, <Icon64>, <Icon128> respectivement de taille 55*55, 32*32, 64*64 et 128*128 pixels) les fichiers Icones eux-mêmes existent donc en quatre exemplaires. (voir note 2)

Ces fichiers icônes se situent à des emplacements différents selon la version. Pour Hammers of Fate, le chemin est similaire à celui de ToE, à la différence près qu'on utilise le dossier H5A1 au lieu de H5A2

- /UI/H5A1/Icons/Creatures/Faction/Creature.(Texture).xdb

Dans Heroes V de base, le chemin est complètement différent et ressemble souvent à celui-ci (exemple pour l'icône la plus grande) :

- /Textures/Interface/ComatArena/Faces/Faction/Creature/icon_128.(Texture).xdb

- /Characters/Creatures/Faction/Creature.(Character).xdb : ce fichier a également un emplacement similaire à ceux de la version ToE. Pour les fichiers de Hammers of Fate, le contenu est également comparable.

Tous les fichiers dépendant de ce fichier ont des emplacement et des structures similaires à ToE pour HoF. Par contre, les fichiers de la version de base sont beaucoup plu morcelés et placés dans des répertoires différents.

La liste de répertoires à lister ici devient un peu (voire très) longue, nous allons donc éviter de nous torturer l'esprit plus avant et juste faire une petite liste des différentes répertoires existants qui pourront être utilisés dans les différents fichiers en essayant de les mettre dans l'ordre d'appel :

_(Model) : contient les fichiers des modèles 3D (LOD et arena) appelés depuis le fichier ci-dessus
_(AnimSet) : contient les fichiers d'animation (appelés depuis le fichier ci-dessus)

_(Geometry) : contient les fichiers de Geometry (appelés depuis _(Model))
_(AIGeometry) : contient les fichiers de géométrie avancée (appelés depuis _(Geometry)

_(Skeleton) : contient les fichiers de Squelette (appelés depuis _(Model))

Textures : contient les fichiers de textures (appelés depuis _(Model) )

_(BasicSkelAnim) : contient les fichiers d'animation du squelette (appelés depuis _(AnimSet)

Remarque importante : Les fichiers Tribes of the East sont relativement bien organisés et regroupés et suivent toujours (enfin, souvent...) le même schéma expliqué précédemment, il est donc assez facile de travailler avec. Les fichiers Hammers of Fate ont un semblant d'organisation, mais il arrive fréquemment que certains fichiers se baladent dans des répertoires où on ne les aurait pas attendus... Quant aux fichiers de la version de base, ils sont très souvent désorganisés, les chemins d'accès standards ne sont pas respectés, les dossiers ou même les noms de fichiers sont quelquefois différents pour la même créature ou la même faction, cumulant souvent des fautes de frappes avec des incertitudes sur le noms à utiliser (par exemple la sylve utilise des dossiers nommés Rempart, d'autres nommés Rampart, d'autres nommés Preserve et enfin certains nommés Preseve... difficile de s'y retrouver).

De plus, cette version utilise souvent des fichiers issus des données de tests, qui n'ont pas été réorganisés pour l'assemblage de la version finale. En particulier, de nombreux fichiers de texture (et surtout ceux du Havre) sont accessibles par des chemins d'accès obscurs du type "\Textures\auto-imported_______320\dev\Test\TMPcharacters\Angel"...

Ainsi, le meilleur moyen reste de partir du premier fichier listé ci-dessus, qui lui ne change jamais d'emplacement, et de suivre les différents liens. C'est la seule solution viable pour retrouver à coup sûr tous les fichiers définissant une créature.



[center]=============== NOTES ===============[/center]

* Note 1 : Les fichiers LOD déterminent l'apparence de la créature sur la carte d'une façon différente de son apparence sur le champ de bataille. Cette distinction entre les modèles LOD et les modèle que nous appellerons "arena" rend le travail plus compliqué car tous les modèles sont alors en double.

Cette distinction a été abandonnée dans ToE, tous les fichiers utilisant alors les mêmes modèles. Une façon rapide de se simplifier le travail consiste alors à modifier les références de fichiers dans le fichier MapObjects et les remplacer par les références du fichiers GameMechanics/CreatureVisual/.

* Note 2 : En cas de modification, vous admettrez qu'il parait ennuyeux d'avoir à modifier 4 icônes identiques dont juste la taille est différente. En fait, comme précisé ci-dessus, seule la plus grande icône ( <Icon128> ) est nécessaire, il suffira donc de supprimer les liens vers les autres pour se simplifier la tâche ^^.

[center]=============== BONUS ===============[/center]

Et voilà un petit bonus qui vous simplifiera sans doute la tâche si vous vous retrouvez avec certains fichiers incompréhensibles...

Dans l'organisation "normale" des fichiers, chaque fichier .xdb comporte des liens vers d'autres fichiers qui comportent des liens vers d'autres fichiers qui comportent des liens..... etc.

Il arrive cependant qu'à la place des liens, le contenu du fichier qui devrait être séparé apparaît directement dans le fichier qui devrait contenir un lien. Par exemple, une organisation "normale ressemblant à ça :

Fichier 1 :
Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
   <Fichier1>
      <Balise1 href="fichier.xdb#xpointer(/Balise)"/>
   </Fichier1>


Fichier 2 :
Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
   <Fichier2>
      <Balise2>0<Balise2>
      <Balise3>15<Balise3>
      <Balise4>true<Balise4>
      <Balise5>1<Balise5>
      <Balise6>0<Balise6>
   </Fichier2>


... peut ressembler à ceci :

Fichier 1 :
Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
   <Fichier1>
      <Balise1 href="#n:inline(Balise)">
         <Fichier2>
            <Balise2>0<Balise2>
            <Balise3>15<Balise3>
            <Balise4>true<Balise4>
            <Balise5>1<Balise5>
            <Balise6>0<Balise6>
         </Fichier2>
      </Balise>
   </Fichier1>


comme vous le voyez, le contenu du fichier 2 est en fait inclus dans le fichier 1. Ici, l'exemple est simple, mais il arrive que le code en devienne illisible, surtout quand plusieurs liens les uns derrière les autres sont remplacés par du code inclus dans le premier fichier.

Dans ce cas-là, si vous vous sentez suffisamment à l'aise avec la syntaxe xml, il est souvent bien pratique de diviser la structure et recréer les différents fichiers inclus les uns dans les autres.
Modifié en dernier par Morrock le Mer 13 Aoû 2008, 17:19, modifié 21 fois.
Ci-gît la signature de Morrock, exterminée par une défaillance de disque dur...
Avatar de l’utilisateur
Morrock
Grand Maître
Grand Maître
Administrateur
Administrateur
 
Messages: 3114
Enregistré le: Ven 9 Juin 2006, 12:24
Localisation: Erre dans les couloirs du châteaux à la recherche de chair fraîche

3 - Créer une nouvelle créature en copiant une ancienne

Messagepar Morrock » Dim 17 Fév 2008, 13:13

3 - Créer une nouvelle créature en copiant une ancienne

Nous allons ici nous placer dans l'hypothèse où vous voulez ajouter une nouvelle créature au jeu en utilisant le NCF (voir la page du projet). Nous allons pour le moment créer une copie d'une créature existante sans lui apporter la moindre modification.

Dans la suite de ce chapitre, les données en vert représenteront l'ancienne créature et les données en bleu la nouvelle.

3.1 - Copie uniquement des fichiers essentiels pour définir une nouvelle créature


Nous allons commencer simple en copiant une créature dont les fichiers ne seront pas difficile d'accès car ils respectent tous le schéma général d'organisation présenté en 2.1. Et pour rester dans le concret, nous allons nous baser sur un exemple : prenons les Femmes-Médecines.

Etape 1 : Choisir un emplacement (identifiant)

Tout d'abord, pour créer une nouvelle créature, nous devons choisir un emplacement où la mettre. En effet, notre créature ne sera reconnu que si elle utilise un emplacement prévu par le jeu pour recevoir une créature. Grâce au NCF, de nombreux nouveaux emplacements libres ont été créés, nous avons donc le choix. Cet emplacement correspond à un identifiant qui permet de reconnaître la créature en lui donnant un nom unique.

Cet emplacement pourra être modifié par la suite si vous voulez diffuser votre créature (nous le ferons à la fin de ce chapitre), nous allons donc pour le moment utiliser un emplacement disponible : celui du Yeti (comme le savez peut-être - ou pas ^^ - le Yeti avait été prévu, mais n'a finalement pas été fait, ce qui crée donc dans le jeu un emplacement vide que nous pouvons aisément utiliser comme emplacement de test). L'emplacement du Yeti se nomme "CREATURE_SNOW_APE".

Pour créer notre créature, nous allons commencer par créer un dossier qui contiendra tous ces fichiers. Appelons-le par exemple Shaman_copy (au passage, rappelons que les femmes-médecines se nomment shaman dans la version originale du jeu ^^).

Etape 2 : Repérer le fichier de base et le copier

Une fois l'emplacement choisit, il nous faut copier le fichier de base de notre créature. Rappelons qu'une fois ce fichier repéré, nous avons accès à tous les autres fichiers de la créature.

En suivant le schéma du chapitre 2, nous trouverons assez vite le fichier suivant :

- /GameMechanics/Creature/Creatures/Orcs/Shaman1.xdb

Dans notre dossier Shaman_copy, créons maintenant l'arborescence pour notre nouvelle créature : Shaman_copy/GameMechanics/Creature/Creatures/Neutrals

Et pour finir, nous allons copier dans ce dossier le fichier Shaman1.xdb et le renommer en SnowApe.xdb (pour ainsi prendre la place du Yéti). Nous obtenons donc :

- /GameMechanics/Creature/Creatures/Neutrals/SnowApe.xdb

Etape 3 : Copier les fichiers essentiels pour définir la créature

Le fichier de base ne suffit pas pour copier une créature, il faut au moins copier les fichiers définissant l'apparence de la créature. Pour cela, nous allons regarder dans le fichier que nous avons copié dans l'étape 2.

Comme expliqué dans le chapitre 1, ce fichier contient deux liens importants (en l'occurence aux lignes 47 et 51) :

- <MonsterShared href="/MapObjects/Stronghold/Shaman.(AdvMapMonsterShared).xdb#xpointer(/AdvMapMonsterShared)"/>
- <Visual href="/GameMechanics/CreatureVisual/Creatures/Orcs/Shaman1.xdb#xpointer(/CreatureVisual)"/>

Nous allons donc aller chercher ces fichiers et les copier dans de nouveaux répertoires de notre dossier de travail et les renommer, puis nous allons modifier les liens dans le premier fichier afin que ceux-ci pointent vers les fichiers que nous avons copié :

- <MonsterShared href="/MapObjects/Neutral/SnowApe.(AdvMapMonsterShared).xdb#xpointer(/AdvMapMonsterShared)"/>
- <Visual href="/GameMechanics/CreatureVisual/Creatures/Neutrals/SnowApe.xdb#xpointer(/CreatureVisual)"/>

Note : Nous avons choisi ici de conserver l'arborescence telle que nous l'avons décrite dans le chapitre 1 afin de s'y retrouver plus facilement. Cependant, vous pouvez placer ces deux fichiers dans les répertoires que vous souhaitez, l'essentiel étant que les liens dans le premier fichier pointent bien vers les fichiers que vous avez copiés.

Nous avons donc maintenant trois fichiers situés dans trois répertoires différents, et qui sont liés entre eux grâce au premier fichier. Il ne nous reste plus qu'à définir notre créature pour qu'elle obtienne sa propre identité.

Le fichier situé dans GameMechanics/CreatureVisual modifie l'apparence de la créature. Or nous voulons pour le moment faire une copie exacte de celle-ci, nous n'avons donc pas besoin de le modifier. Par contre, il ne sera pas pris en compte par le jeu s'il n'a pas une date de modification plus récente. Pour remédier à ce problème, il suffit de l'ouvrir et de le ré-enregistrer sur lui-même en utilisant enregistrer sous par exemple.

Le fichier dans MapObjects par contre contient un élément essentiel à modifier, car c'est ce fichier qui va contenir l'emplacement (l'identifiant) de notre créature. Nous allons donc ouvrir le fichier, qui contient en ligne 34 le code suivant :

- <Creature>CREATURE_SHAMAN</Creature>

que nous allons remplacer par le code suivant :

- <Creature>CREATURE_SNOW_APE</Creature>

Désormais, nos deux créatures sont bien différenciées, elles utilisent chacune un emplacement différent. La créature est utilisable telle qu'elle. Vous pouvez essayer en utilisant les codes pour ajouter à votre héros des Yétis (en utilisant le code CREATURE_SNOW_APE), vous aurez des femmes-médecines à la place. Par contre, vous verrez aussi que lorsque vous affichez leur profil, elles apparaissent un peu éloignées sur la droite de votre écran...

A la fin de cette étape, vous devez avoir un dossier de travail contenant les mêmes fichier que cette archive.

Etape 4 : Rendre la créature utilisable dans le NCF

Ca y est, la créature est copiée, il ne reste plus qu'à la diffuser... mais il y a encore un petit peu de travail avant ça :

1/ Pour l'instant, notre créature utilise l'emplacement du Yéti. Nous allons en faire une créature vraiment différente en lui donnant son propre identifiant :

" - Sfidanza, il me faudrait un emplacement de créature libre stp
- Pas de problème, Creature_XXX par Machin, c'est noté
- Merci ^^"

Et voilà, notre créature a désormais son propre identifiant : le numéro XXX (notons au passage que dans un cas réel XXX représente une suite de trois chiffres :icon_wink: , nous prendrons ici l'exemple de l'emplacement 273).

Pour faire bien, nous allons également différencier notre créature des femmes-médecines et nous allons lui donner un nom ... prenons par exemple Shadow_Daughter (Fille des Ombres en anglais... ^^)

2/ Remplacer les références au Yéti par notre propre identifiant :

- Renommer notre fichier de base en utlisant le nom suivant :
- /GameMechanics/Creature/Creatures/Neutrals/Creature_XXX.xdb

- Renommer nos deux autres fichiers en remplaçant SnowApe par le nom de notre créature (par exemple notre Shadow_Daughter), sans oublier de modifier les liens dans le premier fichier :

/MapObjects/Neutral/Shadow_Daughter.(AdvMapMonsterShared).xdb
/GameMechanics/CreatureVisual/Creatures/Neutrals/Shadow_Daughter.xdb

- Modifier le fichier MapObjects pour insérer notre nouvel identifiant à la place de l'identifiant du Yéti :

- <Creature>CREATURE_XXX</Creature>

3/ Afficher correctement la créature :

Si vous avez testé la créature précédente, vous avez sans doute vu ce dont j'ai parlé précédemment :
Par contre, vous verrez aussi que lorsque vous affichez leur profil, elles apparaissent un peu éloignées sur la droite de votre écran...

Ceci est du au fait que le jeu ne sait pas quelle "caméra" il doit utiliser pour l'afficher. Nous allons donc simplement lui donner un fichier pour définir cette caméra.

Comme précédemment, nous allons copier le fichier défini pour les femmes-médecines. Nous allons donc aller chercher le fichier suivant :

/Cameras/Interface/HireCreatures/Orcs/T4_Shaman.(Camera).xdb

Et nous allons le copier dans notre dossier de travail et le renommer pour obtenir le fichier suivant :

/Cameras/Interface/HireCreatures/Creature_XXX.(Camera).xdb

La créature est maintenant utilisable, vous n'avez plus qu'à compresser vos fichiers dans une archive .zip, la renommer en .h5u et la placer dans le répertoire UserMODs de votre répertoire Heroes, et vous pourrez grâce aux cheat codes ajouter à votre héros la CREATURE_273, qui ne sera rien moins que votre copie de la femme-médecine.

Votre archive doit à cette étape être identique à cette archive.

Mais vous admettrez que diffuser une créature qui existe déjà est d'un intérêt limité... il vaudrait donc mieux la modifier pour en faire quelquechose de vraiment nouveau, non?

3.2 - Copie de tous les fichiers pour pouvoir ensuite les modifier


Etape 5 : Copie des autres fichiers de la créature

Pour pouvoir modifier la créature, il nous faut tout d'abord créer des copies de tous les fichiers utilisés. Si cette copie n'est pas faite et qu'on modifie les fichiers originaux, cela affectera également la créature originale...

Encore une fois, une méthode simple est de suivre les liens dans chaque fichier et de recopier les fichiers vers lesquels ceux-ci pointent. Pour chacun des liens trouvés dans les fichiers, il faut :

- Recopier le fichier ciblé dans un répertoire adapté (ne pas oublier de changer le nom du dossier de faction le cas échéant - par exemple ici nous plaçons tout dans le dossier des créatures neutres)
- Renommer le fichier
- Modifier le lien pointant vers ce fichier

Voici la liste des fichiers que vous devrez trouver en suivant les fichiers de la femme-médecine et la façon dont ils doivent être modifiés :

A partir du fichier dans GameMechanics/Creature Visual :

/GameMechanics/CreatureVisual/Creatures/Orcs/Shaman1.xdb

Code: Tout sélectionner
   <CreatureNameFileRef href="/Text/Game/Creatures/Orcs/Shaman1.txt"/>
   <CreatureAbilitiesFileRef href="/Text/Game/Creatures/Orcs/Shaman1_Abils.txt"/>
   <DescriptionFileRef href="/Text/Game/Creatures/Orcs/Shaman1_Desc.txt"/>
   [...]
   <Icon128 href="/UI/H5A2/Icons/Creatures/Orcs/Shaman.(Texture).xdb#xpointer(/Texture)"/>
   <AnimCharacter href="/Characters/Creatures/Orcs/T4_Orc/T4a_Shaman.(Character).xdb#xpointer(/Character)"/>


/GameMechanics/CreatureVisual/Creatures/Neutrals/Shadow_Daughter.xdb

Code: Tout sélectionner
   <CreatureNameFileRef href="/Text/Game/Creatures/Neutrals/Shadow_Daughter.txt"/>
   <CreatureAbilitiesFileRef />
   <DescriptionFileRef href="/Text/Game/Creatures/Neutrals/Shadow_Daughter_Desc.txt"/>
   [...]
   <Icon128 href="/UI/H5A2/Icons/Creatures/Neutrals/Shadow_Daughter.(Texture).xdb#xpointer(/Texture)"/>
   <AnimCharacter href="/Characters/Creatures/Neutrals/Shadow_Daughter.(Character).xdb#xpointer(/Character)"/>


/Text/Game/Creatures/Orcs/Shaman1.txt

/Text/Game/Creatures/Neutrals/Shadow_Daughter.txt

/Text/Game/Creatures/Orcs/Shaman1_Desc.txt

/Text/Game/Creatures/Neutrals/Shadow_Daughter_Desc.txt

/UI/H5A2/Icons/Creatures/Neutrals/Shaman.(Texture).xdb

Code: Tout sélectionner
   <DestName href="Shaman.(Texture).dds"/>


/UI/H5A2/Icons/Creatures/Neutrals/Shadow_Daughter.(Texture).xdb

Code: Tout sélectionner
   <DestName href="Shadow_Daughter.(Texture).dds"/>


Après avoir copié et modifié ce fichier, n'oubliez pas de copier et de renommer le fichier .dds référencé par le lien.

/Characters/Creatures/Orcs/T4_Orc/T4a_Shaman.(Character).xdb

Code: Tout sélectionner
   <Model href="T4a_Shaman.xdb#xpointer(/Model)"/>
   <ArenaAnimSet href="T4a_Shaman-arena.xdb#xpointer(/AnimSet)"/>


/Characters/Creatures/Neutrals/Shadow_Daughter.(Character).xdb

Code: Tout sélectionner
   <Model href="Shadow_Daughter.xdb#xpointer(/Model)"/>
   <ArenaAnimSet href="Shadow_Daughter-arena.xdb#xpointer(/AnimSet)"/>


Nous reviendrons sur les deux fichiers du code ci-dessus un peu plus tard. Passons maintenant aux fichiers trouvés à partir du fichier dans MapObjects :

/MapObjects/Stronghold/Shaman.(AdvMapMonsterShared).xdb

Code: Tout sélectionner
   <Model href="/Characters/Creatures/Orcs/T4_Orc/T4a_Shaman.xdb#xpointer(/Model)"/>
   <AnimSet href="/Characters/Creatures/Orcs/T4_Orc/T4a_Shaman-arena.xdb#xpointer(/AnimSet)"/>
   [...]
   <Item href="/Text/Game/Creatures/Orcs/Shaman.txt"/>


/MapObjects/Neutral/Shadow_Daughter.(AdvMapMonsterShared).xdb

Code: Tout sélectionner
   <Model href="/Characters/Creatures/Neutrals/Shadow_Daughter.xdb#xpointer(/Model)"/>
   <AnimSet href="/Characters/Creatures/Neutrals/Shadow_Daughter-arena.xdb#xpointer(/AnimSet)"/>
   [...]
   <Item href="/Text/Game/Creatures/Neutrals/Shadow_Daughter.txt"/>


Le fichier MapObjects pointe vers les deux même fichiers auxquels nous nous étions arrêtés ci-dessus. Nous pouvons donc reprendre ici à partir d'eux :

/Characters/Creatures/Orcs/T4_Orc/T4a_Shaman.xdb

/Characters/Creatures/Neutrals/Shadow_Daughter.xdb

/Characters/Creatures/Orcs/T4_Orc/T4a_Shaman-arena.xdb

/Characters/Creatures/Neutrals/Shadow_Daughter-arena.xdb

A partir de ceux deux fichiers, tous les autres fichiers se trouvent dans le même répertoire, il suffit donc de copier tous les fichiers de la femme-médecine , de les renommer et de changer dans chacun d'entre eux les liens vers les autres fichiers en remplaçant à chaque fois "T4a_Shaman" par notre "Shadow_Daughter". Ceci concerne les fichiers .xdb et .dds du dossier (et dans les fichiers, les liens pointant vers des fichiers qui ne sont pas des fichiers .xdb ou .dds ne doivent pas être modifiés), il n'y a rien à modifier pour le moment dans les fichiers .dds.

Attention : à cette étape, ne modifiez pas les liens qui se trouvent dans les fichiers d'animations dans les balises <Effect> et <Sound>. Ces liens pointent vers des fichiers dont nous n'avons pas encore parlé et qui nous permettront plus tard de modifier les effets qui sont associés à la créature.

A la fin de cette étape, vous pouvez en compressant votre dossier obtenir cette archive. Elle ne fait rien de plus que celle d'avant si ce n'est contenir beaucoup plus de fichiers, mais c'est une étape essentielle pour pouvoir ensuite modifier la créature.

3.3 - Cas d'une créature moins bien organisée...


Dans le cas d'une créature moins bien organisée (prenons au hasard l'exemple de l'Ange), il est important de bien suivre les liens des différents fichiers les uns vers les autres.

De plus, si vous voulez copier une créature qui possède un modèle LOD, vous pouvez ne pas copier les fichiers et faire pointer le fichier dans MapObjects vers les même fichiers Model et AnimSet que le fichier qui se trouve dans Characters, cela vous simplifiera énormément la tâche en supprimant pas mal de fichiers - et particulièrement des doubles de fichiers déjà existants.

De même, si la créature que vous copiez se sert de plusieurs icônes, vous pouvez ne garder que la plus grande (Icon128) en remplaçant les liens dans les autres balises par le code suivant :

Code: Tout sélectionner
<Icon />
<Icon32 />
<Icon64 />


Et enfin, si vous copiez une créature qui utilise tous les dossiers dont nous avons parlé à la fin du chapitre précédent (comme _(Model), _(AnimSet) etc.), vous pouvez simplifier votre arborescence en mettant tous ces fichiers dans le répertoire Characters/Creatures/Faction/, copiant ainsi le modèle des créatures de ToE (et obtenant ainsi la même organisation que celle de la femme-médecine copiée ci-dessus).
Modifié en dernier par Morrock le Mer 13 Aoû 2008, 17:55, modifié 19 fois.
Ci-gît la signature de Morrock, exterminée par une défaillance de disque dur...
Avatar de l’utilisateur
Morrock
Grand Maître
Grand Maître
Administrateur
Administrateur
 
Messages: 3114
Enregistré le: Ven 9 Juin 2006, 12:24
Localisation: Erre dans les couloirs du châteaux à la recherche de chair fraîche

4 - Changer les caractéristiques d'une créatures

Messagepar Morrock » Dim 17 Fév 2008, 13:13

4 - Changer les caractéristiques d'une créatures

Cette partie est en même temps la plus simple et la plus compliquée. Pourquoi un tel paradoxe? Ceci se résume en deux très bonnes raisons :

- Modifier les caractéristiques est techniquement très simple : il n'y a qu'un seul fichier à modifier.

- Créer une nouvelle créature demande par contre qu'elle puisse s'insérer dans le jeu sans créer de déséquilibre trop important. Les caractéristiques de la créature doivent donc avoir été réfléchies pour lui permettre d'avoir des forces et des faiblesses, et être d'une puissance proche des autres créatures du même niveau. Cette partie peut être assez longue, surtout si on n'est pas accro aux chiffres.

4.1 - Structure du fichier à modifier

Toutes les caractéristiques de la créature se situent dans le fichier de base de la créature (GameMechanics/Creature/Creatures/Faction/Creature.xdb). Nous allons donc passer ligne par ligne ce fichier pour voir ce qui nous intéresse, en prenant l'exemple de notre copie de la femme-médecine. Voici le code du fichier en entier :

Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<Creature>
   <AttackSkill>5</AttackSkill>
   <DefenceSkill>5</DefenceSkill>
   <Shots>0</Shots>
   <MinDamage>6</MinDamage>
   <MaxDamage>9</MaxDamage>
   <Speed>5</Speed>
   <Initiative>11</Initiative>
   <Flying>false</Flying>
   <Health>30</Health>
   <KnownSpells>
      <Item>
         <Spell>SPELL_SLOW</Spell>
         <Mastery>MASTERY_ADVANCED</Mastery>
      </Item>
      <Item>
         <Spell>SPELL_HASTE</Spell>
         <Mastery>MASTERY_ADVANCED</Mastery>
      </Item>
   </KnownSpells>
   <SpellPoints>8</SpellPoints>
   <SpellPoints1>0</SpellPoints1>
   <SpellPoints2>0</SpellPoints2>
   <Exp>35</Exp>
   <Power>492</Power>
   <TimeToCommand>10</TimeToCommand>
   <CreatureTier>4</CreatureTier>
   <Upgrade>false</Upgrade>
   <PairCreature>CREATURE_SHAMAN_WITCH</PairCreature>
   <CreatureTown>TOWN_STRONGHOLD</CreatureTown>
   <MagicElement>
      <First>ELEMENT_EARTH</First>
      <Second>ELEMENT_NONE</Second>
   </MagicElement>
   <WeeklyGrowth>5</WeeklyGrowth>
   <Cost>
      <Wood>0</Wood>
      <Ore>0</Ore>
      <Mercury>0</Mercury>
      <Crystal>0</Crystal>
      <Sulfur>0</Sulfur>
      <Gem>0</Gem>
      <Gold>260</Gold>
   </Cost>
   <SubjectOfRandomGeneration>true</SubjectOfRandomGeneration>
   <MonsterShared href="/MapObjects/Neutrals/Shadow_Daughter.(AdvMapMonsterShared).xdb#xpointer(/AdvMapMonsterShared)"/>
   <CombatSize>1</CombatSize>
   <PatternAttack/>
   <flybySequence/>
   <Visual href="/GameMechanics/CreatureVisual/Creatures/Neutrals/Shadow_Daughter.xdb#xpointer(/CreatureVisual)"/>
   <Range>0</Range>
   <BaseCreature>CREATURE_UNKNOWN</BaseCreature>
   <Upgrades>
      <Item>CREATURE_SHAMAN_WITCH</Item>
      <Item>CREATURE_SHAMAN_HAG</Item>
   </Upgrades>
   <Abilities>
      <Item>ABILITY_DEMON_RAGED</Item>
   </Abilities>
</Creature>


A partir de ce code, nous pouvons étudier les différentes balises qu'il contient pour voir à quoi elles servent. La plupart d'entre elles sont très intuitives (pour ceux que la notion de balise déroute un peu, voir la note en bas de ce message) :

<?xml version="1.0" encoding="UTF-8"?> : Cette balise indique uniquement le type de fichier.
<Creature> : Indique le début du contenu du fichier
<AttackSkill>5</AttackSkill> : Attaque de la créature
<DefenceSkill>5</DefenceSkill> : Défense de la créature
<Shots>0</Shots> : Nombre de tirs (0 si la créature ne tire pas)
<MinDamage>6</MinDamage> : Dommages minimaux infligés par la créature
<MaxDamage>9</MaxDamage> : Dommages maximaux infligés par la créature
<Speed>5</Speed> : Vitesse de la créature
<Initiative>11</Initiative> : Initiative de la créature
<Flying>false</Flying> : true si la créature vole (ou se téléporte), false sinon
<Health>30</Health> : Points de Vie de la créature
<KnownSpells> : Début du livre de sorts de la créature
<Item> : Début d'un sort (une balise Item sera ajoutée pour chaque sort connu)
<Spell>SPELL_SLOW</Spell> : Nom du sort
<Mastery>MASTERY_ADVANCED</Mastery> : Niveau de maîtrise du sort
</Item> : Fin du sort
[...]
</KnownSpells> : Fin du livre de sort
<SpellPoints>8</SpellPoints> : Points de magies
<SpellPoints1>0</SpellPoints1> : Nombre de fois où la créature peut utiliser sa capacité spéciale (l'utilité de ce chiffre dépend des capacités spéciales)
<SpellPoints2>0</SpellPoints2> : Nombre de fois où la créature peut utiliser sa capacité raciale (utile uniquement pour le déphasage apparemment, toutes les créatures inferno l'ont à 1, toutes les autres à 0)
<Exp>35</Exp> : Points d'expérience gagnés en tuant cette créature
<Power>492</Power> : Puissance de la créature (est utilisé pour déterminer automatiquement la puissance des armées par l'ordinateur)
<TimeToCommand>10</TimeToCommand> : Temps dont dispose le joueur pour faire agir la créature en mode minuté
<CreatureTier>4</CreatureTier> : Niveau de la créature
<Upgrade>false</Upgrade> : true si la créature est une évolution, false si elle ne l'est pas - Cette balise ne semble pas utilisée par le jeu.
<PairCreature>CREATURE_SHAMAN_WITCH</PairCreature> : Indique une créature "liée" à celle-ci (sa première évolution si c'est la créature de base, ou la créature de base si c'est une évolution) - Cette balise ne semble pas utilisée par le jeu.
<CreatureTown>TOWN_STRONGHOLD</CreatureTown> : Faction de la créature
<MagicElement> : Début d'annonce des éléments de la créature (chaque créature peut être associée à deux éléments)
<First>ELEMENT_EARTH</First> : Premier élément
<Second>ELEMENT_NONE</Second> : Second élément
</MagicElement> : Fin d'annonce des éléments de la créature
<WeeklyGrowth>5</WeeklyGrowth> : Croissance quotidienne
<Cost> : Début du prix de la créature
<Wood>0</Wood> : Prix en Bois
<Ore>0</Ore> : Prix en Pierre
<Mercury>0</Mercury> : Prix en Mercure
<Crystal>0</Crystal> : Prix en Cristal
<Sulfur>0</Sulfur> : Prix en Souffre
<Gem>0</Gem> : Prix en Gemmes
<Gold>260</Gold> : Prix en Or
</Cost> : Fin du prix
<SubjectOfRandomGeneration>true</SubjectOfRandomGeneration> : true si la créature peut être placée dans les créature aléatoires, false sinon.
<MonsterShared [...] /> : lien vers le fichier MapObjects (vu précédemment)
<CombatSize>1</CombatSize> : Taille sur le champ de bataille
<PatternAttack/> : Est quelquefois utilisée pour définir un mouvement d'attaque de la créature - ne pas le modifier (sauf si vous voulez expérimenter ^^)
<flybySequence/> : Est quelquefois utilisée pour définir un mouvement de vol de la créature - ne pas le modifier (sauf si vous voulez expérimenter ^^)
<Visual [...] /> : Lien vers le fichier Visuel de la créature (vu précédemment)
<Range>0</Range> : Portée de la créature
<BaseCreature>CREATURE_UNKNOWN</BaseCreature> : Identifiant de la créature de base si c'est une créature évoluée (remplacé par CREATURE_UNKNOWN si c'est une créature de base)
[color=green]<Upgrades> :
Début d'annonce des évolutions de la créature
<Item>CREATURE_SHAMAN_WITCH</Item> : Identifiant de la créature évoluée. Une nouvelle balise <Item> sera crée pour chaque évolution (chaque créature ayant deux évolutions, il y aura normalement deux balises <Item>).
</Upgrades> : Fin des évolution. Dans le cas où la créature est déjà évoluée, les balises de début de et de fin d'upgrade seront condensées en une seule : <Upgrade /> et il n'y aura donc pas de balise <Item>
<Abilities> : Début des capacités de la créature
<Item>ABILITY_DEMON_RAGED</Item> : Identifiant d'une capacité. Une nouvelle balise <Item> sera créée pour chaque capacité. Les capacités Tireur, Est quelquefois utilisée pour définir un mouvement d'attaque de la créature - Lanceur de Sorts et Volant ne doivent pas être mises ici, elles sont définies dans des balises précédentes.
</Abilities> : Fin des capacités
</Creature> : Fin de la créature

4.2 - Eléments de modification

Certains éléments peuvent poser des difficultés de modifications car ils utilisent des identifiants, qui ne sont pas forcément connus. Voici comment s'y prendre pour retrouver facilement les identifiants à utiliser :

Pour les identifiants des Sorts et des Capacités, il y a plusieurs solutions :
- Vous pouvez aller regarder dans les fichiers d'autres créatures qui possèdent déjà le sort ou la capacité.
- Vous pouvez aller voir dans le fichier GameMechanics/RefTables/UndividedSpells.xdb, il référence tous les sorts et capacités, et définit tous les identifiants

Pour les niveaux de maîtrise des sorts, il n'y a pas cinquante choix :
MASTERY_NONE : Aucune maîtrise de la magie concernée
MASTERY_BASIC : Notions
MASTERY_ADVANCED : Pratique
MASTERY_EXPERT : Avancé

Pour les factions :
TOWN_NO_TYPE : Neutre
TOWN_HAVEN : Havre
TOWN_INFERNO : Inferno
TOWN_NECROMANCY : Necropole (ne me demandez pas pourquoi ils n'ont pas mis NECROPOLIS...)
TOWN_DUNGEON : Donjon
TOWN_PRESERVE : Sylve
TOWN_ACADEMY : Académie
TOWN_FORTRESS : Forteresse
TOWN_STRONGHOLD : Bastion

Pour les éléments de magie :
ELEMENT_NONE : Aucun
ELEMENT_FIRE : Feu
ELEMENT_WATER : Eau
ELEMENT_AIR : Air
ELEMENT_EARTH : Terre

Pour la portée de la créature (Range) :
0 : pas de tir
-1 : portée max (comme les mages)
-2 : portée partielle (comme les archers)

Notez au passage que même avec une portée de -1, la créature doit avoir la capacité ABILITY_NO_RANGE_PENALTY (pas de pénalité de portée)...

Et voilà, avec ça, vous pouvez maintenant modifier les caractéristiques et capacités de vos créatures.

=================================

** Note : les fichiers .xdb sont des fichiers qui utilisent le format xml. Ce format fonctionne à l'aide d'une suite de balises. Les balises vont deux par deux, il y a d'abord une balise ouvrante (ex : <Balise>), puis une balise fermante indiquée par un / portant le même nom (ex : </Balise>). Tout ce qui se trouve entre deux balises du même nom concerne la même chose (par exemple entre <AttackSkill> et </AttackSkill>, on trouvera toutes les informations concernant l'attaque) .

Certaines balises n'apparaissent qu'une fois (on ne voit pas de balise fermante). En fait, ces balises sont en même temps ouvrantes et fermantes, et elles affichent le symbole / à la fin (ex : <Balise />).

Une paire de balises peut inclure d'autres balises. Dans ce cas, les balises qui sont à l'intérieur définissent des sous-parties dans les balises extérieures. (ex : <Balise_extérieure> <Balise_intérieure> </Balise_intérieure> </Balise_extérieure>).
Modifié en dernier par Morrock le Mer 13 Aoû 2008, 17:55, modifié 6 fois.
Ci-gît la signature de Morrock, exterminée par une défaillance de disque dur...
Avatar de l’utilisateur
Morrock
Grand Maître
Grand Maître
Administrateur
Administrateur
 
Messages: 3114
Enregistré le: Ven 9 Juin 2006, 12:24
Localisation: Erre dans les couloirs du châteaux à la recherche de chair fraîche

5 - Modifier l'apparence d'une créature

Messagepar Morrock » Dim 17 Fév 2008, 13:14

5 - Modifier l'apparence d'une créature

Modifier l'apparence d'une créature peut consister en différentes opérations plus ou moins longues et complexes. La modification peut aller d'un changement simple de couleur à la modification complète de la texture de la créature, voire la suppression de certains morceaux.

Pour le moment, il est impossible de modifier la forme des créatures ou de créer de nouvelles formes, on doit se limiter à ce qui existe déjà.

5.1 - Outils nécessaires

Pour ce genre de modifications, nous allons avoir besoin de logiciels spécialisés dans le traitement d'image. Selon les outils dont vous disposez déjà (ou le prix que vous êtes prêts à mettre dedans si vous êtes vraiment très motivés), deux choix s'offrent à vous :

- Photoshop (la dernière version complète coûte plus de 1000 € si vous ne l'avez pas déjà chez vous)
- The GIMP (téléchargeable gratuitement sur le net, par exemple [ur=http://www.01net.com/telecharger/windows/Multimedia/creation_graphique/fiches/5245.html]ICI[/url])

Une fois que vous avez l'un de ces deux logiciels, il vous faut lui ajouter un plug-in lui permettant d'ouvrir et de modifier les fichiers .dds (souvenez-vous, nous en avons parlé précédemment, ce sont les fichiers qui contiennent les textures de nos créatures) :

- Pour Photoshop, vous le trouverez gratuitement sur ce site.
- Et pour GIMP, vous le trouverez gratuitement sur ce site.

A partir de là, il vous faut aussi savoir vous servir de ces logiciels, ce tutoriel considérera ce prérequis comme un acquis.

5.2 - Modifier une texture

A partir du moment où vous savez vous servir des logiciels cités précédemment, rien de bien compliqué :

- Vous ouvrez le fichier à modifier
- Vous le modifiez (sélectionnez, coupez, collez, rognez, ajoutez, jouez sur les contrastes, les balances de couleurs, les teintes, la saturation, ajoutez des effets... bref, faîtes-vous plaisir, le but est d'obtenir quelque chose de sympa ^^).
Attention cependant, les fichiers dds contiennent bien toutes les textures de vos créatures, mais aplaties, et quelquefois difficiles à remettre dans l'ordre. Prenez donc le temps de bien repérer quelle partie de la texture correspond à quelle partie de la créature.
- Une fois vos modification finies, vous l'enregistrez.

Jusque là, tout va bien, mais vous pouvez avoir quelques mauvaises surprises lors de l'enregistrement :

- Le format .dds ne supporte pas d'avoir plusieurs calques. Sous Photoshop, les différents calques visibles seront fusionnés, donc pas de gros problême, par contre sous GIMP, il ne conservera que le calque supérieur. Pensez donc à fusionner vos calques avant d'enregistrer.
- Le format .dds est un format multiple, contenant lui-même plusieurs sous-formats (compressés et non compressés) et comprenant plusieurs options d'enregistrement. Heroes V utilise deux de ces formats : les textures des créatures sont au format DXT3, et les autres textures au format ARGB8.
Si vous voulez être sûr du format à utiliser, ouvrez le fichier .xdb qui appelle directement votre texture. Ce fichier contient une ligne qui vous indique le format auquel doit être enregistré votre image : <Format>TF_DXT3</Format> pour DXT3 ou <Format>TF_8888</Format> pour ARGB8.
Pour les différentes options disponibles, rélgez-les comme sur les captures suivantes :

Pour GIMP (DXT3 puis ARGB8) :
Image

Image

Pour Photoshop (DXT3 puis ARGB8) :
Image

Image

Si les formats sont respectés, vos modifications devraient apparaître sur votre créature.


5.3 - Jouer avec la transparence

Si on prend l'exemple des Lames des Arcances réalisés par Radar de Heroes Community, il s'agit (vous le savez sans doute déjà) d'un Danse-lame dont le corps a été effacé. Techniquement, son corps existe en fait toujours, mais il est totalement transparent.

Si on prend maintenant l'exemple des Ames Perdues, réalisées par ... moi-même (satisfaction personnelle inside :p), leur corps est translucide (c'était d'ailleurs déjà le cas de la seconde évolution du Djinn).

Pour réaliser de tels effets, c'est en réalité plutôt simple, mais il y a plusieurs paramètres à considérer :

Tout d'abord, sous Photoshop ou GIMP, vous pouvez travailler avec la transparence de votre image (et son canal alpha) pour en effacer des parties ou les rendre translucides.
Bien souvent, cela suffit pour faire disparaitre des morceaux de créature (mais pas toujours), et bien souvent, cela ne suffit pas pour les rendre translucides (mais quelquefois ça marche).

Pourquoi ça ne marche pas tout le temps? Tout simplement parce que le jeu sait ç l'avance si la texture va être opaque, translucide ou si elle contient des parties transparentes. Il nous faut donc régler ce paramètre qui se trouve le fichier Material (si on remonte les fichiers depuis la texture, vous avez le fichier .dds, un fichier .xdb qui appelle ce .dds, et un fichier .xdb qui appelle le .xdb qui appelle le .dds - tout le monde a suivi? - c'est ce fichier là, il est souvent noté .(Material).xdb ).

Dans ce fichier, nous allons chercher la balise suivante : <AlphaMode>. Cette balise permet de dire au jeu comment il doit traiter la texture qui arrive. Elle peut prendre plusieurs valeurs :

<AlphaMode>AM_OPAQUE</AlphaMode> : la texture sera considérée opaque, donc quelle que soit la valeur de transparence. Tout sera affiché (s'il n'y a pas de couleur, l'image affichera du noir.
<AlphaMode>AM_ALPHA_TEST</AlphaMode> : la texture sera considérée comme un mélange opaque - transparent. Toute partie de l'image dont la transparence est supérieur à 50% sera affichée opaque, et le reste sera complètement transparent.
<AlphaMode>AM_TRANSPARENT</AlphaMode> : la texture sera considérée comme translucide, chaque partie de texture aura exactement la transparence définie dans l'image.
<AlphaMode>AM_OVERLAY_ZWRITE</AlphaMode> : pour les tests que j'ai fait, cette valeur semble donner les mêmes effets que AM_TRANSPARENT... je ne sais pas où est la différence.

A ce stade, vous avez de quoi créer complètement une nouvelle créature. Il ne vous reste qu'à lui ajouter des effets.
Modifié en dernier par Morrock le Mer 13 Aoû 2008, 17:55, modifié 5 fois.
Ci-gît la signature de Morrock, exterminée par une défaillance de disque dur...
Avatar de l’utilisateur
Morrock
Grand Maître
Grand Maître
Administrateur
Administrateur
 
Messages: 3114
Enregistré le: Ven 9 Juin 2006, 12:24
Localisation: Erre dans les couloirs du châteaux à la recherche de chair fraîche

6 - Ajouter ou modifier les effets d'une créature

Messagepar Morrock » Dim 17 Fév 2008, 13:14

6 - Ajouter ou modifier les effets d'une créature

Là, on entre dans le domaine du subtil... les résultats que l'on peut obtenir en jouant avec les effets sont très sympathiques, mais la complexité qui va de pair est elle aussi très sympathique :icon_mrgreen:

Nous parlerons tout d'abord des effets visuels, puis nous verrons les effets sonores à la fin.

6.1 - Les fichiers d'effet

Revenons au début de ce tutoriel : nous avons fait la liste de tous les fichiers utilisés par les créatures. Tous? Non, un petit village gaulois résiste encore et toujours.... oh pardon, je me suis trompé de script.

Je disais donc : Tous? Non, rappelez-vous cette phrase :

Attention : à cette étape, ne modifiez pas les liens qui se trouvent dans les fichiers d'animations dans les balises <Effect> et <Sound>. Ces liens pointent vers des fichiers dont nous n'avons pas encore parlé et qui nous permettront plus tard de modifier les effets qui sont associés à la créature.


Eh bien, c'est le moment, nous allons utiliser ces fichiers. Mais commençons par le commencement. Nous allons partir du fichier définissant toutes les animations de la créature. Ce fichier, nommé normalement Creature-arena.xdb (si vous avez suivi le modèle précédent), contient le code suivant (reprenons notre exemple de la copie de la femme-médecine) :

Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<AnimSet>
   <animations>
      <Item>
         <Kind>idle00</Kind>
         <Anim href="T4a_Shaman-arena-idle00.xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
      <Item>
         <Kind>attack00</Kind>
         <Anim href="T4a_Shaman-arena-attack00.xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
      <Item>
         <Kind>death</Kind>
         <Anim href="T4a_Shaman-arena-death.xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
      <Item>
         <Kind>happy</Kind>
         <Anim href="T4a_Shaman-arena-happy.xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
      <Item>
         <Kind>hit</Kind>
         <Anim href="T4a_Shaman-arena-hit.xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
      <Item>
         <Kind>move</Kind>
         <Anim href="T4a_Shaman-arena-move.xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
      <Item>
         <Kind>stir00</Kind>
         <Anim href="T4a_Shaman-arena-steer.xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
      <Item>
         <Kind>cast</Kind>
         <Anim href="T4a_Shaman-arena-cast.(BasicSkelAnim).xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
      <Item>
         <Kind>specability</Kind>
         <Anim href="T4a_Shaman-arena-specability.xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
      <Item>
         <Kind>speech_neutral</Kind>
         <Anim href="T4a_Shaman-arena-speech_neutral.xdb#xpointer(/BasicSkelAnim)"/>
      </Item>
   </animations>
   <ExpSrcScene href="/H5A2/Creatures/Orcs/T4_Orc/T4a_Shaman/T4a_Shaman.mb"/>
   <ExpSrcClipFolder href="/H5A2/Creatures/Orcs/T4_Orc/T4c_Hag/Animations/Clip/"/>
   <ExpRootTransform>Global</ExpRootTransform>
</AnimSet>


Ce qui nous intéresse se situe entre les balise <animations> </animations>. Chaque <Item> correspond à une situation particulière, les liens sont construits ainsi :

<Item> : balise de début
<Kind> </Kind> : type d'animation, cette balise définit à quel moment l'animation sera utilisée (par exemple lors de l'attaque, en attente, lors d'un déplacement...)
<Anim /> : cette balise fait le lien vers le fichier utilisé pour cette animation
</Item> : balise de fin

Les situations possibles (utilisables dans la balise Kind) sont les suivantes :
idle00 : animation lorsque la créature ne fait rien
attack00 : attaque principale
attack01 : attaque secondaire, si la créature en possède une (par exemple, les anges ont deux façons différentes de taper)
death : mort de la créature
happy : mouvement de joie (par exemple à la fin d'un combat)
hit : mouvement quand la créature est touchée
move : déplacement de la créature
stir00 : mouvement lorsque le curseur passe sur la créature
cast : animation lors du lancement de sorts
specability : animation lors de l'utilisation de la capacité spéciale
speech_neutral : celle-là, je ne sais pas trop à quoi elle sert...
rangeattack : attaque à distance
moveStart : début de déplacement (utilisé pour les téléportations)
moveEnd : fin de déplacement (utilisé pour les téléportations)

Chacun de ces différents effets contient un lien (dans la balise <Anim />) vers le fichier définissant l'effet en lui-même (ou plutôt les effets en eux-mêmes). Ces fichiers ont construits sur le modèle suivant (exemple pour le déplacement de la femme-médecine) :

Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<BasicSkelAnim>
   <SrcName href="/H5A2/Creatures/Orcs/T4_Orc/T4a_Shaman/T4a_Shaman.mb"/>
   <uid>E8D8FD0F-24C6-4593-BA11-B08BBECA03EE</uid>
   <ExpSrcClip href="/H5A2/Creatures/Orcs/T4_Orc/T4c_Hag/Animations/Clip/Shaman_Char.move.ma"/>
   <ExpRootTransform>Global</ExpRootTransform>
   <ExpFrameFirst>0</ExpFrameFirst>
   <ExpFrameLast>0</ExpFrameLast>
   <ExpSettingsFile href="/H:/Tools/MayaExportSettings/settings_character_anim.ges"/>
   <MovementSpeed>3.37039</MovementSpeed>
   <SpeedFactor>1</SpeedFactor>
   <Sound href="/Sounds/_(Sound)/Creatures/Orcs/T4a/move.xdb#xpointer(/Sound)"/>
   <Effect href="/Effects/_(Effect)/Characters/Creatures/Orcs/T4a_Shaman/moveDust.(Effect).xdb#xpointer(/Effect)"/>
   <SpeedLineFallTime>250</SpeedLineFallTime>
   <SpeedLineMaterial/>
</BasicSkelAnim>


C'est là que les choses sérieuses commencent...

6.2 - Les différents types d'effet

Les balises qui nous intéressent ici sont les suivantes :

<SpeedFactor> : facteur de vitesse de l'animation. Par défaut, ce facteur est à 1, ce qui signifie que l'animation est à sa vitesse normale. En réduisant ce chiffre, l'animation sera plus lente (par exemple à 0.8, l'animation sera à 80% de sa vitesse) et en l'augmentant, l'animation sera plus rapide (par exemple à 1.2, l'animation sera à 120% de sa vitesse).
<Sound /> : lien vers le fichier de son lié à l'effet - nous verrons ça à la fin.
<Effect /> : lien vers le fichier des effets visuels liés à l'animation.

Les balises <MovementSpeed> et <SpeedLineFallTime> peuvent également être modifiées, mais je n'ai encore jamais réussi à m'en servir avec succès... avis aux amateurs.

Voyons maintenant le fichier contenant les effets visuels. Il est construit sur un modèle assez simple :

Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<Effect>
   <Instances>
      <Item href="..."/>
      [...]
   </Instances>
   <Lights>
      <Item href="..."/>
      [...]
   </Lights>
   <Models>
      <Item href="..."/>
      [...]
   </Models>
   <WindAffected>false</WindAffected>
   <WindPower>1</WindPower>
   <Duration>2.5</Duration>
</Effect>


Ce fichier définit trois types d'effet, tous les effets du même type sont placés entre deux balises définissant ce type :
<Instances> : Entre les balises <Instances>, on trouve les effets de particule, c'est à dire ce qu'on pourrait appeler des "petits objets volants", comme par exemple des flammes, des éclairs, de la fumée.
<Lights> : Entre les balises <Lights>, on trouve les effets de lumière. Je ne pourrais pas vous en parler plus car je n'ai pour l'instant trouvé aucune créature utilisant ce type d'effet.
<Models> : Entre les balises <Models>, on trouve les effets d'ajout d'objets. Ces effets permettent d'ajouter au modèle 3D des suppléments, qui seront eux-même animés (par exemple l'auréole des Archanges qui apparaît derrière leur tête quand ils utilisent la résurrection). Les ajouts peuvent être énormes grâce à ce type d'effet, car on peut ajouter n'importe quel modèle 3D existant à notre créature - y compris une autre créature entière par exemple.

Chacun de ces effets est défini par une structure particulière, souvent séparée dans un fichier spécifique.

Si vous connaissez un effet que vous voulez copier, repérez le lien vers l'effet voulu chez la créature qui le possède déjà et copiez-le simplement dans le fichier de votre créature.

6.3 - Les effets de type Particule (Instances)

6.4 - Les effets de type Lumière (Lights)

6.5 - Les effets de type Objet (Models)

[@ suivre ...]
Modifié en dernier par Morrock le Mer 13 Aoû 2008, 18:04, modifié 5 fois.
Ci-gît la signature de Morrock, exterminée par une défaillance de disque dur...
Avatar de l’utilisateur
Morrock
Grand Maître
Grand Maître
Administrateur
Administrateur
 
Messages: 3114
Enregistré le: Ven 9 Juin 2006, 12:24
Localisation: Erre dans les couloirs du châteaux à la recherche de chair fraîche

Messagepar Morrock » Dim 17 Fév 2008, 13:14

7 - Modifier la taille d'une créature
Modifié en dernier par Morrock le Mer 13 Aoû 2008, 17:48, modifié 1 fois.
Ci-gît la signature de Morrock, exterminée par une défaillance de disque dur...
Avatar de l’utilisateur
Morrock
Grand Maître
Grand Maître
Administrateur
Administrateur
 
Messages: 3114
Enregistré le: Ven 9 Juin 2006, 12:24
Localisation: Erre dans les couloirs du châteaux à la recherche de chair fraîche

Messagepar Samigina » Ven 14 Mar 2008, 20:07

Psssssst, Morrock, dans les Maitrises de magie, tu as oubli? MASTERY_NONE.


Mais chut hein, je l'ai pas dit.
Lorsque les t?n?bres arriveront et que le sang coulera ? flots, alors les Vampires festoieront.
Image
Avatar de l’utilisateur
Samigina
Maître
Maître
 
Messages: 637
Enregistré le: Lun 2 Jan 2006, 14:19
Localisation: Dans ma crypte

Messagepar Le_Faucheur » Ven 14 Mar 2008, 20:14

<SpellPoints2>0</SpellPoints2> : ??? Je n'ai toujours pas trouv? ? quoi servait r?ellement ce chiffre

nombre de fois qu'elle peut utiliser sa capacit? raciale je crois. (c'est uniquement pour les d?mons je crois)

<Range>0</Range> : Port?e de la cr?ature

Qu'est ce que ?a veut dire? c'est pour les tireurs?
Global Mods-erator
Avatar de l’utilisateur
Le_Faucheur
Expert
Expert
 
Messages: 488
Enregistré le: Mar 5 Juil 2005, 11:09

Messagepar Nelgirith » Sam 15 Mar 2008, 09:04

Et hop ! On le passe en post-it ^^ Joli boulot (en retard) :icon_biggrin:
Image
Avatar de l’utilisateur
Nelgirith
Grand Maître
Grand Maître
Responsable
Responsable
 
Messages: 3767
Enregistré le: Jeu 29 Sep 2005, 13:01
Localisation: En train de boire un pot avec Dédale

Messagepar Morrock » Sam 15 Mar 2008, 09:58

@ Sami : merci, je rajoute

@ Le_Faucheur : merci aussi, je rajoute donc, pour le Range, je vais ajouter une description dans la derni?re partie du chapitre 4

@ Nel : ben... merci aussi ^^
Ci-gît la signature de Morrock, exterminée par une défaillance de disque dur...
Avatar de l’utilisateur
Morrock
Grand Maître
Grand Maître
Administrateur
Administrateur
 
Messages: 3114
Enregistré le: Ven 9 Juin 2006, 12:24
Localisation: Erre dans les couloirs du châteaux à la recherche de chair fraîche

Re: [Tutoriel] Modifier et créer des créatures

Messagepar The Shadow of Death » Ven 15 Aoû 2008, 17:33

hum... Morrock, quand continues-tu ? :p Tu t'es arrêté juste quand cela devenait intéressant :p
Nan je sais que tu travailles et que t'as pas trop le temps... Mais penses-y quand même^^
Inutile de vous lamenter, votre code ne marchera jamais. En effet, il n'a jamais reçu la capacité de se déplacer.
Avatar de l’utilisateur
The Shadow of Death
Maître
Maître
 
Messages: 722
Enregistré le: Mer 5 Juil 2006, 15:18
Localisation: Dans son Caveau Royal

Re: [Tutoriel] Modifier et créer des créatures

Messagepar Morrock » Ven 15 Aoû 2008, 18:58

J'ai déjà pris le temps de tout remettre au propre (plus aucun "?" qui traîne)... peux pas tout faire...

Déjà que je vais devoir renoncer à lancer une version jouable de mon jeu avant la fin des vacances...
Ci-gît la signature de Morrock, exterminée par une défaillance de disque dur...
Avatar de l’utilisateur
Morrock
Grand Maître
Grand Maître
Administrateur
Administrateur
 
Messages: 3114
Enregistré le: Ven 9 Juin 2006, 12:24
Localisation: Erre dans les couloirs du châteaux à la recherche de chair fraîche

Re: [Tutoriel] Modifier et créer des créatures

Messagepar The Shadow of Death » Ven 15 Aoû 2008, 19:17

oh non ! J'avais envie de l'essayer ton jeu :evil:
Bah j'y jouerai en période de cours... :p
Mais je deviens vraiment fou moi.... :p
Inutile de vous lamenter, votre code ne marchera jamais. En effet, il n'a jamais reçu la capacité de se déplacer.
Avatar de l’utilisateur
The Shadow of Death
Maître
Maître
 
Messages: 722
Enregistré le: Mer 5 Juil 2006, 15:18
Localisation: Dans son Caveau Royal

Re: [Tutoriel] Modifier et créer des créatures

Messagepar flb-Iori (Drakfaleiin) » Lun 27 Sep 2010, 05:13

Salut à tous!

Dans ma tentative pour remplacer la wight par le death knight je rencontre quelques soucis. Voila ce que j'ai fait jusqu'à présent:
-dézip de data.pak
-modification de C:\Program Files (x86)\Ubisoft\Heroes of Might and Magic V - Tribes of the East\data\Test\GameMechanics\Creature\Creatures\Necropolis\wight pour remplacer "MonsterShared" et "Visual" par ceux du chevalier noir (avec les bons chemins)
-je rezip le tout, je le renomme en .pak
-je lance le jeu

La j'ai une tonne de messages d'erreur "creature #xx has invalid visual part" puis "chemin\vers\la\créa.xdb#pointer(/creaturevisual) has invalid or missing icon avec toutes les créatures du jeu (auxquelles je n'ai pas touché du tout).

Quelqu'un aurait-il une idée? des indices? quelque chose?

Merci à tous!
Image
Avatar de l’utilisateur
flb-Iori (Drakfaleiin)
Grand Maître
Grand Maître
Modérateur
Modérateur
 
Messages: 862
Enregistré le: Jeu 22 Sep 2005, 13:36
Localisation: Tokyo


Retourner vers Mods



Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités