Un développeur Unreal Engine écrit en C++ les systèmes de jeu que les game designers règlent ensuite en Blueprint : déplacements, capacités, armes, IA, interface. Il travaille dans le framework d'Unreal (acteurs, composants, GameMode, PlayerState) et, sur un jeu en ligne, il décide de ce que le serveur calcule et de ce que le client affiche. Les annonces parlent aussi de programmeur gameplay Unreal ou de développeur UE5.
Deux origines dominent sur les CV : le Blueprint seul ou Unity. Le premier sait prototyper mais bute sur le C++ du moteur, ses macros et son ramasse-miettes. Le second connaît le jeu temps réel mais doit apprendre une architecture très différente. L'expérience Unreal en production se reconnaît quand la personne parle de TObjectPtr, d'Owner et d'Avatar dans le GAS, de RPC refusé faute de propriétaire ou d'une capture Unreal Insights.
Posez des cas concrets : un plantage sur un pointeur, un dash qui saccade en ligne, une zone qui tombe à 40 images par seconde. Demandez à voir une partie de code ou un projet personnel si la personne en a un. Le PDF ajoute un cas de 20 minutes sur une capacité de grappin en coopératif.
Le moteur et les systèmes qu'un développeur Unreal utilise
C++ Unreal et système de réflexion
Le C++ d'Unreal n'est pas du C++ standard pur. Les macros UCLASS, UPROPERTY et UFUNCTION exposent le code au moteur, qui génère la sérialisation, l'accès Blueprint et le suivi mémoire. Un ramasse-miettes gère les UObject. C'est le premier point à vérifier chez un candidat venu d'un autre moteur.
Blueprints
Le langage visuel d'Unreal. Les designers et les artistes techniques s'en servent pour assembler et régler les mécaniques. Le développeur décide de la frontière : la logique lourde et l'état réseau en C++, les réglages et l'enchaînement en Blueprint.
Gameplay framework
Les classes de base d'un jeu Unreal : Actor, Component, Pawn, Character, PlayerController, GameMode, GameState, PlayerState. Chacune a un rôle précis, surtout en multijoueur, où certaines n'existent que sur le serveur. Une confusion à ce niveau produit des bugs difficiles à suivre.
Gameplay Ability System (GAS)
Le framework d'Epic pour les capacités, les attributs et les effets : sorts, dash, cooldowns, poison, boucliers. Il gère la prédiction côté client et la réplication. Il est puissant mais long à prendre en main, et beaucoup d'offres le citent, en exigence ou en atout.
Réplication et multijoueur
Le serveur fait autorité, les clients reçoivent des propriétés répliquées et s'échangent avec lui des RPC. Le CharacterMovementComponent prédit les déplacements ; le plugin Mover, encore expérimental, doit le remplacer à terme. Iris, le nouveau système de réplication, est déclaré prêt pour la production dans Unreal Engine 5.8, mais il reste à activer : le système historique reste celui par défaut.
Unreal Insights
L'outil de profilage du moteur. Il enregistre ce que font le thread de jeu, le thread de rendu, la mémoire et le réseau image par image. Un développeur confirmé s'en sert avant d'optimiser, et sait lire une saccade isolée autant qu'une baisse moyenne.
Enhanced Input, StateTree et Mass
Trois systèmes récents à connaître : Enhanced Input pour les commandes, StateTree pour les machines d'états et l'IA, Mass pour gérer un grand nombre d'entités légères. Ils remplacent ou complètent des solutions plus anciennes que l'on croise encore sur les projets existants.
Build, Perforce et outils
Unreal Build Tool compile le projet module par module, Unreal Automation Tool fabrique les builds empaquetées. Les studios versionnent souvent avec Perforce, car les assets binaires ne se fusionnent pas. Savoir faire tourner une build nocturne compte autant que coder une mécanique.
Le développeur Unreal travaille entre trois métiers : les game designers qui règlent les mécaniques, les artistes et animateurs qui fournissent le contenu, et les autres programmeurs qui tiennent le moteur, le réseau ou les outils. Selon la taille de l'équipe, il couvre seul tout le gameplay ou se spécialise sur les capacités, l'IA, la caméra ou le réseau. Unreal Engine sert aussi en dehors du jeu, pour des simulateurs, de la réalité virtuelle ou des configurateurs 3D ; le C++ et le framework restent les mêmes, le multijoueur compte souvent moins. Sur un projet en ligne, vérifiez en priorité la réplication et la prédiction.
Six savoir-faire Unreal à contrôler
- C++ Unreal, réflexion et mémoire des UObject
- Architecture gameplay et frontière C++ / Blueprint
- Gameplay Ability System
- Réplication, RPC et prédiction
- Profilage et optimisation
- Build, assets et tests automatisés
Pointeurs, capacités, RPC : les questions à poser
Chaque question vient avec ce qu'une bonne réponse contient et le signal qui doit vous alerter. Pas besoin d'être technique pour les poser : écoutez si le candidat raconte du vécu.
Question 1 · confirmé
Le jeu plante au bout de quelques minutes sur un pointeur vers un UObject devenu invalide. Que regardez-vous ?
Une bonne réponseLe ramasse-miettes d'Unreal ne voit que les références qu'il connaît. Un pointeur brut membre d'une classe, sans UPROPERTY, ne retient pas l'objet : il est libéré et le pointeur reste en l'air. La correction passe par un UPROPERTY avec TObjectPtr, un TWeakObjectPtr quand on ne veut pas garder l'objet en vie, et un test IsValid avant usage, car un acteur détruit peut encore être référencé un instant.
Signal d'alerte« J'ajoute un if (ptr != nullptr) » : le pointeur n'est pas nul, il pointe vers de la mémoire libérée. Ou un delete appelé à la main sur un UObject.
Question 2 · senior
Une capacité de dash marche en solo, mais en multijoueur avec 150 ms de latence le personnage saccade et revient en arrière. Pourquoi ?
Une bonne réponseLe serveur fait autorité sur la position. Si le client attend la réponse du serveur, il ressent la latence ; s'il bouge seul sans que le serveur rejoue le même mouvement, la correction le ramène en arrière. Il faut une capacité prédite localement (Local Predicted dans le GAS) et un déplacement que le composant de mouvement sait prédire et rejouer : root motion source, mode de mouvement personnalisé du CharacterMovementComponent, ou le plugin Mover sur un projet récent.
Signal d'alerteEnvoyer la nouvelle position au serveur par un RPC et la lui faire accepter telle quelle, ce qui ouvre la porte à la triche. Ou augmenter la tolérance de correction jusqu'à ce que le problème disparaisse.
Question 3 · confirmé
Un client appelle un RPC Server sur une porte posée dans le niveau, et rien ne se passe côté serveur. Que se passe-t-il ?
Une bonne réponseUn RPC Server n'est accepté que sur un acteur possédé par la connexion du client, par exemple son PlayerController, son Pawn ou un acteur dont il est le propriétaire. La porte appartient au serveur, donc l'appel est ignoré. On fait passer l'interaction par le PlayerController ou le personnage, qui appelle son propre RPC Server avec la porte en paramètre, et le serveur vérifie la distance avant d'ouvrir.
Signal d'alerteRendre la porte reliable ou multicast, ou donner la propriété de chaque objet du niveau au premier joueur qui s'en approche.
Question 4 · confirmé
Avec le Gameplay Ability System, où placez-vous l'AbilitySystemComponent d'un personnage joueur qui meurt et réapparaît ?
Une bonne réponseSur le PlayerState, quand les attributs, les effets ou les cooldowns doivent survivre à la mort du Pawn : le PlayerState reste, le Pawn est recréé. Le Pawn devient alors l'Avatar et le PlayerState l'Owner. Il faut initialiser les infos d'acteur des deux côtés (côté serveur dans PossessedBy, côté client dans OnRep_PlayerState) et souvent augmenter la fréquence de mise à jour réseau du PlayerState, très basse par défaut. Pour des ennemis jetables, l'ASC sur le Pawn suffit.
Signal d'alerte« Sur le personnage, c'est plus simple » sans parler de ce qui arrive aux attributs à la réapparition, ou ignorer la notion d'Owner et d'Avatar.
Question 5 · confirmé
Le jeu tombe à 40 images par seconde dans une zone précise. Comment trouvez-vous la cause ?
Une bonne réponseD'abord stat unit, pour savoir qui limite : thread de jeu, thread de rendu ou GPU. Ensuite une capture Unreal Insights sur la zone, sur une build de développement ou de test plutôt que dans l'éditeur. Côté jeu, il cherche les Tick coûteux, les acteurs trop nombreux, le Blueprint qui boucle, le ramasse-miettes. Côté rendu, les draw calls, les ombres dynamiques, l'overdraw des effets, avec ProfileGPU ou stat GPU. Il fixe un budget en millisecondes, 16,6 ms à 60 images par seconde.
Signal d'alerteBaisser la qualité graphique au hasard, ou optimiser le code sans avoir mesuré quel thread limite.
Recevez la fiche d'entretien complète en PDF
La fiche pour mener l'entretien de bout en bout, prête à imprimer ou à partager avec le manager.
- 30 questions sur 6 axes, avec la bonne réponse, le signal d'alerte et la relance
- Le niveau visé pour chaque question
- Une mise en situation de 20 minutes et ce qu'on attend du candidat
- La grille d'évaluation de 1 à 4, axe par axe
Ce que les recruteurs demandent sur les profils Unreal
Un développeur Blueprint peut-il tenir un poste Unreal en C++ ?
Pas tout de suite. Un profil Blueprint connaît le framework, les acteurs et l'éditeur, ce qui est un vrai acquis. Il lui manque souvent le C++ moderne, les macros de réflexion, la gestion mémoire des UObject et la lecture du code du moteur. Demandez-lui de convertir en C++ une fonction Blueprint qu'il a écrite. Pour un poste junior, une montée en compétence est envisageable si les bases du C++ sont là.
Faut-il exiger le Gameplay Ability System ?
Seulement si le projet l'utilise ou va l'utiliser. Sur un jeu avec beaucoup de capacités, d'effets et de multijoueur, l'expérience du GAS fait gagner des mois. Sur un simulateur ou un jeu solo simple, elle compte peu. Si le poste l'exige, vérifiez la pratique réelle : placement de l'ASC, modes de réplication, prédiction des capacités. Un candidat qui a seulement suivi un tutoriel le décrira en termes généraux.
Quel test technique proposer à un développeur Unreal ?
Un petit projet Unreal fourni, avec un bug réseau ou une saccade à corriger en une heure et demie, en partageant l'écran. Un exercice C++ hors moteur ne montre pas la connaissance du framework. Évitez le jeu complet à faire chez soi : il demande des jours et mesure surtout le temps libre. Un projet personnel déjà publié, dont la personne explique le code, vaut souvent mieux.
Un développeur Unity peut-il passer sur Unreal ?
Oui, avec un temps d'adaptation. Il apporte le jeu temps réel, les mathématiques, le game feel et souvent le profilage. Il doit apprendre le C++ à la place du C#, le ramasse-miettes d'Unreal, le gameplay framework et la réplication intégrée. Interrogez-le sur ce qu'il a déjà fait sur Unreal, même en projet personnel, et sur la façon dont il compare les deux moteurs.
Pour structurer vos autres entretiens, consultez aussi nos pages sur les questions d'entretien de recrutement, la méthode de l'entretien structuré et la grille d'évaluation d'entretien.




