Le Navmesh Raycast orchestre discrètement les déplacements intelligents des personnages virtuels

[Unreal Engine] AI Perception System

Dans l’univers technique du développement de jeux vidéo, certaines fonctionnalités travaillent silencieusement en arrière-plan pour créer l’illusion que les personnages non-joueurs possèdent une véritable intelligence spatiale. Le Navmesh Raycast représente l’une de ces technologies essentielles mais méconnues qui permet aux ennemis de vous poursuivre intelligemment à travers des environnements complexes, aux alliés de vous suivre sans se coincer bêtement dans les coins, et aux civils de naviguer naturellement dans les rues d’une ville virtuelle. Cette fonctionnalité d’Unreal Engine transforme des entités numériques aveugles en agents apparemment conscients de leur environnement physique.

Comprendre ce qu’est réellement le Navmesh Raycast dans Unreal Engine

Le Navmesh Raycast est une fonctionnalité de l’Unreal Engine utilisée dans le développement de jeux pour permettre aux personnages contrôlés par l’IA de naviguer dans un environnement en utilisant une grille de navigation en 3D appelée Navmesh. Cette définition technique cache une réalité plus fascinante : il s’agit essentiellement de donner aux personnages virtuels une compréhension abstraite de la géométrie navigable de leur monde, puis de leur fournir les outils pour interroger constamment cette représentation afin d’adapter leurs déplacements aux obstacles imprévus.

Le terme Navmesh lui-même désigne une structure de données représentant toutes les surfaces marchables d’un niveau de jeu sous forme de polygones interconnectés. Imaginez une carte routière où chaque intersection et chaque segment de route est parfaitement cartographié. Le Navmesh constitue l’équivalent tridimensionnel de cette carte pour les personnages du jeu, leur indiquant où ils peuvent marcher, sauter ou grimper, et quelles zones restent inaccessibles.

La composante Raycast de cette fonctionnalité introduit une dimension supplémentaire de réactivité. Plutôt que de suivre aveuglément un chemin pré-calculé qui pourrait devenir invalide si quelque chose change dans l’environnement, le Navmesh Raycast permet aux personnages de constamment vérifier leur trajectoire en projetant des rayons virtuels pour détecter les obstacles qui pourraient bloquer leur progression. Cette vigilance continue crée des comportements de navigation beaucoup plus robustes et adaptatifs.

Le fonctionnement technique combine pathfinding et détection d’obstacles

Lorsqu’un personnage doit se déplacer dans un environnement, il utilise une série d’algorithmes pour déterminer le chemin le plus efficace pour atteindre sa destination. Ces algorithmes, typiquement des variantes d’A* ou de Dijkstra, explorent le graphe formé par les polygones du Navmesh pour identifier le chemin optimal entre le point de départ et la destination. Ce calcul initial génère une séquence de waypoints que le personnage suivra pour atteindre son objectif.

Le Navmesh Raycast est une fonctionnalité qui permet à un personnage de détecter les obstacles sur son chemin et de trouver un nouvel itinéraire en utilisant la grille de navigation Navmesh. Cette capacité de détection devient cruciale lorsque le monde change dynamiquement. Une porte qui se ferme, un objet qui tombe et bloque un couloir, ou un autre personnage qui obstrue temporairement le passage : tous ces événements invalident potentiellement le chemin calculé initialement.

Concrètement, le Navmesh Raycast utilise des rayons pour détecter les obstacles sur le chemin d’un personnage et ajuste automatiquement son itinéraire pour contourner les obstacles. Ces rayons fonctionnent comme des sondes invisibles projetées depuis la position du personnage vers ses waypoints suivants. Si un rayon intersecte un obstacle non représenté dans le Navmesh statique, le système déclenche un recalcul de chemin qui prend en compte cette nouvelle information.

Cette détection continue permet aux personnages contrôlés par l’IA de se déplacer de manière plus fluide et plus réaliste dans l’environnement de jeu. Au lieu de se cogner stupidement contre un obstacle imprévu ou de rester bloqués indéfiniment, ils détectent proactivement le problème et cherchent une alternative. Cette adaptabilité transforme des automates rigides en agents qui semblent réfléchir et s’adapter aux circonstances.

L’intégration avec le système de navigation complet d’Unreal Engine

Le Navmesh Raycast ne fonctionne pas en isolation mais s’intègre profondément dans l’architecture de navigation globale d’Unreal Engine. Le Recast Navigation, la bibliothèque sous-jacente qui génère et gère les Navmesh, fournit l’infrastructure fondamentale sur laquelle le Raycast opère. Cette intégration garantit que les requêtes de détection d’obstacles restent cohérentes avec la représentation spatiale utilisée pour le pathfinding initial.

La génération du Navmesh elle-même constitue un processus complexe qui analyse la géométrie statique du niveau pour identifier toutes les surfaces navigables. Les escaliers, les rampes, les plateformes, et les sols plats se transforment en polygones interconnectés qui forment le graphe de navigation. Les paramètres comme la hauteur maximale d’un pas, le rayon de l’agent, et les pentes navigables influencent quelles surfaces sont considérées accessibles pour un type de personnage donné.

Le Navmesh Raycast interroge cette structure de données pré-calculée mais peut également interagir avec des modificateurs dynamiques qui ajustent temporairement certaines zones. Un système d’influence de coût permet de rendre certaines zones moins désirables sans les bloquer complètement, encourageant les personnages à préférer des routes alternatives. Une zone en feu pourrait avoir un coût élevé qui pousse les personnages à la contourner même si traverser reste techniquement possible.

Les liens de navigation représentent un autre élément avec lequel le Navmesh Raycast doit coordonner. Ces liens spéciaux connectent des zones du Navmesh qui ne sont pas géométriquement adjacentes mais peuvent être traversées par des actions spéciales comme sauter, grimper ou téléporter. Le Raycast doit respecter la validité de ces liens et détecter si un obstacle temporaire bloque un lien qui était précédemment utilisable.

Les algorithmes de pathfinding s’appuient sur les informations du Raycast

L’algorithme A* (A-star) domine le pathfinding dans les jeux vidéo grâce à son équilibre entre optimalité et performance. Cet algorithme évalue chaque polygone du Navmesh en calculant une fonction de coût combinant la distance parcourue depuis le départ et une estimation heuristique de la distance restante jusqu’à la destination. Cette double évaluation guide la recherche vers la destination tout en garantissant de trouver le chemin le plus court.

Le Navmesh Raycast enrichit ce processus en fournissant des informations dynamiques sur les obstacles qui ne figurent pas dans le Navmesh statique. Lorsqu’un rayon détecte un blocage, cette information peut influencer immédiatement les calculs de coût de l’algorithme de pathfinding, marquant certains segments comme temporairement impraticables. Cette réactivité évite de calculer des chemins qui échoueront inévitablement lors de l’exécution.

Les optimisations modernes de pathfinding comme le Hierarchical Pathfinding exploitent une représentation multi-niveaux où le niveau supérieur contient des régions larges et le niveau inférieur les détails fins. Le Navmesh Raycast opère principalement au niveau de détail fin, vérifiant la traversabilité des segments individuels du chemin. Cette séparation des niveaux permet de recalculer localement un détour autour d’un obstacle sans devoir replanifier l’intégralité du trajet à travers le niveau.

Le concept de funnel algorithm s’applique souvent après le pathfinding initial pour lisser le chemin en éliminant les waypoints inutiles. Plutôt que de zigzaguer mécaniquement de centre de polygone en centre de polygone, ce post-traitement identifie les segments où le personnage peut se déplacer en ligne droite. Le Navmesh Raycast vérifie la validité de ces raccourcis en projetant des rayons le long de la ligne directe pour confirmer l’absence d’obstacles.

L’utilisation pratique se manifeste dans les comportements de gameplay

Les ennemis qui vous poursuivent dans un jeu d’action s’appuient massivement sur le Navmesh Raycast pour maintenir une traque cohérente. Lorsque vous tournez un coin, l’ennemi ne voit plus votre position exacte mais connaît votre dernière position observée. Le Navmesh calcule un chemin vers ce point, et le Raycast garantit que l’ennemi ne se coince pas contre un mobilier ou ne reste pas bloqué derrière un obstacle mobile pendant sa poursuite.

Les personnages alliés qui doivent vous suivre constituent un cas d’usage encore plus exigeant. Un compagnon doit maintenir une proximité raisonnable avec le joueur tout en évitant de bloquer constamment son chemin ou de se retrouver coincé dans la géométrie. Le Navmesh Raycast permet d’implémenter des comportements de suivi sophistiqués où l’allié ajuste continuellement sa position pour rester accessible sans devenir un obstacle.

Les foules de civils dans les jeux en monde ouvert créent des défis de navigation complexes. Chaque piéton doit naviguer vers sa destination tout en évitant de collisionner avec les dizaines ou centaines d’autres piétons partageant le même espace. Le Navmesh Raycast détecte les congestions et déclenche des comportements d’évitement où les personnages ralentissent, s’arrêtent temporairement, ou choisissent des routes alternatives moins encombrées.

Les véhicules contrôlés par l’IA représentent un cas limite intéressant. Bien que leurs contraintes de déplacement diffèrent radicalement de celles d’un piéton, le même système de Navmesh peut être adapté avec des paramètres différents. Un Navmesh pour véhicules utilisera des rayons de courbure plus larges, des polygones limitant les virages serrés, et le Raycast détectera les obstacles avec une anticipation plus grande correspondant à la distance de freinage nécessaire.

L’intégration avec les autres systèmes d’IA crée des comportements cohérents

Le Navmesh Raycast est généralement utilisé en conjonction avec d’autres fonctionnalités d’IA telles que l’AI Perception System et le Behavior Tree pour créer des personnages d’IA complexes et réalistes dans les jeux vidéo. Cette intégration transforme la simple capacité de se déplacer en comportements contextuels intelligents où le déplacement sert des objectifs plus larges dictés par la logique comportementale.

L’AI Perception System détecte les stimuli dans l’environnement comme les sons ou la présence d’autres acteurs. Lorsqu’un garde entend un bruit suspect, son Behavior Tree décide d’enquêter. Cette décision se traduit par une commande de déplacement vers la source du bruit, et c’est le Navmesh Raycast qui garantit l’exécution fluide de ce mouvement. La perception identifie où aller, le comportement décide d’y aller, et le Raycast s’assure que le personnage y arrive effectivement.

Les Behavior Trees orchestrent des séquences d’actions complexes dont beaucoup impliquent du déplacement. Un ennemi pourrait exécuter un comportement « rechercher le joueur » qui alterne entre se déplacer vers des points de passage stratégiques et scanner visuellement chaque zone. Le Navmesh Raycast exécute la partie mouvement de ce comportement pendant que d’autres systèmes gèrent la perception et la prise de décision.

La coordination entre multiples personnages nécessite souvent que le système de navigation communique avec un gestionnaire tactique de niveau supérieur. Dans un jeu tactique, plusieurs soldats IA pourraient tenter d’encercler le joueur. Le gestionnaire assigne des positions cibles à chaque soldat, et le Navmesh Raycast de chacun calcule et exécute son propre chemin vers sa position assignée, tout en évitant de collisionner avec ses camarades également en mouvement.

Les optimisations de performance maintiennent la fluidité avec de nombreux agents

Calculer continuellement des rayons pour chaque personnage mobile pourrait rapidement devenir coûteux en performance, particulièrement dans les scènes peuplées de dizaines ou de centaines d’agents. Unreal Engine implémente plusieurs stratégies d’optimisation pour maintenir des framerates acceptables même dans ces situations exigeantes.

Le throttling temporel espacer les calculs de Raycast dans le temps plutôt que de tous les effectuer chaque frame. Un personnage lointain ou hors écran pourrait ne vérifier son chemin qu’une fois par seconde, tandis qu’un ennemi engagé directement avec le joueur vérifie plusieurs fois par seconde. Cette hiérarchie de priorité concentre les ressources de calcul là où elles impactent le plus l’expérience immédiate du joueur.

Les niveaux de détail de navigation permettent d’utiliser des Navmesh simplifiés pour les agents distants ou moins importants. Ces Navmesh à faible résolution contiennent moins de polygones, accélérant les calculs de pathfinding et réduisant le nombre de rayons nécessaires pour vérifier un chemin. Cette dégradation gracieuse devient invisible au joueur qui ne remarque pas les détails de navigation des personnages éloignés.

Le spatial hashing organise les agents par région de l’espace, permettant de limiter les calculs de collision et d’évitement aux seuls agents suffisamment proches pour potentiellement interagir. Un agent dans une pièce n’a pas besoin de considérer les obstacles ou les autres agents dans une pièce totalement différente. Cette segmentation spatiale réduit drastiquement la complexité algorithmique des calculs d’évitement.

Les caches de chemin mémorisent les résultats de calculs de pathfinding récents. Si plusieurs agents doivent se déplacer entre les mêmes points de départ et d’arrivée approximativement simultanément, ils peuvent réutiliser un chemin déjà calculé plutôt que de dupliquer le travail. Le Navmesh Raycast valide encore la praticabilité du chemin pour chaque agent, mais le coût initial du pathfinding est amorti sur plusieurs utilisateurs.

Les obstacles dynamiques testent la robustesse du système

Les portes représentent probablement le cas d’obstacle dynamique le plus commun dans les jeux. Une porte fermée devrait bloquer le passage, mais une fois ouverte, le chemin redevient praticable. Le Navmesh Raycast détecte l’état de la porte et ajuste les calculs de navigation en conséquence. Des modificateurs de Navmesh dynamiques peuvent être attachés aux portes pour activer et désactiver automatiquement des segments de navigation selon leur état ouvert ou fermé.

Les plateformes mobiles créent des défis encore plus complexes. Une plateforme élévatrice qui monte et descend change périodiquement la connectivité entre différentes zones du Navmesh. Le Navmesh Raycast doit non seulement détecter la position actuelle de la plateforme mais aussi prédire potentiellement où elle se trouvera lorsque le personnage atteindra ce point du chemin. Cette prédiction nécessite de communiquer avec le système de mouvement de la plateforme.

Les débris destructibles représentent un cas particulièrement difficile. Lorsqu’un mur explose, il crée potentiellement de nouveaux passages tout en dispersant des obstacles temporaires. Le Navmesh statique ne reflète plus la réalité géométrique, et le système de navigation doit rapidement s’adapter. Certains moteurs régénèrent dynamiquement des portions du Navmesh après des destructions majeures, un processus coûteux mais parfois nécessaire pour maintenir la cohérence.

Les autres personnages mobiles constituent techniquement des obstacles dynamiques mais reçoivent généralement un traitement spécial. Plutôt que de forcer un recalcul de chemin complet chaque fois qu’un autre personnage bloque temporairement le passage, des systèmes d’évitement local permettent de contourner ces obstacles temporaires sans impliquer le pathfinding global. Le Navmesh Raycast détecte la collision potentielle, mais la résolution utilise des techniques d’évitement plus légères comme le velocity obstacles ou les steering behaviors.

Les différents types d’agents nécessitent des configurations distinctes

Les humanoïdes standards représentent le cas d’usage le plus commun avec des paramètres de navigation relativement uniformes. Une hauteur d’agent typique autour de deux mètres, un rayon d’environ quarante centimètres, et une capacité à franchir des marches d’environ cinquante centimètres de haut définissent les contraintes de base. Le Navmesh généré avec ces paramètres conviendra à tous les personnages humanoïdes similaires.

Les créatures de grande taille exigent des Navmesh spécialisés avec des corridors plus larges et des hauteurs de plafond plus importantes. Un dragon ou un géant ne peut pas emprunter les mêmes passages qu’un humain. Certains jeux génèrent plusieurs Navmesh superposés où chaque type d’agent utilise celui correspondant à ses dimensions. Cette approche multi-couches augmente l’utilisation de mémoire mais garantit des comportements de navigation appropriés pour chaque type de créature.

Les agents volants contournent entièrement le concept de Navmesh bidimensionnel et nécessitent plutôt une représentation volumétrique tridimensionnelle de l’espace navigable. Le Navmesh Raycast dans ce contexte vérifie les obstacles dans toutes les directions, pas seulement horizontalement. Cette complexité supplémentaire limite souvent le nombre d’agents volants qu’un jeu peut gérer simultanément.

Les véhicules terrestres utilisent des Navmesh avec des contraintes de courbure et de pente plus strictes que les piétons. Un virage serré qu’un piéton négocie facilement reste impossible pour une voiture. Le Navmesh pour véhicules encode ces contraintes, et le Raycast vérifie non seulement les obstacles statiques mais aussi si les angles de virage restent praticables pour le type de véhicule considéré.

Le débogage visuel révèle les mystères de la navigation

Unreal Engine fournit des outils de visualisation puissants pour déboguer les problèmes de navigation. Le Navmesh lui-même peut être affiché en surimpression dans l’éditeur ou même en jeu, montrant les polygones navigables dans différentes couleurs selon leur coût ou leurs propriétés. Cette visualisation révèle immédiatement les zones accessibles versus inaccessibles et identifie les discontinuités inattendues.

Les chemins calculés peuvent être tracés visuellement, montrant la séquence exacte de waypoints qu’un personnage suivra. Ces traces persistent brièvement, créant une histoire visuelle des décisions de navigation. Lorsqu’un personnage dévie de son chemin attendu, comparer la trace planifiée à la trajectoire réellement suivie révèle où et pourquoi le plan initial a échoué.

Les rayons de détection d’obstacles peuvent également être visualisés, montrant exactement quels obstacles le Navmesh Raycast détecte et comment ils influencent les décisions de navigation. Cette capacité de voir littéralement ce que « voit » le système de navigation transforme le débogage de problèmes obscurs en investigations visuelles intuitives.

Les marqueurs de blocage indiquent les obstacles détectés qui forcent des recalculs de chemin. Accumuler ces marqueurs au fil du temps révèle les zones problématiques où les personnages se retrouvent fréquemment bloqués. Cette information guide les ajustements de level design ou la configuration de Navmesh pour éliminer les pièges récurrents.

Les alternatives et approches complémentaires enrichissent la boîte à outils

Le steering behaviors représente une approche plus bas niveau de la navigation où les personnages réagissent directement aux forces de leur environnement immédiat. Plutôt que de suivre un chemin pré-calculé, ils s’orientent vers leur objectif tout en étant repoussés par les obstacles proches. Cette approche fonctionne bien pour des environnements ouverts sans géométrie complexe mais peine dans les labyrinthes ou les bâtiments.

Le local avoidance complète le pathfinding global en gérant les collisions à très court terme. Lorsque deux personnages suivant leurs chemins respectifs risquent de se croiser, le système d’évitement local les fait se dévier légèrement pour passer l’un à côté de l’autre sans nécessiter de recalcul de chemin global. Cette séparation des responsabilités améliore à la fois les performances et le réalisme des mouvements.

Le flow field pathfinding précalcule des champs de vecteurs indiquant la direction vers un objectif depuis chaque point de l’espace. Cette approche excelle pour déplacer de grandes foules vers des destinations communes, car le coût du calcul est indépendant du nombre d’agents. Le Navmesh Raycast pourrait toujours être utilisé pour détecter les obstacles individuels non représentés dans le champ de vecteurs statique.

Les waypoint networks représentent une approche plus ancienne mais toujours valide où les designers placent manuellement des points de navigation et définissent leurs connexions. Cette méthode offre un contrôle artistique total mais nécessite beaucoup plus de travail manuel et ne s’adapte pas aux changements géométriques. Le Navmesh automatique a largement supplanté cette technique, bien que des waypoints manuels restent utiles pour guider des comportements spécifiques.

Les considérations de design influencent l’efficacité de la navigation

La géométrie des niveaux impacte dramatiquement la qualité de la navigation. Des surfaces parfaitement horizontales génèrent des Navmesh propres et prévisibles. Les pentes irrégulières, les escaliers inégaux, ou les sols jonchés de petits obstacles créent des Navmesh fragmentés difficiles à naviguer efficacement. Les level designers doivent considérer la navigabilité IA dès les premières phases de conception plutôt que de tenter de corriger les problèmes après coup.

La largeur des couloirs et des passages détermine si les personnages peuvent se croiser confortablement. Un couloir à peine plus large que le rayon d’un agent force les personnages à se bloquer mutuellement et génère des embouteillages. Les espaces publics densément peuplés nécessitent des dégagements généreux qui permettent aux flux de personnages de circuler naturellement sans congestion constante.

La connectivité entre les zones influence les performances de pathfinding. Un niveau avec de nombreux petits espaces interconnectés génère un graphe de navigation complexe où les chemins entre points distants traversent de nombreuses zones intermédiaires. Des espaces plus larges et plus ouverts simplifient le graphe et accélèrent les calculs de chemin. Ce compromis entre granularité spatiale et performance de navigation guide l’architecture des niveaux.

Les zones où les joueurs ne devraient jamais voir des personnages IA peuvent être exclues du Navmesh pour économiser mémoire et performances. Les toits de bâtiments inaccessibles, les espaces sous les escaliers, ou les recoins décoratifs n’ont pas besoin d’être navigables. Tailler agressivement le Navmesh pour couvrir uniquement les zones nécessaires améliore l’efficacité globale du système.

L’évolution continue du système accompagne les ambitions croissantes

Les premières générations de systèmes de navigation se limitaient à des environnements relativement statiques où la géométrie changeait rarement. Les jeux modernes avec destruction extensive, géométrie procédurale, ou mondes massivement persistants poussent les limites de ce que les systèmes de navigation doivent gérer. Le Navmesh Raycast évolue continuellement pour supporter ces scénarios plus exigeants.

L’apprentissage automatique commence à influencer la navigation IA. Des agents entraînés par apprentissage par renforcement pourraient apprendre à naviguer dans des environnements complexes sans s’appuyer explicitement sur un Navmesh. Cependant, ces approches ML restent souvent combinées avec la navigation traditionnelle plutôt que de la remplacer complètement, utilisant le Navmesh comme guide grossier que l’apprentissage affine.

Les environnements multi-étages avec superposition verticale créent des défis que les Navmesh bidimensionnels traditionnels peinent à représenter. Des extensions au format Navmesh supportent maintenant cette verticalité, permettant de représenter correctement des bâtiments complexes où un personnage au deuxième étage se trouve géométriquement au-dessus d’un personnage au rez-de-chaussée mais dans un espace de navigation complètement séparé.

L’optimisation pour les consoles et le matériel mobile pousse vers des représentations de navigation encore plus efficaces. Les techniques de compression de Navmesh, les algorithmes de pathfinding approximatifs mais rapides, et les heuristiques qui sacrifient un peu d’optimalité pour gagner en performance deviennent essentiels pour supporter la navigation IA sur les plateformes aux ressources limitées.

Le Navmesh Raycast reste fondamental pour la crédibilité des personnages

La différence entre un jeu où les personnages IA naviguent intelligemment et un où ils se coincent constamment dans la géométrie se ressent immédiatement et nuit profondément à l’immersion. Le Navmesh Raycast constitue une partie essentielle de l’infrastructure qui maintient cette crédibilité, fonctionnant silencieusement pour garantir que les personnages se déplacent de manière plausible à travers les mondes virtuels.

Pour les développeurs maîtrisant ce système, les bénéfices dépassent la simple absence de bugs. Des comportements de navigation sophistiqués ouvrent des possibilités de gameplay où les tactiques spatiales comptent, où positionner stratégiquement des obstacles modifie les patterns de patrouille des ennemis, où guider des alliés à travers des environnements dangereux devient un défi significatif. La navigation cesse d’être un détail technique pour devenir un élément de design.

Le Navmesh Raycast dans Unreal Engine exemplifie comment les systèmes techniques complexes peuvent et doivent disparaître aux yeux des joueurs tout en travaillant intensément en coulisses. Lorsqu’il fonctionne parfaitement, personne ne le remarque. Lorsqu’il échoue, l’illusion de l’intelligence artificielle s’effondre instantanément. Cette dualité fait de la maîtrise de la navigation IA une compétence essentielle pour tout développeur sérieux cherchant à créer des expériences de jeu immersives où les personnages non-joueurs se comportent de manière convaincante et naturelle dans leur environnement virtuel.

Sudoku Quest Banner

Voila, vous pouvez maintenant briller en soirée …

Formations de Itamde

« 

Itamde est également une école de programmation en ligne.

Itamde

Apprenez ce que vous voulez, à votre rythme

0 commentaires

Vous pourriez être intéressé par…

Pourquoi créer un SaaS sans audience mène droit à l’échec

Pourquoi créer un SaaS sans audience mène droit à l’échec

La fièvre entrepreneuriale autour des SaaS (Software as a Service) n'a jamais été aussi intense. L'arrivée des intelligences artificielles a décuplé cette tendance en rendant le développement plus accessible que jamais. ChatGPT, GitHub Copilot et consorts permettent...

Restez informé des dernières actualités et mises à jour

Accédez au contenu réservé

Découvrez les coulisses de nos projets, des ressources exclusives et l’avancée de nos créations en temps réel.

Inscrivez-vous à la newsletter

Recevez nos actualités, nos réflexions créatives et les nouveautés de l’atelier directement dans votre boîte mail.

Suivez-nous

Rejoignez notre communauté sur les réseaux pour suivre nos projets au quotidien et échanger avec nous.