Les classes Blueprint

Jusqu’à maintenant, nous avons surtout parlĂ© des blueprints liĂ©s Ă  un niveau de jeu mais comme je vous l’ai dit au dĂ©but de la partie sur Blueprint, il existe aussi ce qu’on appelle des classes Blueprint.

C’est un sujet trĂšs large et aux variations infinies. Pour commencer, je vous propose de mettre notre nez dans une classe qui existe dĂ©jĂ  dans le template FPS : la classe personnage.

Les rudiments de la classe personnage

Bien sĂ»r, elle ne s’appelle pas “classe personnage”, ce serait trop simple. Vous la trouverez sous le nom de FirstPersonCharacter et elle rĂ©git le comportement du personnage incarnĂ© par le joueur. Quand on s’intĂ©resse Ă  cette classe, il y a un certain nombre de notions qu’il vaut mieux maĂźtriser avant.

Le Player Start

Pour commencer, j’aimerais vous parler du Player Start. Il permet de faire apparaĂźtre le joueur Ă  un endroit donnĂ© ; on dit gĂ©nĂ©ralement que le joueur “spawn”. Cette fonctionnalitĂ© se trouve dans la fenĂȘtre Modes dans la catĂ©gorie Basic de l'Ă©diteur.

En plaçant le Player Start dans le niveau, observez bien la flùche bleue claire, elle indique la direction du regard du joueur lorsqu’il apparaütra.

En s’attaquant au personnage que le joueur incarnera, on touche Ă  ce qu’on appelle le Game mode. Il s’agit d’un ensemble de rĂšgles communĂ©ment acquises mais qui peuvent aussi ĂȘtre adaptĂ©es.

Le GameMode

Le GameMode regroupe différentes classes comme le HUD, le PlayerController ou le Pawn :

  • Le HUD correspond Ă  tout ce qui s'affiche en pĂ©riphĂ©rie de l'Ă©cran et qui n'appartient pas Ă  l'environnement du jeu. Par exemple, il s’agit du score du joueur, de la santĂ© de son personnage ou de l’arme qu’il porte : c'est l'interface du jeu.

  • Le Pawn est la classe de base  du jeu pouvant ĂȘtre contrĂŽlĂ©s par le joueur ou par une intelligence artificielle (IA). Le Pawn dĂ©termine son apparence d’un personnage joueur ou d’une entitĂ© IA, mais aussi comment il interagit avec le monde en termes de collisions ou autres interactions physiques.

  • Le PlayerController reprĂ©sente l'interaction que le joueur a avec son personnage.

Pour trouver le Game Mode, cliquez sur l’icîne Blueprints puis suivez ce chemin :

GameMode : Edit FirstPersonGameMode > Pawn : Edit FirstPersonCharacter > Edit FirstPersonCharacter.

L’éditeur Blueprint s’ouvre : ce blueprint est indĂ©pendant du Level Blueprint. En effet, il peut ĂȘtre utilisĂ© dans plusieurs niveaux. Le blueprint du personnage est donc une classe Blueprint (ou class Blueprint si vous avez pris le parti de vous exprimer en anglais) !

Les différences entre un level et une class Blueprint

On observe principalement trois différences avec le level Blueprint :

1) On a accĂšs Ă  un nouveau panneau Components situĂ© en haut Ă  gauche de l’éditeur. Pour rappel, quand vous utilisez le level Blueprint et que vous souhaitez faire rĂ©fĂ©rence Ă  un mesh se trouvant dans le niveau, vous devez cliquer dessus et ensuite, Ă  partir de l’event Graph, vous devez tapez « reference to  ». On fonctionne diffĂ©remment avec les classes Blueprint. 

2) L’onglet Viewport permet de visualiser le rendu graphique de la classe Blueprint c’est-Ă -dire le look de notre personnage et l’emplacement de la camĂ©ra.

3) L’onglet Construction Script qui sert Ă  effectuer des opĂ©rations d’initialisation.

Si vous avez lu le chapitre sur les materials, vous savez déjà comment ces onglets fonctionnent. ;) 

Ajouter une lampe torche

Pour dĂ©couvrir le fonctionnement de la classe FirstPersonCharacter, rien de tel que de la modifier ! Nous allons crĂ©er une lampe torche Ă  partir de la classe personnage, pour cela il va falloir crĂ©er un nouveau component. Depuis l’éditeur Blueprint du FirstPersonCharacter, cliquez sur Add Component en haut Ă  gauche puis cherchez dans la barre de recherche « SpotLight ».

Vous devriez maintenant voir votre SpotLight dans la fenĂȘtre Components en haut Ă  gauche et dans le Viewport. Nous souhaitons que cette lampe soit rattachĂ©e (reliĂ©e, affectĂ©e) au personnage. Pour cela, cliquez sur la SpotLight dans la fenĂȘtre « Components » et glissez-la sur « Mesh2P » qui correspond Ă  l’apparence visuelle du personnage (aussi appelĂ©e skin qui signifie peau en anglais).

Un objet est correctement rattachĂ© Ă  un autre quand un triangle est visible devant le composant parent (ou maĂźtre). À prĂ©sent, nous pouvons dĂ©placer la SpotLight dans le Viewport. Nous allons la mettre juste devant la main du personnage. Si vous le souhaitez, vous pouvez en profiter pour modifier quelques paramĂštres comme la couleur de la lumiĂšre, son intensitĂ© et l’angle.

Vous ĂȘtes libres de mettre vos propres paramĂštres. Le but de la manƓuvre est de pouvoir simuler la projection que pourrait rĂ©aliser une lampe torche. Si vous lancez le jeu, vous observerez que votre lumiĂšre suivra vos mouvements !

Parfait, c’est le dĂ©but de la libertĂ© ! Mais modifier une classe existante, c’est bien, crĂ©er la sienne, c’est mieux. ;)

Créez une classe de type Actor

Nous allons maintenant crĂ©er notre premiĂšre classe Blueprint. Notre classe comportera un trigger (un dĂ©clencheur) et un mesh (objet 3D). Pour rĂ©sumer l’effet recherchĂ© : le trigger sera un cube invisible qui dĂ©tectera la prĂ©sence du joueur. Si le joueur rentre dans le trigger alors on multiplie par 2. La taille du blueprint sera donc doublĂ©e. Quand le joueur sortira du trigger, le blueprint reprendra sa taille normale.

Cette partie est extrĂȘmement simple, alors c’est parti !

Depuis le content browser, allez dans le dossier FirstPersonBP > Blueprint.

Faites ensuite un clic droit avec votre souris dans le dossier et cliquez sur Blueprint Class. Sélectionnez le type Actor et renommez votre classe Blueprint en SuperScaler.

Double cliquez sur SuperScaler dans le content browser afin d’ouvrir le Blueprint Editor. À partir de la fenĂȘtre Components, ajoutez un Static Mesh et une Box Collision.

 

Nous souhaitons Ă  prĂ©sent ajouter un mesh Ă  notre composant static mesh. SĂ©lectionnez votre static mesh dans la fenĂȘtre Components puis dans la fenĂȘtre Details, dans la catĂ©gorie Static Mesh, choisissez CubeMesh dans le menu dĂ©roulant.

SĂ©lectionnez maintenant votre Box qui fait office de Trigger dans la fenĂȘtre Components. Modifiez ses valeurs de scale si besoin afin que le Mesh soit inclus dans la boite de collision, et non l’inverse. Cliquez ensuite sur le « + » de l’évĂšnement On Component Begin Overlap dans la fenĂȘtre Details.

Rappelons briĂšvement ce que nous voulons faire :

Pour changer la taille d’un objet, il faut chercher la fonction « Set Actor Scale 3D » qui permet justement de changer la taille d’un Actor.

Comme vous pouvez le constater, il existe deux paramĂštres : Target (la cible) et New Scale 3D (la nouvelle
Ă©chelle de l’objet 3D) qu'il va falloir dĂ©finir :

  • Par dĂ©faut le paramĂštre Target Ă  comme valeur Self, c’est-Ă -dire lui-mĂȘme. En d’autres termes, par dĂ©faut, c’est l’intĂ©gralitĂ© du blueprint qui changera de dimensions. Dans notre cas le trigger ET le mesh qui se trouve dans la classe.

  • New Scale 3D accepte un nouveau type de variable : Vector. Le type Vector se caractĂ©rise par ses 3 valeurs : X, Y et, Z. Il est donc tout indiquĂ© pour reprĂ©senter un objet en 3D.

Pour commencer, mettez une valeur de 10 pour X, Y et Z et laissez l’entrĂ©e Self vide pour le paramĂštre Target.

Ensuite, cliquez sur le bouton Find in CB afin de localiser votre SuperScaler dans le content browser.

Depuis le content browser, glissez-déposez votre classe blueprint SuperScaler dans le niveau .

C’est le moment des tests : quand on lance le jeu, le cube a une taille normale. Quand on rentre dans le trigger box, alors sa taille est 10 fois plus grandes sur les 3 axes par rapport à sa taille initiale (la taille initiale est de 1, 1, 1).

Nous allons maintenant faire en sorte de multiplier par 2 la taille initiale du Blueprint à chaque fois qu’on rentre
dans le Trigger.

Pour cela, il faut récupérer la taille du Blueprint puis la multiplier par 2. Imaginons que la taille initiale soit de
1, si on multiplie le vecteur par 2, on obtient :

$\(x=1*2=2\)$

 

$\(y=1*2=2\)$$\(z=1*2=2\)$

 

En résumé, nous avons :  (X,Y,Z) = (2,2,2).

Si le joueur rentre une nouvelle fois dans le trigger on aura les valeurs suivantes pour le vecteur : 

x=2∗2=4

y=2∗2=4

z=2∗2=4

  

Soit :  

$\((X,Y,Z)=(4,4,4)\)$

 

Facile !

Pour vous faire comprendre une derniĂšre chose avec les vecteurs, si on avait les valeurs (5.4, 6.6, 7.09) pour
le vecteur et qu’on le multipliait par deux, on aurait les rĂ©sultats suivants : (10.8, 13.2, 14.18).

On multiplie chaque valeur (X, Y, Z) par le nombre multiplicateur (5.4*2, 6.6*2, 7.09*2).

Pour récupérer la taille du Blueprint , on utilise la fonction Get Actor Scale 3D. Depuis la valeur de retour de cette fonction, faites une multiplication en cherchant « * » dans la barre de recherche des fonctions (vector * float) puis affectez la valeur 2 à la multiplication.

Enfin, liez le résultat de cette multiplication à la fonction Set Actor Scale 3D : 

Voici ce que dit notre algorithme : « SI quelque chose (le joueur ici) rentre dans ce Trigger ALORS on redimensionne le blueprint en multipliant par 2 sa taille actuelle... »

Félicitations ! Vous venez de créer une classe Blueprint dont les composants changent de dimensions à chaque fois que le joueur rentre dans le trigger. Pourquoi ne pas essayez de faire évoluer cette classe ?

  1. Utilisez l’évĂšnement « On Component End Overlap » pour redonner au blueprint sa taille initiale quand le joueur sort du trigger ;

  2. Utilisez l’évĂšnement « OnComponentHit » pour dĂ©truire la Classe Blueprint quand un projectile touche le trigger. Utilisez la fonction "Destroy Actor".

  3. Créez ensuite un nouveau Blueprint « Interrupteur ». Ce blueprint basique comprendra  deux components : une point light et une box collision.

 

  • Si on rentre dans le trigger, la point light s’allume et est donc par dĂ©faut Ă©teinte.

  • Si on sort du trigger, la lumiĂšre s’éteint.

Si vous rencontrez des difficultĂ©s, n’hĂ©sitez pas Ă  lire la documentation d’Unreal Engine, Ă  vous inspirer de vidĂ©os trouvĂ©es sur le Net ou bien posez vos questions sur le Forum. La recherche active fait partie intĂ©grante du travail d’un dĂ©veloppeur de jeu vidĂ©o. Il n’y a pas de honte Ă  demander conseil ou Ă  s’inspirer du travail des autres, c’est mĂȘme plus que conseillĂ© si vous voulez rĂ©ussir dans cette voie !

En résumé

Vous ĂȘtes Ă  prĂ©sent capable de : 

  • CrĂ©er votre propre classe ;

  • Utiliser des fonctions Blueprint ;

  • Utiliser les Ă©vĂ©nements d'un trigger.

 

Ever considered an OpenClassrooms diploma?
  • Up to 100% of your training program funded
  • Flexible start date
  • Career-focused projects
  • Individual mentoring
Find the training program and funding option that suits you best