Introduction à Blueprint
Voici venu le temps de vous présenter le grand, le terrible, l’inestimable Blueprint ! L’ensemble du fonctionnement de l’Unreal Engine repose dessus, alors je vais prendre le temps de vous le présenter comme il se doit.
Blueprint
Qu'est-ce que Blueprint ?
Blueprint est un système de programmation appelé système de script visuel ou « Visual Scripting » en anglais. Vous le savez sans doute, certaines personnes passent leurs journées à écrire des lignes de codes afin de réaliser des programmes informatiques. Ces gens se nomment des programmeurs, et non « programmateurs » comme je l’entends souvent.
Bien évidemment, le commun des mortels ne comprend pas ces lignes de codes, et heureusement pour nous, Epic Games a créé Blueprint. Avec Blueprint, on relie simplement des éléments et on les fait interagir entre eux grâce au Visual Scripting. On peut ainsi réaliser la même chose que les programmeurs mais sans avoir à bidouiller des centaines de lignes de code !
Ce système n’est pas totalement nouveau. Si vous avez déjà développé avec l’Unreal Engine 3 (UDK) vous avez sans doute déjà utilisé Kismet. Il s’agissait d’un système de Scripting visuel comme Blueprint mais il avait un gros défaut : tout se faisait dans le niveau de jeu.
Le problème de Kismet était le suivant : si vous programmiez un système de porte qui s’ouvrait quand le joueur se mettait devant celle-ci et que vous vouliez l’utiliser dans un autre niveau, vous deviez faire des copier-coller absolument partout pour faire le même système.
Blueprint va nous permettre de réaliser ce système de porte et de ne pas avoir à recopier le script de la porte 50 fois. En effet, Blueprint utilise un système de classe. Pour les programmeurs, vous serez sans doute plus familiers du terme "orienté objet" (POO). Si vous codez un système de porte qui s’ouvre quand le joueur se met devant, il suffira tout simplement de placer dans le niveau une porte contenant ce Blueprint.
Le gros point fort de Blueprint est son accessibilité et nous allons commencer très doucement afin de
vous familiariser avec l’outil. Blueprint donne une chance aux artistes, aux débutants ou bien aux gens n’aimant pas coder, de pouvoir réaliser le même contenu qu’un programmeur avec ses lignes de codes.
Blueprint, uniquement dédié aux débutants ?
Si je sais coder en C++, est-ce que ça vaut le coup d’utiliser Blueprint ?
Oui, Oui et Oui ! Le C++ et Blueprint fonctionnent parfaitement ensemble. Si vous êtes programmeur, vous pourrez créer des classes en C++ et les utiliser dans un Blueprint pour qu’un artiste puisse les reprendre facilement sans avoir à rentrer dans le code. Blueprint n’a absolument pas à rougir de la puissance du C++, les deux sont complémentaires.
Avant de véritablement commencer notre apprentissage sur Blueprint, j’aimerais vous montrer qu’il ne s’agit pas d’un outil dédié uniquement aux débutants. Je vous entends déjà râler, amis programmeurs ! (Je dis ça car, personnellement, je ne voyais aucun intérêt à l’utiliser.) Je vais vous présenter deux projets. Le premier se nomme Tappy Chicken que vous pouvez retrouver dans le marché.
Il s’agit d’une copie du jeu Flappy Bird. Mais la chose remarquable ici, c’est que ce jeu a été codé avec Blueprint par un seul artiste en une soirée. Les animations, les sauvegardes, la physique, les menus, les interfaces, tout cela a été réalisé par du Blueprint sans une seule ligne de code C++.
Il y a peu, j’ai participé à une Game Jam (développer un jeu vidéo en 72 heures) et je m’étais fixé la contrainte suivante : « Ne pas taper une seule ligne de code en C++ ».
Le jeu que j’ai réalisé à cette occasion, Snake Is Over, est une réussite de ce côté. Ayant l’habitude de coder en C++, je dois vous avouer qu’utiliser Blueprint a vraiment été utile et m’a permis d’être beaucoup plus efficace. En effet, Blueprint m'a permis de réaliser un prototype du jeu très rapidement (en 30 minutes, le prototype du jeu était terminé). Grâce à cela, nous avons ainsi pu terminer le jeu dans les temps !
Blueprint est donc un système extrêmement puissant qui permet de réaliser des prototypes de jeux très rapidement et facilement. Blueprint a été pensé pour être utilisé par des débutants, des artistes ou même pour des programmeurs confirmés.
Les bases de la programmation
Nous y voilà ! Nous allons enfin utiliser Blueprint. Pour commencer, sachez que vous pouvez créer un code Blueprint soit dans un Level Blueprint soit dans un Blueprint Class. La différence est importante !
Les différents types de blueprint
Les classes Blueprint ont été conçues pour créer des assets interactifs comme des portes qui s’ouvrent, des leviers à actionner, des boutons, des power up etc.
On trouve aussi des blueprints associés à des niveaux. Le Level Blueprint est similaire à Kismet avec l’Unreal Engine 3. Chaque niveau a son propre Level Blueprint. Il permet de manipuler des Actors, de contrôler des cinématiques, ou de créer des checkpoints dans ce niveau uniquement. Le Level Blueprint peut interagir avec les Blueprint Class (c’est à dire qu’il peut accéder et modifier les variables des classes Blueprint).
Nous verrons plus tard comment les différences entre ces deux types de Blueprint prennent forme ; en attendant nous allons voir comment utiliser le Level Blueprint.
Pour ouvrir le Level Blueprint, cliquez sur le bouton « Blueprints » tout en haut puis sur «Open Level Blueprint ». Cette action déclenche l’ouverture du Blueprint Editor (l’éditeur de Blueprint)
Présentation de l'interface
Dans l’éditeur de blueprint, vous trouverez quatre grandes zones :
La section 1 « My Blueprint ». Vous trouverez ici les références des variables, macros, fonctions que vous créerez.
La section 2 : « Toolbar ». C’est la barre d’outils qui permet par exemple de compiler votre Blueprint ou bien de tout simplement lancer votre jeu.
La section 3 : « Details ». C’est ici que l’on va définir les différentes caractéristiques de nos variables et évènements. Si vous souhaitez par exemple créer une variable de type float contenant la vie du joueur, c’est ici qu’il faudra la définir.
La section 4 : « Event Graph ». C’est là que vous passerez le plus de temps. Dans cet emplacement vous créerez l’algorithme de votre Blueprint (son mode de fonctionnement).
Dans cette interface, vous allez pouvoir créer des variables, des fonctions, des macros et des événements qui, tous ensembles, vont permettre de fixer les rouages de votre jeu. Pour commencer, nous allons en revenir à un classique : afficher le nom du joueur ! Habituellement, on affiche “Hello World” mais il faut savoir s’adapter, après tout, nous sommes des développeurs de jeux vidéos, nous. :p
Afficher le nom du joueur
Pour commencer, nous allons nous poser la question suivante :
Quand veut-on que le nom du joueur s'affiche ?
Les événements
Il existe une infinité de solutions, on peut l’afficher quand le joueur appuie sur un bouton, quand il se trouve dans une certaine zone, etc. Pour définir ce qui devra déclencher l’action, on va utiliser des « Events » (des événements en français).
Je vais maintenant vous présenter les 2 évènements les plus utilisés :
Event BeginPlay – L’évènement s’exécute quand le jeu se lance ; c’est-à-dire quand vous appuyez sur le bouton Play
Event Tick – Cet événement se lance à chaque image que votre écran affiche. La majorité des jeux tournant sur console de salon tournent en 30 FPS. Dans ce cas précis, si vous souhaitez afficher un message avec cet évènement, vous afficherez 30 fois ce message en une seconde.
Il existe beaucoup d'autres événements, que je vous invite d'ailleurs à découvrir, mais pour l'instant nous en resterons là. Pour que le nom du joueur s'affiche dès que le jeu se lance, nous utiliserons Event BeginPlay. Cet événement exécutera notre algorithme au début du jeu. En plein milieu de l’Event Graph, faites un clic droit afin d’afficher les fonctions possibles. :)
Comme vous pouvez le voir, on trouve ici une barre de recherche permettant de chercher une fonction, une variable ou un event. Tapez dans cette barre de recherche « Event BeginPlay » et voyez votre événement apparaître à l'écran !
On sait maintenant QUAND notre évènement va se lancer, il ne nous reste plus qu’à lui préciser ce qu'il doit se passer à ce moment-là.
Les fonctions
La fonction nommée Print String permet d’afficher une chaîne de caractère et ça tombe bien, c’est ce que l’on veut faire !
À partir de la grosse flèche blanche de l’event BeginPlay, tracez une ligne vers une zone vide de l’Event Graph et relâchez le clic gauche de votre souris. Une fenêtre apparaît. Cherchez dans la barre de recherche « Print String » et cliquez dessus pour faire apparaître la fonction d’affichage de chaîne de caractères.
Vous devriez maintenant avoir 2 blocs : l'événement BeginPlay et la fonction d'affichage Print String. Il ne nous reste plus qu'à préciser ce que la fonction Print String doit afficher. Dans le chapitre suivant, je vous montrerai comment utiliser une variable mais en attendant, quelques explications sont nécessaires.
Ce que vous voyez en rose avec écrit "In String" est ce qu'on appelle un paramètre.
Concrètement, la fonction "Print String" prend en paramètre la chaine de caractère (string) "Hello" et va donc l'afficher dans la console. Lancez maintenant le jeu en appuyant sur "Play".
Retournez dans le level Blueprint et modifiez le paramètre (mettez n'importe quoi à la place de "Hello"). Relancez le jeu et cliquez de nouveau sur « Play »
La chaine de caractère s’affiche en haut à gauche de votre écran et disparaît au bout de quelques instants.
En résumé
Comme d'habitude, voici un récapitulatif de vos nouvelles compétences :
Vous savez ce qu'est Blueprint
Vous êtes capable d'utiliser l'éditeur
Vous connaissez les events et les fonctions
Vous savez utiliser quelques fonctions comme Print String
C’était vraiment simple et je suis certain que vous avez tous réussi ! Dans le prochain chapitre nous irons un peu plus loin en utilisant des variables.