Le système de programmation visuelle Blueprint de l'Unreal Engine (souvent appelé simplement "blueprints") est un langage de programmation visuelle qui utilise une interface basée sur les nœuds pour créer des fonctionnalités de gameplay sans écrire de code. À l'instar d'un langage de programmation écrit, le système Blueprint fonctionne avec des données typées telles que des nombres, des booléens, des matrices et des structures. Dans la mesure où la logique passe par les liens d'exécution, chaque nœud ne s'exécute que lorsqu'une instruction explicite lui en donne l'ordre.
Avec les classes de blueprint, vous pouvez associer des composants physiques à un comportement scripté. Par exemple, un blueprint peut contenir un maillage statique de pièce et un comportement qui incite le joueur à ramasser cette pièce lorsqu'il la touche.
À l'instar de nombreux langages de programmation courants, vous pouvez utiliser le système pour définir des classes ou des objets orientés objet dans le moteur. Pour les programmeurs, l'implémentation du langage C++ de l'Unreal Engine inclut un marquage propre à Blueprint, qui vous permet de créer des systèmes de base que les concepteurs peuvent étendre.
Dans cette présentation, vous découvrirez les différents types de ressources de blueprint, et étudierez un exemple de classe de blueprint dans lequel vous modifierez certains éléments de ce blueprint et verrez comment ces modifications affectent ces acteurs de blueprint dans l'éditeur de niveau et pendant le jeu.
Types de blueprints
Il existe différents types de ressources de blueprint, chacun ayant son propre rôle. Lorsque vous créez et enregistrez un blueprint, il est converti en fichier de ressource intégré à votre package de contenu.
Classe de blueprint
Une classe de blueprint, souvent appelée blueprint, est une ressource qui permet aux créateurs de contenu d'ajouter facilement des fonctionnalités aux classes de jeu existantes. Les blueprints se créent visuellement dans l'Unreal Editor, plutôt qu'en saisissant du code, et s'enregistrent comme ressources dans un pack de contenu. Ces ressources définissent essentiellement une nouvelle classe ou un nouveau type d'acteur, qu'il est ensuite possible de placer sur des cartes en tant qu'instances se comportant comme n'importe quel autre type d'acteur.
Une classe de blueprint s'apparente à une recette qui utilise des composants, des variables et le système de programmation visuelle Blueprint pour décrire les propriétés et les comportements des objets de votre jeu. Vous ajoutez des instances de classes de blueprint à votre niveau.
Le type le plus courant avec lequel vous travaillerez est une classe de blueprint, souvent appelée blueprint.
Les classes de blueprint peuvent être réservées aux données lorsqu'elles ne contiennent aucune logique d'exécution et ne remplacent que les variables ou les composants hérités d'un blueprint parent. Les classes de blueprint réservées aux données s'ouvrent dans un éditeur compact, mais sont converties en éditeur de blueprint complet si vous ajoutez une nouvelle logique, de nouveaux graphiques ou d'autres éléments scriptés.
Consultez la page Classe de blueprint pour en savoir plus.
Blueprint de niveau
Chaque niveau possède un blueprint de niveau. Lorsque vous créez un nouveau niveau, l'Unreal Engine crée automatiquement un blueprint de niveau pour ce niveau. Ce type de blueprint fait office de graphique d'événements global à l'échelle du niveau.
Les blueprints de niveau fournissent également un mécanisme de contrôle pour le chargement de niveau en temps réel et les cinématiques de l'outil Sequencer, mais aussi pour la liaison d'événements aux acteurs placés dans le niveau.
Pour ouvrir le blueprint de niveau d'un niveau, utilisez le menu Blueprint de la barre d'outils principale de l'éditeur de niveau.
Consultez la page Blueprint de niveau pour en savoir plus.
Interface de blueprint
Une ressource d'interface de blueprint est un ensemble composé d'une ou de plusieurs fonctions (nom uniquement, aucune implémentation) pouvant être ajoutées à d'autres blueprints. Tout blueprint auquel cette interface a été ajoutée dispose nécessairement de ces fonctions. Les fonctions de l'interface peuvent être dotées de fonctionnalités dans chacun des blueprints qui l'ont intégrée. Ce concept s'apparente à celui d'interface en programmation classique, qui permet à différents types d'objets de partager une interface commune et d'y accéder. En termes simples, les interfaces de blueprint permettent à différents blueprints de partager des données et de se les transmettre.
Les interfaces de blueprint ne peuvent pas :
Ajouter de nouvelles variables
Modifier des graphiques
Ajouter des composants
Consultez les pages Interface de blueprint et Interface Quick Start Guide pour en savoir plus.
Bibliothèques de blueprints
Vous pouvez réutiliser la logique en créant des fonctions et des macros dans des ressources de "bibliothèque" afin qu'elles soient accessibles à tous les blueprints de votre projet.
Bibliothèque de fonctions de blueprint
Une bibliothèque de fonctions de blueprint est une ressource de blueprint qui stocke une collection de fonctions réutilisables. Ces fonctions ne sont pas liées à un blueprint ou à un acteur spécifique. Au lieu de cela, elles sont accessibles à l'échelle de votre projet et peuvent être appelées depuis n'importe quelle classe de blueprint. Les bibliothèques conservent les fonctions utiles au même emplacement afin que vous n'ayez pas à copier-coller les mêmes nœuds dans plusieurs blueprints.
Les fonctions d'une bibliothèque de fonctions de blueprint sont statiques ; autrement dit, elles ne stockent ni ne mémorisent aucune information entre les appels, et ne connaissent aucune information sur une instance de blueprint spécifique, à moins que vous ne transmettiez ces données sous forme de paramètres. C'est la raison pour laquelle les bibliothèques de fonctions sont généralement utilisées dans une logique à usage général qui opère sur des entrées et renvoie un résultat. Lorsque la fonctionnalité dépend des variables internes d'un objet (comme l'inventaire d'un joueur), elle appartient généralement au blueprint de cet objet plutôt qu'à une bibliothèque.
Bibliothèque de macros pour Blueprint
Une bibliothèque de macros de blueprint est un conteneur qui renferme une collection de macros ou de graphiques autonomes qui peuvent être placés sous forme de nœuds dans d'autres blueprints. Cette bibliothèque peut vous faire gagner du temps, car elle est capable de stocker des séquences de nœuds couramment utilisées avec des entrées et des sorties pour l'exécution et le transfert de données.
Les macros sont partagées entre tous les graphiques qui y font référence, mais elles sont automatiquement développées dans les graphiques comme s'il s'agissait d'un nœud réduit pendant la compilation. En d'autres termes, il n'est pas nécessaire de compiler les bibliothèques de macros de blueprint. Notez cependant que les modifications apportées à une macro ne sont reflétées dans les graphiques qui font référence à cette macro que lorsque le blueprint contenant ces graphiques est recompilé.
Pour en savoir plus, consultez les pages Blueprint Macro Library et Créer des macros.
Les fonctions sont des blocs de logique réutilisables qui prennent des entrées, s'exécutent une seule fois et peuvent renvoyer un résultat. Ils sont parfaits pour les calculs ou les vérifications. Les macros sont des dispositions de graphique réutilisables qui s'étendent directement dans le blueprint dans lequel elles sont utilisées. Elles peuvent avoir plusieurs sorties d'exécution et sont utiles pour le contrôle de flux visuel.
Utilitaires de blueprint
Un utilitaire de blueprint (ou utilitaire d'éditeur) est un blueprint réservé à l'éditeur qui peut être utilisé pour effectuer des actions d'éditeur ou étendre les fonctionnalités de l'éditeur. Il peut exposer des événements sans paramètres sous forme de boutons dans l'interface utilisateur, et a la capacité d'exécuter toutes les fonctions exposées aux blueprints et d'agir sur l'ensemble actif d'acteurs sélectionnés dans le hublot.
Présentation d'une classe de blueprint
Avant de commencer, vous devez disposer d'un projet Unreal Editor basé sur le modèle à la première personne ou à la troisième personne (n'importe quelle variante).
Pour obtenir de l'aide sur la création d'un nouveau projet dans l'Unreal Engine, consultez la page
Ouvrir un blueprint existant
Étant donné que vous avez créé votre projet à partir d'un modèle, plusieurs blueprints sont déjà inclus dans votre projet afin que vous puissiez les consulter et les utiliser. Un exemple de classe de blueprint incluse est le blueprint de tremplin, qui dispose d'une fonctionnalité permettant de propulser le joueur vers le haut. Vous pouvez ajouter des instances de ce blueprint n'importe où dans votre niveau.
Pour ouvrir le blueprint du tremplin, procédez comme suit :
Dans l'Unreal Engine, cliquez sur le bouton Tiroir à contenu dans le coin inférieur gauche de l'écran. Vous pouvez également maintenir l'appui sur la touche CTRL tout en appuyant sur la barre d'espacement.
Accédez au dossier Contenu > LevelPrototyping > Interactif > Tremplin.
Une ressource
BP_JumpPad, qui est une classe de blueprint, apparaît. Double-cliquez sur cette ressource pour l'ouvrir dans l'éditeur de blueprint.Par défaut, le blueprint s'ouvre dans une nouvelle fenêtre. Vous pouvez ancrer une fenêtre en faisant glisser l'onglet portant le nom de la ressource en regard de l'onglet du niveau dans l'éditeur principal.
Dans l'éditeur de blueprint, vous pouvez définir des composants, effectuer des opérations de configuration, répondre à des événements, organiser et modulariser des opérations, définir des propriétés, etc. Les visuels et les fonctionnalités que vous ajoutez au blueprint s'appliquent à toutes les instances de ce blueprint qui se trouvent dans votre jeu.
Examinons la ressource BP_JumpPad. La partie supérieure de la fenêtre comporte trois onglets : Hublot, Graphique d'événements et Script de construction.
Créer un objet de niveau avec des composants
Cliquez sur l'onglet Hublot. Comme pour le hublot de l'éditeur de niveau principal, le hublot d'un blueprint sert à afficher et à modifier un blueprint.
Cet onglet comporte la représentation visuelle du tremplin, qui comprend une plateforme, une lumière et un effet de particules.
Sur le côté gauche de la fenêtre se trouvent également les composants du blueprint, ou les éléments qui définissent la composition du blueprint et ce qui apparaît dans votre niveau. Utilisez le panneau Composants pour ajouter, supprimer et réorganiser les composants du blueprint.
Les blocs de construction que vous pouvez ajouter à votre blueprint avec des composants sont les suivants :
Géométrie des collisions avec les composants de collision de capsule, de collision de boîte ou de collision de sphère.
Géométrie rendue sous la forme de composants de maillage statique ou de maillage squelettique.
Contrôles des déplacements avec composants de déplacement.
Vous pouvez créer un blueprint qui ne contient que des composants et aucun comportement scripté, en tant qu'objet de niveau réutilisable qui peut être modifié au sein d'un seul emplacement.
Vous pouvez également référencer les composants de votre blueprint ou leurs propriétés dans le graphique d'événements, afin de pouvoir effectuer des actions sur ces composants pendant l'exécution.
Examinons de plus près les composants qui font partie de BP_JumpPad :
BP_JumpPad possède un composant Point lumineux. Cliquez sur l'objet Point lumineux dans la liste Composants ou le hublot. Vous pouvez utiliser les outils de transformation pour déplacer et faire pivoter cette source de lumière.
Sur le côté droit de l'éditeur de blueprint se trouve le panneau Détails, qui répertorie les propriétés liées au composant sélectionné. Vous pouvez modifier l'intensité de cette source de lumière, la couleur de la lumière, etc.
Créer une fonctionnalité de blueprint
En regard de l'onglet Hublot se trouvent les onglets Graphique d'événements et Script de construction. Si vous créez des fonctions dans votre blueprint, les onglets de ces graphiques de fonctions apparaissent également ici.
Les graphiques contiennent le comportement et les fonctionnalités de conception et de jeu de vos blueprints. Ils vous permettent de créer la logique qui indique aux composants du blueprint comment se comporter.
La logique fait référence aux nœuds et aux connexions d'un blueprint.
Script de construction
Lorsqu'un acteur de blueprint apparaît dans le niveau, soit dans le hublot de l'éditeur de niveau, soit pendant le jeu, l'Unreal Engine construit d'abord ses composants, puis exécute son script de construction. Il s'exécute également dans l'éditeur lorsque vous transformez ou modifiez la propriété d'un acteur, de sorte que le résultat s'affiche immédiatement dans le hublot. Il sert à effectuer des actions d'initialisation qui configurent l'acteur de blueprint pour le jeu. Ces actions d'initialisation peuvent être spécifiques au contexte ; par exemple, l'application de différents matériaux à un objet en fonction du type de sol sur lequel il est placé.
Si vous cliquez sur l'onglet Script de construction de BP_JumpPad, un nœud Construction Script s'affiche ; il exécute une chaîne d'actions qui définit la couleur et d'autres propriétés du tremplin lorsque celui-ci apparaît pour la première fois dans le niveau.
Naviguer dans les graphiques de blueprint :
Pan : clic droit et glisser.
Zoom : utiliser la molette de la souris.
Cadrer la sélection : appuyez sur F pour centrer sur les nœuds sélectionnés.
Ajuster tout : appuyez sur A pour afficher le graphique dans son intégralité.
Accéder à : double-cliquez sur un nœud de fonction ou d'événement pour le localiser dans un graphique ou dans l'onglet correspondant.
Graphique d'événements
Le graphique d'événements d'un blueprint contient un graphique de nœud qui utilise des événements et des appels de fonction pour effectuer des actions en réponse à des événements de gameplay. Il permet de configurer l'interactivité et les réponses dynamiques. Par exemple, un blueprint de lumière peut répondre à un événement de dégâts en désactivant son composant de lumière et en changeant de matériau.
Toute la logique du graphique d'événements est une réponse à un événement qui se produit pendant le jeu, par exemple la réponse à une commande du joueur, le déclenchement d'animations ou la lecture de sons. Chaque fois que vous vous dites : "quand cela se produit, je veux exécuter cette action", vous devez commencer par un événement.
Un blueprint peut contenir plusieurs graphiques d'événements qui s'exécutent tous dans le cadre du même blueprint. L'utilisation de plusieurs graphiques d'événements sert uniquement à organiser la logique en sections distinctes et n'a pas d'incidence sur le comportement du blueprint.
Dans l'onglet Graphique d'événements de BP_JumpPad, une séquence de nœuds s'exécute lorsqu'un acteur chevauche ce blueprint, par exemple lorsque le joueur marche sur le tremplin dans le jeu. Lorsque cet événement se produit, le blueprint demande à l'acteur d'effectuer un saut, mais avec une vitesse supérieure à la normale.
Pour rechercher un nœud spécifique dans un graphique, utilisez le raccourci CTRL + F dans les vues de graphique. Par exemple, pour examiner le nœud Event ActorBeginOverlap, utilisez le raccourci CTRL + F et saisissez Event ActorBeginOverlap dans le champ de recherche. Sélectionnez le résultat pour centrer la vue sur ce nœud.
Un nœud qui peut exécuter des actions possède une broche d'exécution, également appelée broche Exec, représentée par le triangle blanc sur le nœud. Si la broche d'exécution d'un nœud n'est pas reliée à un autre nœud, le triangle a un contour blanc.
Vous remarquerez que le nœud Event ne possède pas de broche d'exécution d'entrée. En effet, un nœud Event s'exécute dès que l'événement défini a été déclenché dans le monde de jeu. Dans cet exemple, lorsqu'un acteur chevauche l'acteur de BP_JumpPad dans le jeu, cet événement se déclenche.
Un nœud peut également disposer de broches de données. Par exemple, le nœud Event ActorBeginOverlap dispose d'une broche pour Other Actor, qui est une référence à l'objet de niveau (acteur) qui chevauche l'objet de niveau BP_JumpPad. Les broches de données transmettent des valeurs entre les nœuds et les broches d'exécution contrôlent l'ordre d'exécution des nœuds.
La broche Exec du nœud Event ActorBeginOverlap est reliée au nœud Cast To Character. En d'autres termes, lorsqu'un acteur dans le monde (comme le joueur) chevauche l'acteur de tremplin, ce blueprint exécute le nœud Cast To Character.
Les connexions entre les nœuds sont souvent appelées liens.
Si vous déconnectez la broche Exec du nœud Event ActorBeginOverlap du nœud Cast To Character, mais que vous maintenez le lien à la broche Other Actor, rien ne se passe, car les broches Exec ne sont pas reliées ; autrement dit, le nœud Event ne déclenche pas le nœud Cast To Character.
Pour supprimer une connexion ou un lien, maintenez l'appui sur la touche Alt et cliquez sur ce lien. Faites glisser une broche vers une autre pour établir un lien.
Pour rediriger un lien, double-cliquez sur le lien pour créer un nœud de redirection. Placez le pointeur de la souris sur la note de redirection ; le pointeur se transforme en quatre flèches. Faites glisser le nœud de redirection pour le déplacer.
Pour en savoir plus sur l'utilisation des actions des nœuds dans le graphique d'événements, consultez les pages Placer des nœuds et Connecter des nœuds.
les variables
Les variables sont des propriétés qui :
renferment une valeur, par exemple la mesure de distance ou la vitesse à laquelle un personnage peut se déplacer ;
référencent un objet dans le monde, par exemple le maillage statique utilisé par un acteur.
Vous pouvez configurer des variables pour qu'elles ne soient accessibles qu'aux blueprints, ou les rendre modifiables dans l'éditeur de niveau afin que les concepteurs puissent facilement personnaliser les instances de blueprint placées dans un niveau.
Dans l'onglet Graphique d'événements de BP_JumpPad, examinez le panneau My Blueprint sur le côté gauche de l'éditeur de blueprint.
La section Variables comporte deux variables : Vitesse et Couleur cible.
Cliquez sur la variable Vitesse pour la sélectionner. Dans le panneau Détails, différentes propriétés sont liées à cette variable. Tout en bas de la liste se trouve la catégorie Valeur par défaut , qui vous permet de définir la valeur de la variable Vitesse.
Dans ce cas, l'option Vitesse est définie sur 0, 0, 800. Autrement dit, la vitesse appliquée au joueur est de 800 unités sur l'axe Z, soit vers le haut.
La fonctionnalité du tremplin est donc la suivante : "Lorsque le joueur marche sur ce tremplin, le déplacer vers le haut à une vitesse de 800 cm/seconde".
Si vous examinez les variables du tremplin, vous constatez qu'elles sont accompagnées d'icônes en forme d'œil ouvert. Ces icônes indiquent que ces variables sont publiques et modifiables, c'est-à-dire que vous pouvez les modifier sur toutes les instances de ce blueprint de votre niveau.
Vous pouvez remplacer les valeurs par défaut d'une variable modifiable par instance depuis l'éditeur de niveau sans avoir besoin d'ouvrir et de modifier le blueprint.
Pour obtenir un exemple illustrant la façon de modifier des variables en dehors d'un blueprint, procédez comme suit :
Cliquez sur l'onglet de votre niveau dans le coin supérieur gauche de l'Unreal Editor pour revenir à l'éditeur de niveau.
Ouvrez le navigateur de contenu puis, dans le dossier Tremplin, faites glisser la ressource
BP_JumpPaddans le niveau sur le sol. Assurez-vous qu'elle est sélectionnée.Dans le panneau Détails, recherchez la catégorie nommée Par défaut. Cette catégorie comporte les deux variables que vous avez vues plus tôt, à savoir Vitesse et Couleur cible. Ces deux variables sont visibles ici, car elles sont configurées comme étant modifiables dans le blueprint (icône d'œil ouvert).
Revenez à l'onglet
BP_JumpPad. Dans la section My Blueprint > Variables, cliquez sur l'icône d'œil de la variable Vitesse pour la rendre non publique et non modifiable. L'œil ouvert se transforme en œil fermé.Pour appliquer vos modifications, cliquez sur le bouton Compiler dans le coin supérieur gauche de l'éditeur de blueprint.
La compilation recherche les erreurs dans votre blueprint et met ce dernier à jour afin d'appliquer les dernières modifications dans votre niveau.
Revenez à l'éditeur de niveau, sélectionnez l'acteur BP_JumpPad et examinez de nouveau la section Détails > Par défaut. La variable Vitesse est manquante, car elle n'est plus modifiable par instance.
Pour restaurer la configuration d'origine des blueprints, revenez à l'éditeur de blueprint et cliquez à nouveau sur l'icône d'œil en regard de la variable Vitesse.
Cliquez sur Compiler et sur Enregistrer.
Lorsque les variables sont publiques et modifiables, elles peuvent également être utilisées par d'autres blueprints. Par exemple, le blueprint de niveau de votre niveau pourrait accéder à la variable Couleur cible du tremplin et l'utiliser pour changer la couleur du tremplin.
Pour en savoir plus sur les types de variables, la création et la modification de variables et le référencement de variables dans vos graphiques de blueprint, consultez la page Variables de blueprint.
Fonctions
Les fonctions sont des graphiques de nœuds appartenant à un blueprint spécifique, qui peuvent être exécutés ou appelés à partir d'un autre graphique de blueprint. Les fonctions n'ont qu'un seul point d'entrée désigné par un nœud portant le nom de la fonction et contenant une seule broche de sortie Exec. L'appel de la fonction depuis un autre graphique exécute la logique dans la fonction, en commençant par le nœud d'entrée de fonction.
Lorsque vous créez des classes de blueprint, il est possible que vous souhaitiez réutiliser une partie de la logique du graphique d'événements à plusieurs emplacements, voire dans d'autres blueprints. Au lieu de reconstruire la même logique à de nombreux emplacements, vous pouvez créer une fonction dans laquelle ajouter les nœuds, puis l'appeler depuis n'importe quel blueprint.
Lorsque vous appelez une fonction qui se trouve dans un autre blueprint, la fonction s'exécute toujours dans le blueprint où elle a été créée. L'appel vous permet simplement d'accéder à cette fonction de l'extérieur.
Par exemple, vous pouvez créer une fonction HasKey dans un blueprint de personnage joueur qui prend une clé requise, compare cette clé à l'inventaire du joueur, puis renvoie true ou false. D'autres blueprints (une porte, un coffre, un PNJ) peuvent alors activer cette fonction pour vérifier si le joueur possède une certaine clé avant d'adopter un autre comportement. Chacun de ces différents objets de niveau peut réutiliser la logique de la fonction HasKey du personnage joueur sans avoir à la recréer dans ses blueprints.
Si vous vous rendez compte que vous utilisez le même ensemble de nœuds plus de deux fois dans un graphique, pensez à le convertir en fonction ou en macro afin de pouvoir le réutiliser.
Pour en savoir plus, consultez la page Fonctions.
Ajouter des commentaires à la logique de blueprint
Vous pouvez ajouter des commentaires dans vos blueprints pour créer des notes visuelles qui regroupent les nœuds et expliquent le fonctionnement de chaque partie du blueprint. Les commentaires vous aident, vous et les membres de votre équipe, à comprendre en un coup d'œil la fonctionnalité des nœuds et à maintenir vos blueprints organisés.
Lors de la construction d'une logique de blueprint, concentrez-vous d'abord sur la création de la fonctionnalité, puis mettez en évidence les nœuds que vous avez ajoutés et insérez un commentaire pour les contenir et les décrire.
Pour ajouter un commentaire dans un blueprint, procédez comme suit :
Cliquez sur le graphique pour vous assurer qu'il s'agit du panneau actif.
Appuyez sur la touche C de votre clavier. Cela ajoute un champ de commentaire.
Double-cliquez sur le champ de texte en haut de la zone pour saisir un commentaire.
Pour redimensionner le bloc de commentaire, assurez-vous qu'il est sélectionné (surligné par un contour jaune), puis faites glisser une arête ou un coin.
Pour regrouper des notes dans un commentaire, faites glisser ces nœuds dans les limites du commentaire.
Vous pouvez également sélectionner un ou plusieurs nœuds et appuyer sur la touche C pour ajouter un commentaire qui contient les nœuds sélectionnés.
Vous pouvez également changer la couleur des commentaires pour vous aider à identifier rapidement les différentes zones de votre graphique.
Poursuivre l'exploration des blueprints
Maintenant que vous connaissez les principes de base qui régissent les blueprints, vous pouvez aller plus loin en explorant les sujets ou tutoriels ci-dessous.