Blueprint Utilities
Le plugin
Blueprint Utilities est un plugin conçu est orienté sur la vitesse de développement de prototype de jeu avec le moteur Unreal Engine. Le but premier est d’ajouter, modifier, remplacer les systèmes natifs du moteur pour les rendre plus faciles à manipuler, ou bien à mettre en place. Lorsque le plugin ajoute une nouvelle fonctionnalité, elle a pour but premier d’ajouter du confort de vie aux développeurs qui l’utilise. Blueprint Utilities ne rend en aucun cas les jeux meilleurs ou intervient dans le gameplay.
Mon approche
Dans un premier temps et conscient de vouloir implémenter de la logique complexe en Blueprint, je me suis formé sur la création de node en C++ en utilisant Kismet (UK2Node). Grâce à ces connaissances, j’ai pu créer des nodes qui adoptent des comportements spéciaux en fonction de l’utilisateur et de l’environnement dans lequel il est placé. (exemple : changer le titre du node en fonction d’un paramètre, ajouter/enlever des pins dynamiquement). Une fois Kismet bien en main, j’ai pu mettre à contribution mon expérience avec Unreal Engine pour trouver des processus à simplifier.
Au fur et à mesure des fonctionnalités que j’implémentais, je gardais en tête cet objectif d’avoir une conception basé sur la facilité d’usage et de prise en main. J’ai donc décidé de me former et d’axer mon travail sur deux nouvelles choses : la mise en place d’un site internet de documentation clair et illustré, et apprendre à créer des interfaces dans l’éditeur d’Unreal Engine pour créer des éléments personnalisés qui favorisent l’usage du plugin (pin personnalisé pour des types complexe, options de projet et de moteur pour adapter le comportement du plugin, etc).
Enfin, j’ai appris à comprendre comment les éléments de code étaient structurés (projet, plugins, modules, api, etc.) pour mieux organiser mon travail et ainsi gagner des performances pour les utilisateurs. En effet, si tel ou tel code n’est utile que dans l’éditeur, il serait dommage qu’il soit compilé avec le jeu.
Modules et fonctionnalités
Module « GetAs »
Le premier système implémenté a été le GetAsSystem qui permet de manipuler les classes de sortie de tous les accesseurs natifs du moteur. Ainsi, il n’est plus nécessaire de devoir effectuer des « Cast » sur la sortie de ces nodes. Cette fonctionnalité très simple, mais très pratique, permet de gagne du temps tout en augmentant la lisibilité du code Blueprint.
Module de Log
Module de maths
Le module de math ajoute plusieurs nodes pour faciliter la réalisation de calculs poussés en Blueprint. Pour rendre les nodes plus versatile et agréable à utiliser, ils ont été réalisés à l’aide de « wildcard » (type joker) ce qui permet aux node de supporter plusieurs types natifs (int, bool, float, double, etc). De plus, un menu contextuel permet à l’utilisateur de changer le type manuelement.