WB Quelques tutos sur le modding héraldiques à tester

Go_Khla_Yeh

Master Knight
Best answers
0
Bonjour


J'ai traduit ces tutos:

[size=18pt]Premier tuto modding​

Sujet anglais d'origine

J'ai reçu d'innombrables * MPs sur ma façon de créer des armures héraldiques, et après une rapide recherche dans le forum de la Forge, je n'ai découvert aucun tutoriel sur la façon de créer des armures héraldiques.
J'ai donc décidé de faire ce tutoriel.
Précision: Je suis loin d'être un bon modeur, et que l’on me pende si je sais quelque chose sur les scripts. Mais je fais parti de ces gars qui aiment partager leur ignorance.
Je ne connais pas grande choses sur la façon dont cela fonctionne. En fait, cette méthode a été élaborée après la lecture de la source du mod "Fire Arrow - turn into an inferno", par Rucchi. Rucchi est un véritable géni, tout ce que j'ai fait est d'essayer d'imiter son code.
Donc, ce tutorial aurait été sans nul doute mieux si Rucchi l'avait écrit.

Il est possible que ces données puissent être grandement améliorées. Rappelez-vous que j'ai seulement copié le script de Rucchi sans aucune explications de celui-ci.
Donc, si vous avez des remarques, des suggestions ...
Et les dernières remarques, tout ça fonctionne sur Mount & Blade 1.011. Je pense que cela fonctionnera dans Warband, mais une adaptation mineure sera peut-être nécessaire, par exemple avec les shaders.
Prêt?
Vous allez avoir besoin de:
- un éditeur de brf
- un logiciel qui permet l’édition d’images dds. J’utilise personnellement PaintNet (un freeware)
- du Module System!

Tout d'abord, vous devez choisir l'armure que vous voulez modifier en héraldique. Afin de faciliter la compréhension du tutorial
Nous lui donnerons le nom de "XXX" à l'armure originale (c'est-à-dire sans motif héraldique).

1- Modifier la texture.
Faites une copie de la texture correspondant à XXX.
Si l'armure d'origine a un normal_map ou une specular map, vous n'aurez pas besoin de les éditer.
La zone où vous voulez appliquer le motif de l’armure héraldique doit être transparente, et la texture doit être sauvegardée en DXT5 format dds, ce qui va permettre la transparence.
Cette édition peut être faite avec PaintNet (un logiciel gratuit).
Si la transparence vous semble trop difficile, vous pouvez également supprimer la zone, mais le résultat semblera moins sophistiqué.
Enregistrez-le en tant que "heraldic_XXX".


2- Editez le fichier brf.
2a - Ajouter la nouvelle texture "heraldic_XXX.dds" dans l'un des fichiers brf de votre mod.

2b - Ajouter le nouveau matériel "new_heraldic_XXX_banner" dans le même fichier brf.

  Propriétés:
      Shader: simple_shader
      DiffuseA: héraldique_XXX
      DiffuseB: none
      Bump: none
      Enviro: none
      Spécular: none
  Spec RGB: 0 - 0 - 0
  Coef: 0
 
  Flags: Blend

2c - Ajouter le nouveau matériel "sample_heraldic_XXX_banner" dans le même fichier brf.

  Propriétés:
      Shader: spéculaire_shader_skin
      DiffuseA: héraldique_XXX
      DiffuseB: none
      Bump: none
      Enviro: none
      Spécular: identique à l'original
  Spec RGB: identique à l'original
  Coef: identique à l'original
 
  Flags: Blend, Bled add, Blend Multiply

2d - Ajouter le maillage de la nouvelle armure: Insérer une copie du maillage de XXX. Nommez-le "heraldic_XXX".
Définir le matériel comme "new_heraldic_XXX_banner"

2e - Ajouter le maillage du tableau:
Insérer une copie d'un "tableau_mesh_heraldic_armor".
Ces maillages peuvent être trouvés dans Mount & Blade / CommonRes / heraldic_armors.brf.
Nommez-le tableau_mesh_heraldic_XXX_banner ".
Définir le matériau comme "new_heraldic_XXX_banner"

2f - Ajoute une seconde maille d'un matériau de tableau.
Nommez-le tableau_mesh_heraldic_XXX ".
En tant que matériau, utilisez le même matériau utilisé par le maillage de l'armure d'origine XXX (sans couleur héraldique).

3- Scripting Python:

3a - Modifier module_meshes.py.

Trouvez la ligne :

Code:
Code:
("tableau_mesh_heraldic_armor_d", 0, "tableau_mesh_heraldic_armor_d",  0, 0, 0, 0, 0, 0, 1, 1, 1),
Sous cette ligne, ajoutez ces deux lignes:

Code:
Code:
  ("tableau_mesh_heraldic_XXX_banner", 0, "tableau_mesh_heraldic_XXX_banner",  0, 0, 0, 0, 0, 0, 1, 1, 1),
  ("tableau_mesh_heraldic_XXX", 0, "tableau_mesh_heraldic_XXX",  0, 0, 0, 0, 0, 0, 1, 1, 1),
3b - Editer module_tableau_materials.py.

Trouvez le chapitre commençant par la ligne:

Code:
Code:
 ("heraldic_armor_d", 0, "sample_heraldic_armor_d", 512, 512, 0, 0, 0, 0,
Allez à la fin du chapitre, et juste après; c'est à dire avant la ligne:

Code:
Code:
("troop_note_alpha_mask", 0, "mat_troop_portrait_mask", 1024, 1024, 0, 0, 400, 400,
Collez ceci:

Code:
Code:
 ("heraldic_XXX", 0, "sample_heraldic_XXX_banner", 512, 512, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),
        (store_sub, ":background_slot", ":banner_mesh", arms_meshes_begin), #banner_meshes_begin),
       (troop_get_slot, ":background_color", "trp_banner_background_color_array", ":background_slot"),
       (cur_tableau_set_background_color, ":background_color"),

       (init_position, pos1),
       (cur_tableau_add_mesh_with_vertex_color, "mesh_heraldic_armor_bg", pos1, 200, 100, ":background_color"),
       (init_position, pos1),
       (position_set_x, pos1, 18),
       (position_set_y, pos1, 170),
       (cur_tableau_add_mesh, ":banner_mesh", pos1, 113, 0),
       (init_position, pos1),
       (position_set_z, pos1, 30),
       (cur_tableau_add_mesh, "tableau_mesh_heraldic_XXX_banner", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),

     ]),



Quelques explications:

Dans les lignes "(position_set_x, pos1, 1:cool:, et "(position_set_y, pos1, 170),
les valeurs sont les coordonnées où les mailles seront insérées dans la texture de heraldic_XXX.dds

Vous testerez sans doute quelques couples de valeurs afin de déterminer la valeur qui convient parfaitement à votre maillage.
Dans la ligne "(cur_tableau_add_mesh,": banner_mesh ", pos1, 113, 0),
la valeur "113" est la taille du maillage de la bannière.

Donc vous pouvez le diminuer ou l'augmenter (dans mes mailles j'utilise la taille entre 40 et 90).

3c- Modifier module_items.py.
Copiez la ligne correspondant à l'armure d'origine.
Collez-la à la fin de votre fichier, avant le dernier ].

Cette ligne va ressembler à quelque chose comme:


Code:
Code:
["XXX", "Mail and Plate Armor", [("platemail",0)], itp_type_body_armor|itp_merchandise|itp_covers_legs ,0,
 4500 , weight(25)|abundance(100)|head_armor(0)|body_armor(53)|leg_armor(16)|difficulty(8) ,imodbits_plate , ],
Renommer XXX comme bon vous semble, ainsi que le nom des meshe (dans mon exemple "platemail") avec le nom des meshes que vous avez ajouté à l’étape 2d, c-à-d. heraldic_XXX dans mon texte.

Juste avant la ] de la fin de la ligne (et non pas à la fin du fichier!), ajoutez cela:
Code:
[(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_XXX", ":agent_no", ":troop_no")])]
Ainsi votre dernière ligne ressemblera à ça :
Code:
Code:
["new_XXX", "Heraldic Mail and Plate Armor", [("heraldic_XXX",0)], itp_type_body_armor|itp_merchandise|itp_covers_legs ,0,
 4000 , weight(28)|abundance(100)|head_armor(0)|body_armor(52)|leg_armor(16)|difficulty(8) ,imodbits_plate ,
 [(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_heraldic_XXX", ":agent_no", ":troop_no")])]],
Et après ces lignes, vous devriez avoir la dernière  "]" qui termine le fichier.

4- Exécutez build_module.

Vous allez pouvoir maintenant tester votre armure.
Je recommande d'éditer module_troop afin de donner une de vos nouvelles armures à la troupe "Player", ainsi vous commencerez le jeu avec cette armure, et pourrez vérifier si la bannière est au bon endroit.

Si ce n'est pas le cas, vous pouvez sauvegarder votre jeu, et éditer "position_set_y", "postion_set_x" pour modifier l'emplacement de la bannière dans votre armure, et "cur_tableau_add_mesh",: banner_mesh ", pos1" afin de la redimensionner.

Exécuter à nouveau Build_module, le changement sera compatible avec la sauvegarde, il vous suffit donc de recharger votre sauvegarde pour vérifier si le nouvel emplacement est meilleur.

Bonne chance!





Deuxième tuto Modding
   
Sujet anglais d'origine

Est-ce que l’un d'entre vous a déjà essayé de fabriquer des armures héraldiques, mais sans que le symbole héraldique soit visible, avec juste la couleur d'Arrière-Plan spécifique à chaque bannière?

Eh bien j'ai fait et j'ai découvert des choses intéressantes que je voudrais vous faire partager. L'idée originale de réaliser ce genre d'armures est venue de l'un de mes amis, Jethro Kirby, alors qu'il travaillait sur son mode Warband Improved.
Il a utilisé les lignes de code des maillages et des matériaux héraldiques existants pour faire des armures en couleurs.
Je suppose que vous avez déjà utilisé ou lu le super tutorial de Von Krieglitz qui aide à créer des objets héraldiques. Ce sujet est en quelque sorte une extension de son travail.

La seule chose qui doit être ajustée pour montrer la couleur d’Arrière plan (et non l'héraldique) est la position de la bannière dans tableau_materials.py.

Eh bien ... allons-y:

Voici un exemple du code d’un tableau de matériel d’armure héraldique (module_tableau_materials.py):

Code:
 ("heraldic_coat_of_plates_steel", 0, "heraldic_coat_of_plates_steel_sample", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),
        (store_sub, ":background_slot", ":banner_mesh", arms_meshes_begin), #banner_meshes_begin),
       (troop_get_slot, ":background_color", "trp_banner_background_color_array", ":background_slot"),
       (cur_tableau_set_background_color, ":background_color"),

       (init_position, pos1),
       (cur_tableau_add_mesh_with_vertex_color, "mesh_heraldic_armor_bg", pos1, 200, 100, ":background_color"),
       (init_position, pos1),
      (position_set_x, pos1, 21),
      (position_set_y, pos1, 27),

Code:
       (cur_tableau_add_mesh, ":banner_mesh", pos1, 70, 0),
       (init_position, pos1),
       (position_set_z, pos1, 100),
       (cur_tableau_add_mesh, "mesh_tableau_mesh_heraldic_coat_of_plates_steel_banner", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),
       ]),
Les lignes bleutées sont les paramètres des positions de la bannière.

J'ai compris comment fonctionnent ces coordonnées... en voici l'explication –Pattern-:

Ce sont les valeurs des axes bleu et rouge, x et y, lorsque vous définissez les coordonnées dans module_tableau_materials.py, vous pouvez le faire en suivant le modèle.
L'axe y est toujours un nombre positif, x peut devenir négatif.

Dans mon exemple de "cotte de plates" je voulais que la bannière apparaisse sur le rectangle marqué (alpha), donc j'ai mis les coordonnées aux valeurs T (21, 27) - c'est le point central de la bannière, qui sera affichée sur ma texture.

Si vous voulez uniquement que la couleur d’AP soit affichée, supprimez simplement les lignes:

Code:
       (init_position, pos1),
       (position_set_x, pos1, 21),
       (position_set_y, pos1, 27),
       (cur_tableau_add_mesh, ": banner_mesh", pos1, 70, 0),
... ou définissez les coordonnées sur des valeurs non valides (x = 300, y = 300). Et vous obtiendrez ceci:

Vous remarquerez que la partie colorée est peu détaillée (très peu de courbes, parties ombrées) ... elle a l'air trop modélisée. Eh bien, après réflexion, j'ai réussi à trouver une solution pour cela.
Faites attention à la ligne colorée et à la maille soulignée:

Code:
 ("colored_coat_of_plates_steel", 0, "colored_coat_of_plates_steel_sample", 1024, 1024, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),
        (store_sub, ":background_slot", ":banner_mesh", arms_meshes_begin), #banner_meshes_begin),
       (troop_get_slot, ":background_color", "trp_banner_background_color_array", ":background_slot"),
       (cur_tableau_set_background_color, ":background_color"),

       (init_position, pos1),
       (cur_tableau_add_mesh_with_vertex_color, "mesh_heraldic_armor_bg", pos1, 200, 100, ":background_color"),

       (init_position, pos1),
       (position_set_z, pos1, 100),
       (cur_tableau_add_mesh, "mesh_tableau_mesh_colored_coat_of_plates_steel_banner", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),
       ]),
La maille soulignée est un morceau de maille de tissu qui sert de couche spéciale pour toutes les armures héraldiques (Native). Il donne la profondeur de la zone héraldique, les ombres, les courbes. Le problème est que ce maillage par défaut est en basse résolution et pauvre en détail. J'ai donc décidé de faire d'autres maillages et textures / matériaux correspondants qui seraient plus détaillés et uniques pour chaque armure colorée.

C'est le résultat que j'ai eu avec la cotte de plates après avoir ajouté son unique maille d’AP:


N'oubliez pas de changer le nom du maillage AP dans la ligne colorée du matériau du tableau. Et une chose importante dans cette ligne spécifique...

(cur_tableau_add_mesh_with_vertex_color, "mesh_heraldic_armor_bg", pos1, 200, 100, ": background_color")

... vous voulez changer la valeur marquée à 100. D'après ce que j'ai imaginé, les valeurs "200" et "100" définissent le rapport de taille du maillage AP au maillage héraldique original. Donc, si vous voulez garder le ratio à 1:1, je recommande de garder les deux valeurs identiques.

Matériel:

La texture devrait être quelque peu similaire au spéculaire (si vous faites la zone colorée trop sombre ... votre couleur AP apparaîtra trop sombre dans le jeu):

La texture doit être générée en dxt1 (1bit alpha) sans mipmaps.

Vous devez créer un nouveau maillage, matériau et texture et ajouter les lignes correspondantes à module_tableau_materials.py, module_meshes.py, module_items.py.

Exemple:

Code:
module_tableau_materials.py
  ("colored_coat_of_plates_steel", 0, "colored_coat_of_plates_steel_sample", 512, 512, 0, 0, 0, 0,
   [
       (store_script_param, ":banner_mesh", 1),

       (set_fixed_point_multiplier, 100),
        (store_sub, ":background_slot", ":banner_mesh", arms_meshes_begin), #banner_meshes_begin),
       (troop_get_slot, ":background_color", "trp_banner_background_color_array", ":background_slot"),
       (cur_tableau_set_background_color, ":background_color"),

       (init_position, pos1),
       (cur_tableau_add_mesh_with_vertex_color, "mesh_coat_of_plates_steel_bg", pos1, 100, 100, ":background_color"),

       (init_position, pos1),
       (position_set_z, pos1, 1),
       (cur_tableau_add_mesh, "mesh_tableau_mesh_colored_coat_of_plates_steel_banner", pos1, 0, 0),
       (cur_tableau_set_camera_parameters, 0, 200, 200, 0, 100000),
       ]),
module_meshes.py

Code:
  ("tableau_mesh_colored_coat_of_plates_steel", 0, "tableau_mesh_colored_coat_of_plates_steel",  0, 0, 0, 0, 0, 0, 1, 1, 1),
  ("tableau_mesh_colored_coat_of_plates_steel_banner", 0, "tableau_mesh_colored_coat_of_plates_steel_banner",  0, 0, 0, 0, 0, 0, 1, 1, 1),
  ("coat_of_plates_steel_bg", 0, "coat_of_plates_steel_bg",  0, 0, 0, 0, 0, 0, 1, 1, 1),
module_items.py

Code:
["colored_coat_of_plates_steel", "Colored Steel Coat Of Plates", [("colored_coat_of_plates_steel",0)], itp_merchandise| itp_type_body_armor  |itp_covers_legs ,0, 3828 , weight(25)|abundance(100)|head_armor(0)|body_armor(54)|leg_armor(16)|difficulty(  ,imodbits_armor , [(ti_on_init_item, [(store_trigger_param_1, ":agent_no"),(store_trigger_param_2, ":troop_no"),(call_script, "script_shield_item_set_banner", "tableau_colored_coat_of_plates_steel", ":agent_no", ":troop_no")])]],

De cette façon, vous pouvez créer beaucoup plus de variété d’armure héraldique et aussi d’armure en général.

J'espère que ce petit tutorial aidera certains d'entre vous. Bonne chance.


Donnez moi vos retours d'expérience si vous décidez de tester ces tutos, merci.