Klems

Marketplace

Support (discord)

Documentation

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é 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, …) 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.

Context menu of the getters node
Getter context menu
Custom getter node (3 forms)
Module de Log
log node
Log node
Log node avec différent profil
Project Settings
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 natif (int, bool, float, double, etc). De plus, un menu contextuel permet à l’utilisateur de changer le type manuelement.

Maths nodes
Wildcard context menu
Ce projet me rend particulièrement fier, car j'y ai employé toute la rigueur et les connaissances que j'ai pu accumuler pendant mes études en jeux vidéo. J'ai également dû apprendre par moi-même les rouages les plus profonds d'Unreal Engine en étudiant son code source parce qu'aucune documentation n'existait sur le fonctionnement de l'éditeur lui-même.Enfin, c'est la première fois que j'ai décidé de monétiser mon travail dans le but d'observer si les développeurs étaient prêts à payer pour lui. Je suis ravi aujourd'hui de vivre cette expérience et de pouvoir continuer à maintenir/améliorer le plugin !
C'est ma petite tête sur cette photo
- Lucas
Vidéo de présentation du plugin (v2.0)

2 Responses

  1. Ayant participé au développement de Klems avec Lucas, je peux certifier qu’il est un développeur investi et motivé avec qui c’est toujours un plaisir de travailler ! Hâte d’entamer des projets de plus grande envergure à ses côtés 😉

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *