Technical Designer
Ingrédients Portal 2 – Unreal Engine 5
En septembre 2023, je me suis lancé le défi de reproduire autant d’ingrédients de Portal 2 que possible en 2 jours, en utilisant Unreal Engine 5.3.
Étant donné ce laps de temps très restreint, mon intention n’était pas de créer une expérience “parfaite”. Ainsi, je me suis concentré sur la fonctionnalité des ingrédients.
Cal. de production
16-17 septembre 2023
moteur de jeu
Unreal Engine 5.3
mon rôle
Technical Designer
Plateforme
PC (Windows)
Intentions
Afin de pouvoir accomplir mon objectif, je devais trouver un moyen de créer et d’itérer sur des nouveaux ingrédients de manière rapide et efficace. J’ai donc fait une liste d’ingrédients que j’ai triée en deux catégories : objets “Interactifs” et “Alimentables”.
Objets “Interactifs” vs “Alimentables”
Les objets “Interactifs” transmettent du courant lorsque le joueur les utilise, tandis que les objets “Alimentables” reçoivent ce courant. Voici quelques exemples d’ingrédients triés par type :
| “Interactifs” | “Alimentables” |
|---|---|
| Bouton | Porte |
| Récepteur de laser | Pont de lumière |
| Faisceau de lumière | |
| Distributeur de gel |
Conception d’un système permettant des itérations rapides
Une fois que les fonctionnalités de base de ces deux types d’ingrédients étaient établies, j’ai pu me concentrer sur la conception de la pipeline de création d’ingédients.
Étape 1 – Classes Parent
J’ai commencé par créer deux classes Blueprint qui agissent en tant que “parent”. Ces classes contiennent toute la logique partagée par les ingrédients que j’étais sur le point de créer.
Étape 2 – Interfaces
Ensuite, j’ai créé et implémenté une Interface Blueprint sur chacune de ces classes parent. Ces interfaces contiennent les fonctions qui sont utilisées pour déclencher la fonctionnalité de chaque ingrédient.
Étape 3 – Structures
Enfin, j’ai ajouté une structure en tant que variable visible dans l’éditeur à chacune des classes parent. La structure appartenant aux objets “Interfactifs” contient un array d’acteurs vers lesquels envoyer du courant, tandis que la structure appartenant aux objets “Alimentables” contient le nombre de sources de courant nécessaires pour fonctionner.
Voici un organigramme qui résume le tout :

Habiletés du personnage
J’ai ensuite commencé à travailler sur les habiletés du personnage, nécessaires afin de faire fonctionner les derniers ingrédients que je voulais créer : les boutons, ainsi que les distributeurs de gel bleu et orange. Le personnage devait être capable de ramasser et lâcher des cubes et de reconnaître le type de surface sur laquelle il marchait.
Ramasser et lâcher des cubes
Lorsque le joueur appuie sur la touche E, le personnage émet un Box Trace qui cherche des cubes devant la caméra. Si un cube est trouvé, il est déplacé vers un emplacement cible situé en avant du joueur. Ensuite, la rotation de la capsule du joueur est assignée au cube, afin que les cubes laser tombent toujours dans la bonne direction.
Enfin, le cube est attaché au joueur à l’aide d’une Physics Constraint. Si le joueur appuie à nouveau sur la touche E, cette contrainte est brisée, laissant ainsi le cube tomber.
Gels et boutons
Afin de pouvoir créer les gels orange et bleu, j’ai décidé d’ajouter deux types de Physical Surfaces dans les réglages du projet. Le personnage cherche ces surfaces à l’aide d’un Line Trace qui surveille le sol situé devant lui. Selon le type de surface trouvée, la vélocité ou hauteur de saut du personnage spécifiée dans son Character Movement component est modifiée.
Il ne restait alors qu’à créer les distributeurs. Ce sont des objets “Alimentables“, qui changent le type de Physical Surface du sol situé directement en dessous d’eux lorsqu’ils reçoivent du courant.
Les boutons, eux, sont des objets “Interactifs” très simples, qui transmettent du courant à une cible lorsqu’ils détectent qu’un cube à été déposé au-dessus d’eux.
Walkthrough complet