Crusader Kings 3 : Modding


Voici la traduction du 37ème carnet de développement de CK3, le prochain jeu de Paradox Development Studio, consacré aux modifications par la communauté, le modding.


Bonjour à tous et bienvenue dans le 37e carnet de développement de CK3 !

Je suis Matthew, un des programmeurs de l'équipe CK3, et aujourd'hui je vais vous parler du modding dans Crusader Kings III !

Les mods sont quelque chose de très important pour l'équipe et quelque chose qui me tient particulièrement à cœur. J'ai commencé chez Paradox en tant que concepteur de contenu à cause de mon travail de modding sur Crusader Kings II, donc être capable de faire en sorte que la suite ait beaucoup de possibilités de modding et essayer de redonner à la communauté qui m'a aidé à entrer dans cette industrie est quelque chose qui me passionne beaucoup, et je sais que d'autres membres de l'équipe ont eu des débuts similaires dans le modding aussi.

Nous avons voulu rendre le jeu beaucoup plus ouvert en termes de ce qui peut être réalisé dans le modding : nous avons plus de 80 dossiers d'objets de base de données (certains même avec des sous-dossiers), une structure de système d'événements très polyvalente, un système d'interface graphique qui peut être entièrement modifié, des fichiers d'historique, la localisation, le son, la musique, et plus encore ! Ainsi, d'énormes parties du jeu peuvent être modifiées pour répondre à vos besoins !





Dans le reste de ce carnet, je parlerai moins de ce que vous pouvez faire dans l'ensemble et je mettrai davantage l'accent sur certaines choses qui, je pense, enthousiasmeront les moddeurs de CK2, car sinon ce carnet serait énorme et je dois revenir au codage à un moment donné.

Notre langage de script dans Imperator et Crusader Kings III est basé sur une grande bibliothèque de stratégie interne appelée Jomini, qui agit comme une couche plus orientée GSG utilisée sur notre moteur Clausewitz.

Quand Imperator est sorti, j'ai posté beaucoup d'informations sur les choses qui viennent directement de Jomini et qui sont partagées entre les deux jeux. Je vous recommande donc de consulter mon fil de discussion Grand Jomini Modding Information Manuscript si vous êtes un moddeur intéressé.

Si vous voulez en savoir plus sur la création d'événements alors consultez le carnet de développement 30 qui a fait une très bonne couverture de ce sujet !

N'hésitez pas à poser des questions sur les deux fils de discussion liés dans celui-ci également ! Interactions de personnage

Pour se concentrer davantage sur le niveau de jeu, l'un des principaux changements par rapport à CK2 est l'interaction entre les personnages.

Pour une brève leçon d'histoire sur le modding CK2, la plupart de ces interactions de base étaient codées en dur, comme l'organisation de mariages, la déclaration de guerre, les alliances, etc. Ce n'est qu'après quelques patchs que la possibilité d'ajouter des "décisions ciblées" personnalisées a été introduite, et il convient de noter que seule la possibilité d'ajouter ou de modifier ces décisions ciblées a été introduite - les anciennes interactions de base codées en dur n'étaient pas encore particulièrement moddables.

Pour CK3, nous voulions ouvrir tout cela pour passer par un système d'interaction de personnages unifié, donc chaque action passe maintenant par notre système de script. Cela présente de nombreux avantages : le script pouvant être modifié, nous pouvons désormais changer les poids pour l'utilisation de ces actions par l'IA en modifiant seulement quelques fichiers texte au lieu de nécessiter du temps de code, nous pouvons changer qui peut les faire, et quelles personnes sont considérées comme de bonnes correspondances, etc. Et bien sûr, cela ouvre également la voie aux moddeurs.

L'IA peut également être programmée pour utiliser toutes ces interactions personnalisées, leur dire qui est une bonne cible, ainsi que la fréquence à laquelle ils doivent l'évaluer (ce qui est important pour la performance).

Il existe encore quelques liens codés en dur avec les interactions, en particulier lorsqu'il s'agit d'une interaction qui doit être utilisée par l'IA de manière non triviale. Ces interactions sont toutes clairement marquées, cependant, et si vous essayez de les supprimer, le jeu vous avertira lors du chargement qu'il a vraiment besoin de cette interaction, alors remettez-la en place s'il vous plaît. Ce comportement s'applique en fait à presque tous les objets de base de données codés en dur, et pas seulement à ceux qui sont des interactions.

Pour référence, une liste complète est sur le forum listant toutes les options que les interactions peuvent utiliser et qui ont un impact sur la façon dont elles sont prises, reçues, répondues, représentées graphiquement et utilisées par l'IA : Combiner des Mods

Combiner plusieurs mods ensemble a toujours été un peu délicat, mais je voulais essayer de faire quelques gains en matière de compatibilité afin que cela ne nécessite pas autant de patchs manuels.

Pour faciliter les choses, j'ai fait en sorte que les entrées de la base de données puissent être écrasées par la clé même si cette nouvelle entrée se trouve dans un autre fichier. Cela signifie que si vous voulez passer outre ce que fait le trait lunatique, au lieu de devoir copier tout le fichier des traits pour modifier une seule entrée, vous pouvez simplement créer votre propre fichier contenant votre nouvelle définition de ce que fait le trait lunatique, comme par exemple lui donner un coup de pouce en matière d'apprentissage, de prouesses et d'opinion sur l'attraction, comme je l'ai fait ci-dessous !





Cela s'applique également aux fichiers des autres mods, à condition que le vôtre soit chargé en premier, afin que vous puissiez écraser les traits et autres éléments de base de données des autres mods

Actuellement, nous ne sommes pas favorables à l'ajout d'une définition au lieu de l'écraser complètement, car il faudrait retravailler une bonne partie des choses et la tester de manière approfondie, bien que ce soit quelque chose que je garde à l'esprit pour l'avenir. Alertes, Problèmes et Notifications

Comme je l'ai mentionné dans le carnet de développement 16, tous les nouveaux utilitaires d'interface que nous avons pour expliquer le jeu sont moddables. Ce qui signifie que vous pouvez ajouter, supprimer et modifier n'importe lequel de ces éléments par le biais d'un script au lieu de les coder en dur comme dans CK2.

Je commencerai par les notifications et les toasts, car ce sont les plus simples. Il vous suffit de faire une entrée dans la base de données dans le dossier commun pour votre notification et ensuite, où que vous vouliez l'exécuter, vous utilisez l'effet send_interface_message ou send_interface_toast.

Ces effets prennent en compte le type de message ainsi que des dérogations facultatives pour le titre et le texte au lieu d'utiliser ce qui a été scripté dans la base de données. Ils peuvent également prendre n'importe quel nombre d'effets à exécuter qui seront ensuite inclus comme texte lors de l'affichage, bien qu'il soit souvent recommandé d'utiliser une info-bulle personnalisée au lieu de gonfler le message avec beaucoup de texte mécanique.

Pour les alertes, les conseils et les questions d'actualité, ils passent tous par le même système "d'actions importantes". La principale différence entre eux est le type d'alerte qu'ils sont tenus d'utiliser, qui contrôle leur aspect visuel et leur emplacement.

Ces actions importantes ont un bloc check_create_action et un bloc effect, tous deux lancent des effets d'interface (des effets spécialement marqués qui ne modifient pas l'état du jeu à travers le multijoueur mais seulement des choses locales de l'interface) pour voir s'ils peuvent être créés et ce qu'il faut faire quand on clique dessus.

Le principal effet de l'interface à exécuter dans check_create_action sera l'action try_create_important_action qui tente de créer un élément d'interface utilisateur pour ce type d'action et qui sera généralement derrière une vérification if.

Dans le bloc d'effet, lorsque l'élément UI est cliqué, il y a quelques éléments qu'il est bon d'exécuter, si c'est un conseil réactif, alors l'utilisation de start_tutorial_lesson est une excellente idée, et pour les alertes ou les problèmes, l'effet open_view_data est le moyen d'ouvrir la fenêtre qui peut aider à traiter ce qui cause l'alerte ou le problème !



Note : En faisant ce carnet de développement, j'ai découvert qu'en 1.0, l'ajout d'une icône personnalisée comme celle que l'on voit via un mod n'est pas fonctionnel, mais cela a déjà été corrigé pour la 1.1, mais j'ai pensé que je devais le noter ici rapidement pour que les gens qui reviennent à ce carnet de développement ne me disent pas qu'il ne fonctionne pas tout de suite.

Les suggestions sont similaires aux actions importantes, mais comportent également des champs pour le poids qui vérifie l'importance de la suggestion pour le joueur et un score qui vérifie quelle cible potentielle d'une suggestion est la meilleure.

Par exemple, dans la suggestion de fabrication d'une revendication, le poids est basé sur le fait qu'il y a quelque chose à proximité que vous pourriez fabriquer, sur le nombre de revendications que vous avez déjà et sur le fait que vous êtes déjà en train de fabriquer une revendication. Le score pour le titre à suggérer de fabriquer est basé sur une liste de valeurs beaucoup plus large, comme le niveau de développement du comté, la facilité avec laquelle il sera probablement conquis, si vous partagez une foi ou une culture, etc. Interface graphique

Comme pour Imperator, l'interface est incroyablement moddable, le langage de script de l'interface graphique, bien que différent de celui de la base de données et des scripts d'événements normaux, reste très polyvalent et permet de modifier à la fois l'apparence et le positionnement et la fonctionnalité complète de presque tous les éléments de l'interface graphique du jeu. Nous disposons également d'un mode de débogage de l'interface graphique dans le jeu qui permet de visualiser la hiérarchie et d'ouvrir le fichier et la ligne d'où les éléments sont définis, ce qui facilite grandement le travail avec l'interface.

Actuellement, nous ne permettons pas la création de vos propres fenêtres d'interfaces graphiques (bien que cela figure sur ma liste interminable), mais il est facile de les créer en tant qu'enfants de la fenêtre principale du HUD, qui est toujours affichée, et vous pouvez alors tout avoir.

Comme indiqué brièvement dans l'info Jomini Modding que j'ai liée, il est possible de créer des interfaces graphiques par script, qui permettent d'établir un lien entre le système d'interface graphique et le système de script normal afin de pouvoir tester si différents déclencheurs évaluent vrai ou faux et d'exécuter des effets dans l'état du jeu en toute sécurité en mode multijoueur.

I am very excited to see what people end up doing with this especially, there should hopefully be a massive reduction in the number of hacks needed to display information now that real interfaces can be made for mods to show things about their unique mechanics.









Merci d'avoir lu ! Je sais que ce carnet pourrait avoir un attrait supplémentaire, pour ceux d'entre vous qui cherchent à découvrir plus de gameplay, alors n'oubliez pas de regarder notre prochain stream de gameplay !

Vous pouvez discuter de ce nouveau jeu sur le forum

Carnet traduit avec l'aide de DeepL