Blueprint ou C++ dans Unreal Engine 5 : lequel choisir ?
Tu hésites entre Blueprint et C++ pour ton jeu ? Ce guide te donne les forces de chacun, le moment où passer au C++ et la façon de les faire travailler ensemble. À la fin, tu sauras comment une classe C++ devient visible aux Blueprints et ce qu’est un Blueprint enfant. Tout est vérifié sur la documentation officielle d’Epic Games.
Deux langages, un seul jeu
Un Blueprint est fait de nœuds reliés par des fils. Le C++ fait le même genre de travail, mais en texte. Un projet peut être tout en Blueprint, tout en C++ ou, le plus souvent, un mélange des deux.
Epic distingue deux façons de travailler :
- Programmer, c’est créer un système de base, comme la conduite des véhicules. Ce travail se fait plutôt en C++.
- Scripter, c’est se servir de ce système pour un comportement précis, comme un bateau dans un port. Ce travail se fait plutôt en Blueprint.
C’est une tendance, pas une règle.
Les forces de chacun
Le Blueprint :
- Il permet d’itérer vite : essayer, corriger et retester en peu de temps. C’est parfait pour un prototype.
- Un designer ou un artiste peut lire un graphe.
- Il est conçu pour éviter les crashs : une référence vide donne une erreur, pas un plantage du jeu.
Le C++ :
- Il s’exécute plus vite. Il devient du code machine, alors qu’un Blueprint passe par une machine virtuelle, un intermédiaire en plus.
- Il ouvre les couches profondes du moteur et les bibliothèques externes, c’est-à-dire du code écrit hors d’Unreal.
- Le multithreading, qui fait travailler plusieurs cœurs en même temps, demande du C++.
Souvent, l’écart de vitesse ne se voit même pas. Il se voit surtout avec les grosses boucles, beaucoup de données, ou beaucoup de copies d’une classe qui utilise Tick. Un comportement simple, unique et que tu règles souvent reste un bon cas pour le Blueprint.
Le bon mélange : le C++ en fondation
Le conseil d’Epic : le C++ sert de fondation, et les Blueprints se construisent dessus. Commence en Blueprint. Si le jeu rame, mesure d’abord avec stat unit (Unreal Insights va plus loin). Ensuite, passe en C++ seulement la partie trop lente.
Passer au C++ : les grandes étapes
En C++, le plan d’un objet s’appelle une classe. Un Blueprint est aussi une classe, faite de nœuds. Voici le chemin :
- Il te faut un IDE, un éditeur de code. Sous Windows, c’est Visual Studio ; sur Mac, Xcode.
- Pas besoin de recommencer ton projet : ta première classe C++ transforme un projet Blueprint en projet de code, et tes Blueprints continuent de marcher.
- Tu crées la classe depuis l’éditeur, avec un nom en lettres et chiffres. Unreal génère un
.het un.cppdans le dossier Source. - Tu marques ce que les Blueprints doivent voir, puis tu crées un Blueprint enfant de ta classe.
Le pas à pas complet, avec les captures de l’éditeur, des quiz et un mini-projet, est dans le chapitre « C++ pour Unreal » du cours.
Rendre une fonction C++ utilisable en Blueprint
UFUNCTION(...), écrit sur la ligne au-dessus d’une fonction dans le .h, la fait connaître à Unreal. C’est le même principe que UPROPERTY pour une variable.
- BlueprintCallable : la fonction devient un nœud bleu que le Blueprint appelle quand il veut. Le code reste en C++.
- BlueprintImplementableEvent : l’inverse. Le C++ déclare la fonction et l’appelle au bon moment, mais c’est le Blueprint qui écrit son contenu, par exemple un son ou des étincelles. Elle apparaît dans le Blueprint comme un événement rouge, comme Event BeginPlay.
Le Blueprint enfant de ta classe C++
Le Blueprint enfant reçoit tout de sa classe C++ parente : variables, fonctions, Tick. Toi, tu ajoutes en Blueprint la forme, les sons et les réglages. C’est le mélange conseillé par Epic.
Attention : un Blueprint dont le parent est Actor, même renommé comme ta classe, n’hérite pas de ton code. Dans le graphe de l’enfant, tes fonctions BlueprintCallable sont de simples nœuds.
Questions fréquentes
Faut-il apprendre le C++ pour faire un jeu avec Unreal Engine ?
Non. Un projet peut être tout en Blueprint. Les deux langages se combinent, et Epic conseille de commencer en Blueprint.
Mon jeu rame : je réécris tout en C++ ?
Mesure d’abord, avec stat unit ou Unreal Insights, pour trouver le vrai coupable. Ensuite, passe en C++ seulement la partie qui coûte vraiment du temps.
Ma fonction C++ existe, mais aucun Blueprint ne la voit. Pourquoi ?
Il manque sûrement un UFUNCTION(...) sur la ligne au-dessus. Ajoute BlueprintCallable pour que le Blueprint puisse l’appeler.
Sources officielles
- Coding in Unreal Engine: Blueprint vs. C++ (documentation Epic)
- Exposing C++ to Blueprints (documentation Epic)
- Gameplay Classes (documentation Epic)
- Setting Up Visual Studio for C++ Projects (documentation Epic)
- Using the C++ Class Wizard (documentation Epic)
- UFunctions (documentation Epic)
- C++ Programming Quick Start (documentation Epic)
- Creating Blueprint Classes (documentation Epic)
- C++ and Blueprints Example (documentation Epic)
À lire aussi : Blueprint, c’est quoi ?, optimiser ton jeu avec stat unit et Event Tick et BeginPlay.
Tu veux commencer par les Blueprints, comme Epic le conseille ? Le cours te guide pas à pas : des leçons courtes, des quiz et des mini-projets, à ton rythme.
Apprendre Unreal Engine 5 gratuitement