Hearts of Iron IV - Traits des Amiraux & Modding


Bonjour tout le monde ! Le carnet d’aujourd’hui se divisera en trois parties. Tout d’abord nous allons parler des nouveaux traits pour les amiraux dans Man the Guns, puis nous allons vous dévoiler les nouveaux outils de modding, et la troisième partie sera un bonus sous la forme de d’autres fonctionnalités de modding qui seront postés ici sur le forum de modding. En espérant que cela vous convienne !
Traits des Amiraux

Man the Guns, qui succède à Waking the Tiger, en se concentrant sur la partie navale du jeu nous savions que nous voulions permettre aux amiraux de connaitre plus de progression, ainsi que d’avoir la possibilité d’obtenir des traits et de nouvelles compétences. Passer en revue les différents traits pourrait vous gâcher les nouvelles fonctionnalités encore non dévoilées, vous devrez donc être patient sur cette partie.

Nous avons étendu la simple progression de niveaux des amiraux de manière similaire à ce que nous avons fait pour les généraux dans Waking the Tiger, il y a désormais 4 traits pour mieux représenter leurs compétences et personnalités : Offensif, Défense, Manœuvre, Coordination. L’offensif et la défense n’ont pas vraiment besoin de plus d’explications. La manœuvre est la compétence la plus tactique qui touchera les positionnements et mouvements de flottes tandis que la coordination est la compétence touchant plus l’organisation en affectant les missions et d’autres éléments que les simples combats. Nous couvririons cela avec d’avantages de détails une fois que nous porterons nos carnets sur les flottes, les forces opérationnelles et les combats

Les amiraux auront désormais accès à d’autres traits pouvant être obtenus ainsi que de nouveaux traits de personnalités. Certains traits de personnalités viennent déjà de ceux des généraux, comme « Officier de carrière », mais s’accompagnent aussi de nouveaux comme « Partisan du Cuirassé ». Il y a aussi des traits assignables que vous pouvez débloquer pour faire sur mesure vos amiraux. Enfin il y a des traits de terrain qui peuvent être obtenus et aident sur les différentes terrains navals (plus sur cela dans un futur carnet). Quand les amiraux gagnent un niveau ils obtiennent 3 points se répartissant dans chaque compétence, de préférence dans leurs compétences de prédilection. Chaque deuxième niveau ils débloquent les emplacements nécessaires pour les traits assignables à l’instar des généraux. Les traits assignable et l’écran des amiraux seront dans l’extension Man the Guns tandis que les éléments basiques comme les traits de personnalité et ceux pouvant être gagnés seront dans le patch gratuit. Comme pour les traits de généraux dans Waking the Tiger.



Voici l’ensemble de l’arbre des traits :



Comme vous pouvez le voir, la plupart des traits seront dépendant de l’obtention d’autres traits.

Il y a des traits comme « Côte de fer » qui est disponibles si vous voulez vous concentrer sur des navires capitaux, ou « Contrôleur aérien » pour améliorer les capacités de vos porte-avions, ou encore « Briseur de blocus », « Expert en camouflage », « Chasseur silencieux » pour les raiders. Il y aussi certaines voies pour améliorer l’utilisation de navires légers avec les traits « Attrapeurs » et « Protecteur de la flotte ». Cela comptera beaucoup pour que ces derniers auront beaucoup plus d’importance dans vos flottes et dans les opérations navales.

Le Modding !

Bonjour tout le monde, c’est @shultays. Je suis programmeur dans l’équipe d’HoI4 et je suis particulièrement impatient de vous présenter les nouveautés dont auront droit les moddeurs et les joueurs qui profitent des créations de ces derniers ! Dans ce carnet de développement je vais donc introduire quelques nouvelles fonctionnalités dans le code qui plairont particulièrement aux moddeurs. Bien qu’il soit encore tôt pour présenter de telles fonctionnalités, nous voulions avoir votre retour sur celles-ci, afin d’avoir aussi plus de temps pour répondre à vos retours.

Je vais donner de courtes descriptions et quelques légers exemples ici, mais pour avoir une présentation plus détaillée vous pouvez lire l’autre sujet que j’ai créer dans le forum modding.

Les Matrices

Ceux qui ont déjà une expérience en programmation seront déjà familier avec le concept de matrices. Pour ceux qui ne le sont pas, les matrices sont simplement des conteneurs de données. Dans HoI4, ils contiennent des variables (et d’autres éléments pouvant être stockés comme les états et les nations).

Le soutien des matrices est une extension du système de variable déjà existant. Vous pouvez classer des matrices de la même manière que vous pouvez classer des variables (nations, états, leaders d’unités ou globales). Vous pouvez accéder à des éléments individuels de matrices en utilisant des effets & déclencheurs existants dont leur action change ou compare les variables (la formule exacte pour accéder à un élément est la suivante : array_name^index) ou bien vous pouvez utiliser les effets/variables qui acceptent ces variables. Et il y a d’avantages d’effets et déclencheurs annexes pour interagir avec les matrices, comme les effets qui peuvent ajouter/supprimer ou encore des déclencheurs qui peuvent regarder quelques ou tous les éléments.

Dressons un exemple :

Code:
#create an example array with 3 countries, named "array_example"
add_to_array = { array_example = GER }
add_to_array = { array_example = ITA }
add_to_array = { array_example = TUR }

# calculate total pp of these 3 countries
set_temp_variable = { sum_pp = 0 }
for_each_scope_loop = {
    array = array_example
    add_to_temp_variable = { sum_pp = political_power }
}

if = {
    # do they have more than 100 pp?
    limit = { check_variable = { sum_pp > 100 } }

    # remove 33 pp
    for_each_scope_loop = {
        array = array_example

        add_political_power = -33
    }

    #pp spent, now do business
}
Ici j’ai fait en sorte que l’Allemagne, l’Italie et la Turquie forment une sorte de pacte et je veux lancer un effet s’ils ont plus de 100 points politique au total. Cet effet crée une matrice de trois nations en utilisant l’effet : add_to_array, calcule la somme de leurs points politiques en répétant sur cette matrice l’effet : for_each_scope_loop et supprime 33 points politiques pour chacun si la somme est supérieure à 0, toujours en utilisant : for_each_scope_loop.

Ce n’est qu’un exemple de l’usage que l’on peut faire des matrices. Il y a bien d’autres manières d’interagir avec les matrices comme vous pourrez le voir sur mon autre sujet.

Ajouté aux matrices que vous pouvez créer ou changer, le jeu soutiendra aussi des « matrices de variables de jeu ». Semblables aux « variables de jeu », vous serez capable d’accéder via différentes échelles à ces matrices, bâties en utilisant des données du jeu. Par exemple, en accédant à la matrice « ennemis » à l’échelle des nations, vous permettra d’accéder aux ennemis d’un pays. Si vous répétez cette action, vous pourrez voir chaque ennemi d’une nation. La liste actuelle des variables de jeu et des matrices peut être trouvé sur mon autre sujet, regardez celui-ci si vous êtes intéressé et ne vous gêner pas pour y écrire vos suggestions

Méta-Effets et Méta-Déclencheurs

C’est un élément que nous avons emprunté à EU4, mais l’implémentation et l’usage qui ont suivi est diffèrent. Les méta-effets et les méta-déclencheurs permettront aux moddeurs d’utiliser des effets et déclencheurs non-dynamique (ils ne peuvent accepter des modificateurs, et n’usent ainsi que « tokens » statiques et des valeurs constantes) pour qu’ils acceptent des variables. Il est assez difficile d’expliquer cela alors donnons un exemple ! Examinez le code suivant :

Code:
add_equipment_to_stockpile = {
    type = infantry_equipment_2
    amount = eq_amount
}
Dans cet effet, la quantité est dynamique et peut être programmé pour utiliser une variable (la programmation ici est la variable suivante : eq_amount). Cependant l’effet ne laisse pas le codeur utiliser une variable comme le type d’équipement. Vous ne pouvez pas stocker infantry_equipment_2 dans une variable pour l’utiliser ici.

Mais avec les méta-effets, tout est possible ! Les méta-effets permettront aux codeurs d’utiliser des variables et localisations scriptées dans leurs effets afin d’écrire des effets comme s’ils étaient des textes puis pour les lancer. Maintenant, faisons-en sorte que l’effet précédent accepte les types d’équipements et les niveaux d’équipements comme des variables stockés dans eq-type et eq_level.

Code:
set_temp_variable = { eq_type = 1 }
set_temp_variable = { eq_amount = 10 }
set_temp_variable = { eq_level = 2 }

meta_effect = {
    text = {
        add_equipment_to_stockpile = {
            type = [EQ_TYPE]_[EQ_LEVEL]
            amount = eq_amount
        }
    }
    EQ_LEVEL = "[?eq_level|.0]"
    EQ_TYPE = "[This.GetEquipmentName]"
}

# scripted localization
defined_text = {
    name = GetEquipmentName
    text = {
        trigger = {
            check_variable = { eq_type = 0 }
        }
        localization_key = "infantry_equipment"
    }
    text = {
        trigger = {
            check_variable = { eq_type = 1 }
        }
        localization_key = "artillery_equipment"
    }
    # give all equipment an index here
}
Ici, nous avons créé un méta-effet qui prend deux arguments. Ces arguments seront utilisés en replaçant les paramètres ([EQ_TYPE] et [EQ_LEVEL]) à l’intérieur du méta-effet. EQ_LEVEL sera remplacé par [?eq_level|.0] qui est la valeur intégrante de eq_level (dans ce cas présent, 2.000 devient 2). EQ_TYPE est un peu plus compliqué, car il est remplacé par une localisation scriptée. Cette localisation scriptée regardera chaque eq_type disponible et selon sa valeur, il renverra le « token » clef à l’équipement. Si cette valeur est à 0, cela renverra à infantry_equipment. Si c’est deux, cela renverra à artillery_equipment.

Le résultat final est que [EQ_TYPE] sera remplacé par « artillery_equipment » et que [EQ_LEVEL] sera remplacé par « 2 ». Ce faisant, notre effet sera codé tel quel :
Code:
add_equipment_to_stockpile = {
    type = artillery_equipment_2
    amount = eq_amount
}
Ce qui vous permettra d’obtenir 10 artillery_equipment_2 ! Vous pourrez penser que c’est une manière un peu tirée par les cheveux pour donner 10 artillery_equipment_2. Mais il est possible d’utiliser et de remplacer les méta effets dans scripted_effects ou scripted_triggers, pour que cette partie alambiquée ne s’écrive qu’une seule fois.

Modificateurs dynamiques

Nos modificateurs ne peuvent actuellement que contenir des valeurs statiques et vous ne pouvez pas utiliser des variables. Avec les modificateurs dynamiques il sera désormais possible d’ajouter de tels modificateurs aux nations et états. Pour que les choses restent simples, nous avons limités l’ajout et la suppression de modificateurs dynamiques que via des effets, bien que certaines améliorations ergonomiques et de qualité de vie pourrait venir à l’avenir.

Leur déclaration est semblable aux modificateurs statiques à l’exception qu’ils accepteront des variables comme valeurs de modificateurs.

Code:
dynamic_modifier_example = {
    political_power_factor = pp_factor_variable
}
Après avoir déclaré un modificateur dynamique de cette manière, vous pouvez lancer l’effet suivant pour ajouter ce modificateur à l’échelle acutelle :

Code:
set_variable = { pp_factor_variable = 0.15 }
add_dynamic_modifier = { modifier = dynamic_modifier_example }
Cet exemple ajoutera le modificateur dynamique dynamic_modifier_example à la nation de l’échelle correspondante. Ce modificateur donnera à cette nation un facteur de gain de points politiques égal à pp_factor_variable stockée dans cette nation. Dans cet exemple, nous avons stocké 0,15 pour que cette nation obtienne 15% de plus en gain de points politiques. Quand vous changez la valeur de pp_factor_variable plus tard via un autre effet, le bonus que cette nation obtient sera mise à jour.

Ajouté à cela, vous pouvez définir une échelle tout en ajoutant des modificateurs dynamiques. Dans ce cas-là, le modificateur cherchera les variables de l’échelle que vous avez spécifié. Cela va aussi laisser aux codeurs la possibilité d’ajouter de multiples instances pour un même modificateur dynamique ciblant différentes nations (ou états), ainsi vous pourrez les utiliser comme s’ils étaient des modificateurs relationnels.

En ajoutant des modificateurs vous pouvez aussi spécifier une durée qui le fera se supprimer automatiquement après un nombre de jours donné. Aussi est-il possible de définir un déclencheur qui supprimera aussi le modificateur quand le déclencheur sera « Faux ».

Il sera possible de donner des icônes de modificateur dynamique. Dans ce cas, ils apparaitront dans l’interface. Par exemple des modificateurs dynamiques qui sont des nations ajoutées apparaitront s’ils sont des « esprits nationaux » et si une icône est définie.



Dans cet exemple, la Turquie a deux modificateurs dynamiques sur son interface. Et nous avons défini une icône pour qu’elle se montre dans la liste des esprits nationaux. Chacun de ces modificateurs dynamiques est semblable mais différent car l’un cible l’Italie et l’autre cible la France et la valeur de « Capacité de carburant » est lisible de l’une de ces échelles (La racine étant la Turquie, vous pouvez user des variables ciblées si vous le voulez). En outre l’effet qui a ajouté ces modificateurs définirent une durée, et ces modificateurs seront supprimés au bout de deux jours.

Autres fonctionnalités scriptées pour l’interface

Les moddeurs se sont montrés particulièrement créatif avec cette fonctionnalité et je suis ravi de voir tous ces nouveaux super mods qui sont en train d’être développés ou déjà dans le Workshop. D’avantage que juste corriger quelques inévitables bugs et aperçus de la version actuelle, nous sommes aussi en train d’ajouter un soutien pour créer des « listes dynamiques » pour des interfaces scriptées.

Les listes dynamiques permettront aux moddeurs de créer leurs propres listes pour les remplir en utilisant une matrice qu’ils spécifient. Dans un ancien carnet de développement, j’ai dévoilé ce rapide aperçu :



Cela a été implémenté en utilisant des matrices. Chaque cellule est ici créée dynamiquement en utilisant une matrice avec 64 éléments et la valeur de chaque élément représente l’état de la cellule. Chaque élément cellulaire est codé en utilisant l’échelle et la valeur de l’élément de la matrice.

Voici un autre exemple plus terre à terre :



La liste en dessous est remplie en utilisant les alliées de la nation (usant de la matrice de jeu « alliées » dans l’échelle des nations). Pour l’Allemagne, cette matrice a deux éléments, l’Italie et la Turquie et de ce fait cela créer deux entrées dans la liste du dessous. En codant les éléments de cette liste, cela change l’échelle de chaque entrée dans cet élément (si l’élément ne peux pas être mis à l’échelle, il y a d’autres moyens pour accéder à la valeur et l’index des éléments, qui sont également montrés dans cet exemple).

La liste du dessus a été codée en utilisant une matrice stockée dans l’échelle des nations et est initialement vide. En utilisant le bouton « Ajouter l’objet » en haut lance un effet qui ajoute une nation aléatoire à cette matrice, mettant à jour la liste elle-même.

Les drapeaux à l’intérieur qui sont montrées comme formant une grille représentent aussi une autre liste dynamique. Cet exemple sert à montrer qu’il est aussi possible d’avoir une liste à l’intérieur d’une liste.

C’est tout pour aujourd’hui. Si vous êtes d’avantage intéressé par ce type de sujet, jetez un œil à notre sujet détaillé sur le forum des moddeurs et écrivez-nous vos retours.

Vous pouvez discuter de cet article ici

Crédit
Spoiler:
Auteur : podcat
Traducteur : Limse