40. Maîtriser les bases de l''éclairage dans Unreal Engine 4

Dans ce chapitre bonus, nous explorons les fondements de l’éclairage sous Unreal Engine 4. Si votre niveau utilise par défaut une Skylight et une Directional Light, il est essentiel de comprendre comment manipuler ces sources pour donner une ambiance unique à votre projet, qu’il s’agisse d’un environnement diurne éclatant ou d’une scène nocturne mystérieuse.

Au programme de cet épisode :#

  • La Directional Light (Light Source) : Apprendre à modifier la couleur, l’intensité et l’angle de votre soleil pour transformer radicalement l’ambiance visuelle.
  • Les effets atmosphériques : Découvrir les Light Shafts (rayons crépusculaires) pour ajouter du réalisme et de la profondeur à vos scènes.
  • La Skylight : Comprendre son rôle dans l’éclairage global et comment la synchroniser avec votre ciel via la fonction “Refresh Material”.
  • Manipulation manuelle : Utiliser les outils de rotation pour orienter vos sources lumineuses et observer l’impact immédiat sur les ombres portées.

Ce qui reste d’actualité aujourd’hui#

Bien que les versions récentes d’Unreal Engine (UE5) aient introduit le système Lumen, les principes fondamentaux abordés ici restent le socle de tout éclairage :

41. Maîtriser les sources lumineuses : Point Light et Spot Light

Dans cet épisode, nous explorons les outils fondamentaux de l’éclairage dans Unreal Engine 4. Après avoir appréhendé la Directional Light (simulant le soleil), il est temps de passer aux sources de lumière localisées : la Point Light et la Spot Light. Comprendre comment ces sources interagissent avec votre environnement est crucial pour donner du volume, de la profondeur et une ambiance unique à vos scènes.

Résumé des points clés#

  • Point Light : Une source de lumière omnidirectionnelle qui diffuse dans toutes les directions à partir d’un point central. Idéale pour simuler des ampoules, des bougies ou des feux.
  • Réglages de la Point Light : Vous pouvez ajuster l’intensité, la couleur et surtout l’ Attenuation Radius pour contrôler la portée et la concentration de la lumière.
  • Spot Light : Une source de lumière directionnelle limitée par un cône. Elle permet de cibler précisément des zones ou des objets spécifiques sans éclairer le reste de la scène.
  • Réglages de la Spot Light : En plus des paramètres classiques, vous pouvez modifier l’ Outer Cone Angle pour élargir ou resserrer le faisceau lumineux.
  • Expérimentation : N’hésitez pas à créer un projet de test pour manipuler ces paramètres et observer les changements en temps réel.

Ce qui reste d’actualité aujourd’hui#

Bien que les versions récentes d’Unreal Engine (UE5+) aient introduit le système Lumen pour une gestion dynamique de la lumière globale, les bases de l’éclairage restent identiques. La gestion des Point Lights et Spot Lights demeure le socle indispensable pour :

42. Éclairage dynamique et mise en valeur des objets

Dans cet épisode, nous allons améliorer l’aspect visuel de nos pièces en intégrant un système d’éclairage dynamique. L’objectif est double : rendre nos objets plus attrayants visuellement et guider naturellement le joueur à travers le niveau en créant un chemin lumineux clair.

Résumé de l’implémentation#

  • Accès au Blueprint : Navigation dans le dossier zone pour ouvrir le blueprint zone_pièce.
  • Ajout de composant : Insertion d’un composant Point Light au sein de l’acteur.
  • Configuration : Ajustement de la couleur (teinte orangée) et de l’intensité lumineuse (réglée à 1000) dans les détails du composant.
  • Test en temps réel : Vérification immédiate dans le viewport du niveau pour valider l’impact visuel.
  • Logique de jeu : Observation du comportement dynamique où la lumière disparaît logiquement lorsque la pièce est ramassée par le joueur.

Ce qui reste d’actualité aujourd’hui#

Bien que cet épisode se concentre sur Unreal Engine 4, les principes fondamentaux restent parfaitement transposables aux versions plus récentes (UE5) :

43. Créer une lumière scintillante dynamique

Dans cet épisode, nous terminons notre chapitre bonus consacré aux lumières en apprenant à créer un effet de “lumière scintillante”. Grâce aux Blueprints, nous allons automatiser le changement d’intensité et de couleur d’une source lumineuse pour donner vie à nos environnements.

Résumé de la manipulation#

Pour réaliser cet effet, nous suivons ces étapes clés dans l’éditeur :

44. Créer un système de Checkpoint

Dans cet épisode, nous allons apprendre à implémenter un système de checkpoint efficace. L’objectif est simple : éviter que le joueur ne doive recommencer tout le niveau après une chute ou une erreur, en le téléportant à sa dernière position validée.

Résumé de la mise en place#

  • Variable de suivi : Création d’une variable DernierCheckpoint de type Vector dans le FirstPersonCharacter.
  • Initialisation : Utilisation de l’événement BeginPlay pour définir la position de départ du joueur comme premier checkpoint.
  • Zone de défaite : Modification du Blueprint ZoneDeDefaite pour utiliser SetActorLocation vers la valeur de DernierCheckpoint au lieu de recharger le niveau.
  • Création du Checkpoint : Création d’un acteur ZoneCheckpoint avec une BoxCollision.
  • Logique de collision : Utilisation du CastToFirstPersonCharacter pour mettre à jour la variable DernierCheckpoint du joueur lors du passage dans la zone.
  • Optionnel : Ajout d’un nœud DestroyActor après la mise à jour du checkpoint pour empêcher le joueur de revenir sur un ancien point de sauvegarde.

Ce qui reste d’actualité aujourd’hui#

Bien que cet article traite d’Unreal Engine 4, les concepts fondamentaux restent parfaitement transposables à Unreal Engine 5 :

45. Préparation du second niveau et optimisation de l''UI

Dans cet épisode, nous faisons une pause dans la complexité technique pour préparer la structure de notre second niveau. L’objectif est de valider que nos systèmes de gameplay (checkpoints, zones de mort, collecte de pièces) sont modulaires et réutilisables. Nous en profitons également pour refactoriser l’affichage de notre interface utilisateur (UI) afin de la rendre globale et automatique.

Résumé de l’épisode#

  • Modularité des assets : Création d’un second niveau en réutilisant les blueprints existants (pièces, checkpoints, zones de kill).
  • Refactorisation de l’UI : Déplacement de la logique d’affichage du widget (Create Widget / Add to Viewport) du Level Blueprint vers le Character Blueprint.
  • Avantage de l’approche : En plaçant l’UI dans le personnage, celle-ci s’initialise automatiquement à chaque chargement de niveau, évitant de dupliquer du code dans chaque Level Blueprint.
  • Constat technique : Le score actuel est local au niveau. Le passage d’un niveau à l’autre réinitialise les variables, ce qui introduit la nécessité d’un système de persistance de données (GameInstance).

Ce qui reste d’actualité aujourd’hui#

Bien que cet épisode se concentre sur Unreal Engine 4, les principes fondamentaux abordés restent des piliers du développement sous Unreal Engine 5 :

46. Persistance des données entre les niveaux avec la Game Instance

Dans cet épisode, nous abordons une problématique classique du développement de jeux vidéo : comment conserver des informations (comme le score du joueur) lorsqu’on change de niveau. Par défaut, Unreal Engine réinitialise les variables de votre personnage à chaque chargement de map. Pour pallier cela, nous allons utiliser la Game Instance.

Résumé du fonctionnement#

La Game Instance est un objet global qui survit au changement de niveau. Voici les étapes clés pour mettre en place votre système de score persistant :

47. Création d''un menu de sauvegarde et gestion de l''interface

Dans cet épisode, nous posons les bases techniques nécessaires à la mise en place d’un système de sauvegarde persistante. Avant de manipuler les données, il est indispensable de créer une interface utilisateur (UI) permettant au joueur d’interagir avec le système de sauvegarde. Nous allons voir comment créer un menu simple et gérer son affichage via le Blueprint de votre personnage.

Résumé de la mise en place#

  • Création du Widget : Conception d’un menu basique contenant deux boutons (sans logique pour le moment).
  • Logique d’affichage (Flip Flop) : Utilisation du node Flip Flop pour alterner entre l’ouverture et la fermeture du menu à chaque pression de la touche ‘P’.
  • Gestion des variables : Stockage du widget dans une variable (W_Menu) pour pouvoir le manipuler (l’ajouter au viewport ou le supprimer) sans avoir à le recréer.
  • Interaction souris : Utilisation du node Set Show Mouse Cursor pour permettre au joueur de cliquer sur les boutons, en ciblant correctement le Player Controller.
  • Nettoyage : Utilisation de Remove from Parent pour libérer l’interface de l’écran.

Ce qui reste d’actualité aujourd’hui#

Bien que les versions d’Unreal Engine aient évolué, les principes fondamentaux abordés ici restent des piliers du développement :

48. Mise en place d''un système de sauvegarde persistant

Dans cet épisode, nous abordons une étape cruciale pour tout jeu : la persistance des données. Contrairement à la GameInstance qui est réinitialisée à chaque fermeture du jeu, l’objet SaveGame permet d’écrire des informations directement sur le disque dur de l’utilisateur.

Résumé des étapes clés#

  • Création de la classe SaveGame : Création d’un Blueprint de type SaveGame (nommé MySaveGame) pour stocker les variables persistantes.
  • Définition des variables : Ajout de S_score (Integer) et S_niveau (Name) avec une nomenclature spécifique pour les distinguer des variables temporaires.
  • Logique de sauvegarde :
    • Utilisation du node Create Save Game Object pour instancier la classe.
    • Récupération des données actuelles depuis le ThirdPersonCharacter (pour éviter les décalages de la GameInstance).
    • Utilisation du node Save Game to Slot pour écrire les données sur le disque dans un emplacement nommé (“save”).
  • Organisation : Utilisation des Reroute Nodes pour maintenir la lisibilité du graphe Blueprint.

Ce qui reste d’actualité aujourd’hui#

Bien que cet épisode se concentre sur Unreal Engine 4, les principes fondamentaux de la persistance des données restent identiques dans Unreal Engine 5 :

49. Implémenter le chargement de partie dans Unreal Engine 4

Dans cet épisode, nous finalisons notre système de sauvegarde en nous concentrant sur la logique de chargement. Après avoir appris à enregistrer les données, il est crucial de savoir comment les récupérer, les injecter dans la GameInstance pour assurer la persistance entre les niveaux, et enfin déclencher le chargement du bon niveau.

Résumé de la procédure de chargement#

  • Load Game from Slot : Utilisation du nœud pour récupérer les données du fichier de sauvegarde spécifié.
  • Cast to SaveGame : Vérification que les données chargées correspondent bien à votre classe SaveGame personnalisée.
  • Récupération des variables : Extraction du score et du nom du niveau via les fonctions Get de votre objet de sauvegarde.
  • Synchronisation avec la GameInstance : Injection des données chargées dans la GameInstance pour que le joueur puisse les récupérer dès le chargement du niveau.
  • Open Level : Utilisation du nom du niveau stocké dans la sauvegarde pour téléporter le joueur au bon endroit.
  • Bonne pratique : Utiliser des variables de type String pour le nom du slot afin de faciliter la maintenance du code.

Ce qui reste d’actualité aujourd’hui#

Bien que le système de sauvegarde par menu soit une approche classique, les principes fondamentaux abordés ici restent le socle de tout système de persistance dans Unreal Engine :