The Witcher 3

 
 
La création de mods pour The Witcher 3 est possible grace au kit fourni par l'éditeur, malheureusement il n'y a pas d'interface graphique ni de documentation, ce qui rend le travail extrêmement compliqué.
 
Heureusement quelques amateurs éclairés ont créé des interface graphiques pour les outils du kit.
 
On a donc un éditeur général appellé Wolvenkit qui permet de travailler sur les entités du jeu et de recompiler les données, mais ça reste très limité si on le compare au Creation Kit de Bethesda.
 
Il ne faut pas perdre de vue que c'est un travail assez compliqué et pas très intuitif, en plus il n'y a presque pas de tutoriels vraiment explicites ou alors ils sont très anciens et criblé d'erreurs.
 
Visiblement très peu de gens se sont vraiment intéressé à moder ce jeu et en plus ils n'ont pas partagé ce qu'ils ont appris, ce qui rend l'apprentissage très pénible.
 
 
Voyons quels outils nous avons à notre disposition :
 
premièrement le kit de développement light, on peut trouver un lien sur le site Nexus du Jeu.
Il faut faire très attention en installant ce kit, il faut choisir un dossier si possible à la racine du disque avec un nom sans espaces, sinon certains outils du kit ne fonctionneront pas correctement. Cet kit a été prévu pour fonctionner par ligne de commande, à l'ancienne et pour des pros!
 
On a ensuite besoin de W3Oven, ce programme est une interface graphique pour les outils de décompilation, d'exportation et de recompilation des données du jeu.
 
On a également besoin de WolvenKit, cet outil va nous permettre de visualiser les entités du jeu, de les modifier et de compiler un mod
 
Finalement on pourra aussi avoir besoin de QuickBms, un outil général de décompilation de données de jeux, il y a un script pour Witcher 3, cet outil permet d'extraire les entités, ce que ne fait pas W3Oven qui lui extrait uniquement les modèles et les textures.
 
 
Préparation de l'espace de travail :
 
 
La première chose à faire est de décompiler les données du jeu avec W3Oven (Uncook), ce sera très utile pour les analyser et voir leur format, encore une fois utilisez des dossier si possible dans la racine du disque et avec des noms simples sans espaces.
Une fois décompilées, on va obtenir des fichiers de modèle 3 d du type w2mesch, des textures au format xbm et tga principalement ainsi que beaucoup d'autres données dans divers formats.
Pour les mods que nous allons faire, on va principalement s'intéresser aux modèles 3d et aux textures.
 
Afin d'obtenir des données utilisables, on va devoir exporter ces données vers un format standard, fbx pour les modèles et tga pour les textures.
On peut faire ça avec l'onglet Export de W3Oven.
 
 
Cette première étape n'est pas compliquée, il suffit de suivre les instructions simple de W3Oven et surtout de bien choisir ses dossiers d'exportation avec des noms qui respectent un format simple pour que les utilitaires du kit de développement puissent fonctionner.
La plupart des problèmes arrivent lorsque le jeu est installé sur un disque système avec une adresse un peu compliquée avec des caractères non standard.
 
 
Les textures :
 
Les textures au format tga sont en général de 4 types différents, les textures de type diffuse qui contiennent l'image avec l'extension _d, les textures de type normale avec l'extensiion _n, les textutre de type tintmask avec l'extension _a et les textures de type spéculaires avec l'extension _s.
 
Les textures diffuses:
 
Ces textures au format tga contiennent l'image proprement dite avec parfois une couche alpha contenant des informations de transparence.
Ces textures sont assez simples à réaliser et la transparence est gérée comme d'habitude en noir et blanc mais va nécessiter un shader particulier pour être affichées en jeu.
 
Les textures normales :
 
Ces textures au format tga contiennent les données de normales dans les couches RG comme d'habitude mais elles contiennent également les informations de spécularité dans la couche alpha
Cette couche aplha contient la spécularité de manière inversée, le noir est brillant le blanc est mat.
 
Les textures de type tintmask :
 
Ces textures sont plus compliquées et leur contenu peut varier selon le type de shader utilisé mais en général ells sont du format suivant pour les shaders standards qu'on utilise.
La couche R (rouge) contient une information de lumière, c'est à dire une manière de faire de fausses ombres ou des salissures en niveau de gris bien sur. Blanc ne donne aucune teinte.
Les couche G et B contiennent des informations de masque qui vont servir au shader a appliquer des textures de détails ou de changement de couleur dans les zones définies en noir et blanc. Noir pas de détails.
Ces textures de détails sont des normales par exemple la trame d'un tissus ou le relief du cuir etc...
C'est une méthode économique pour utiliser des textures normales de petite taille en pouvant ensuite y rajouter des détails dans certaines zones. De cette façon le budget texture pour un objet reste bas tout en permettant d'afficher des détails fins.
 
Les textures de type spéculaires:
 
Ces textures sont rarement utilisées parce que ça fait grimper le budget texture d'un objet, mais ça permet de faire apparaitre une spécularité colorée sur un modèle. En général ce n'est pas utilisé, on utilise l'info de spécularité de la couche alpha de la normale et nuaces de gris et on ajuste la couleur avec une valeur RGB dans le shader, mais ensuite toute la texture reçoit la même coloration de spécularité.
Donc en utilisant une texture de spécularité indépendante on a plus de souplesse dans la spécularité, mais en général ce n'est pas nécessaire, parce que les modèles du jeu utilisent plusieurs textures et si une zone nécessite une spécularité différente elle aura une texture indépendante.
 
 
Une page dédiée aux textures et aux shaders se trouve ici: Textures et shaders
 
 
 
Les modèles 3D:
 
 
Lorsqu'on a exporté les modèles 3D du jeu, on va obtenire des fichiers fbx standards , c'est un format assez universel qui peut être importé dans divers programme de modélisation 3D.
 
Dans notre tutoriel on va utiliser Blender 2.83 qui nous permet d'utiliser des outils très avancés, mais l'importation directe dans Blender 2.83 des fichiers fbx exportés par W3Oven donne un résultat bizarre, il semble que les normales ne soient pas importées correctement, on peut essayer de corriger le problème dans Blender, mais il y a plus simple.
Il y a un patch sur le site Nexus pour le plugin d'importation des fbx du jeu dans Blender.
Ce plugin fonctionne bien avec Blender 2.76, probablement parce que le format fbx a évolué depuis la création des outils du jeu.
Le problème avec le format fbx c'est que c'est un format propriétaire de Autodesk et qu'il en font ce qu'ils veulent, ce qui fait que les développeurs de Blender doivent s'adapter au fil du temps sans pouvoir vraiment maitriser la situation.
Le nouveau format fbx utilisé sous licence par Blender 2.83 n'est pas complètement compatible.
 
Ce qu'on va faire, c'est importer le modèle fbx dans Blender 2.76 avec le patch du plugin, puis l'exporter au format fbx sans rien modifier, ensuite on pourra l'importer dans Blender 2.83 sans problème.
 
Ensuite W3Oven pourra sans problème importer le fbx produit par Blender 2.83 au format w2mesh du jeu.
 
 
Une page dédiée au modèles au format fbx dans Blender 2.83: Modèles fbx dans Blender 2.83