Compétence : C#

  • Yspanor

    Yspanor

    Le projet

    Yspanor est un projet de jeu de stratégie asymétrique au tour par tour, avec des éléments de deckbuilding, situé dans un univers médiéval dark-fantasy inspiré de l’époque de la Peste Noire. Le projet vise une sortie en jeu vidéo, avec une ambition d’adaptation en jeu de plateau à terme. Le jeu oppose deux camps : l’Ordre, des factions humaines cherchant à maintenir leur emprise sur la région, et le Fléau, des factions nées de la peste et de la magie lunaire qui cherchent à convertir, corrompre et soumettre les populations à leur cause.

    Point de vue gameplay, chaque camp peut être incarné par deux types de factions au gameplay bien distinct. Les factions Reach, dans un premier temps, sont orientées sur le contrôle du plateau et de ses « nœuds », correspondants à des lieux notables de la carte. Leur objectif est la domination territoriale et la production de ressources. De l’autre côté, les factions Insurgent, jouées en unité unique, sont spécialisées dans l’infiltration, les quêtes secondaires, l’exploration de donjons ou la perturbation des plans adverses.

    La mécanique centrale du jeu est l’influence : chaque faction cherche à rallier le maximum de villageois à sa cause. Pour cela, chaque joueur dispose de cartes ayant des effets variés en fonction de la faction qu’il joue, pouvant être disposées sur les différents nœuds de la carte. La faction atteignant la première un certain seuil d’influence défini par les règles est déclarée victorieuse.

    Ma contribution

    Je participe à l’élaboration de la base technique du jeu sur un travail d’itération rapide visant à aider à l’amélioration du game design. Dans ce cadre, je suis chargé de l’implémentation des différentes mécaniques de jeux sur Unity ainsi que de l’élaboration d’une architecture maintenable, solide et testable. Je participe également à l’élaboration d’outils accessibles pour les game designers pour la création de cartes à jouer pouvant être récoltées mais aussi la création des différents plateaux de jeux possibles.

  • Simulateur de conduite VR — AUSY

    Simulateur de conduite VR — AUSY

    Description

    Ce projet consiste en une simulation de conduite réaliste en réalité virtuelle, que j’ai pu réaliser pendant mon stage de fin d’études chez AUSY Nice. Le but était de pouvoir fournir à l’entreprise une application permettant de démontrer efficacement les possibilités et le potentiel de la réalité virtuelle, notamment en termes de présence et d’immersion.

    Mon rôle

    La simulation a été réalisée avec le moteur Unity. J’ai dû alors réaliser la mise en place d’un environnement de ville 3D ainsi que des contrôles de la voiture virtuelle de l’utilisateur, basés sur des périphériques de conduite comme un volant USB ou des pédales. J’ai alors pu travailler sur des problématiques d’utilisation de la technologie de réalité virtuelle, d’optimisation graphique à des fins de performances ou encore d’implémentation d’agents autonomes dans l’environnement virtuel, tels que des piétons ou des voitures.

    Tests utilisateurs

    Il m’aura également été possible de créer un véritable protocole de tests utilisateurs pour l’application, utilisant notamment mes connaissances sur le sujet acquises lors de ma formation ainsi que des méthodes d’évaluation provenant de l’état de l’art de la recherche sur l’évaluation des environnements virtuels immersifs. J’ai également pu participer à leur déroulement et à l’analyse de résultats.

  • Input Action Listeners

    Input Action Listeners

    Description

    Ce paquet Unity sert à faciliter l’usage du nouvel Input System du moteur à l’aide de composants conçus dans ce but. Chaque composant, appelé Input Action Listener (ou plus simplement Listener) vise à écouter le déclenchement d’une entrée utilisateur et d’appeler les fonctions de callbacks correspondant avec, le cas échéant, la valeur correspondante en paramètre.

    Développement

    Le développement de ce plugin aura demandé du travail sur les interfaces des composants utilisés, notamment sur les différents modes d’utilisation, et sur les branchements avec l’Input System de Unity. Le bon fonctionnement du plugin est également vérifié par des séries de tests à la fois unitaires, mais aussi d’intégration avec l’Input System lui-même.

  • Event System

    Event System

    Description

    Ce plugin Unity est une mise en application directe d’une suggestion d’architecture basée sur des Scriptable Objects proposée par Unity Technologies eux-mêmes. Le principe est de pouvoir offrir un système d’évènements qui soit inter-scènes et inter-systèmes. Il est ainsi possible pour des parties indépendantes (comme des scènes chargées additivement par exemple) de communiquer entre elles par le biais d’évènements en publish-subscribe.

    Développement

    Lors de son développement, j’ai pu me confronter à des problématiques restantes sur le modèle original (notamment sur le modèle d’abonnement aux évènements) ainsi que sur des problématiques de sérialisation propres au moteur (sérialisation des génériques, des classes abstraites, etc).

  • Chroma

    Chroma

    Description

    Chroma est un projet se focalisant sur les interactions possibles entre les jeux vidéo et les ampoules connectées. Plusieurs systèmes de jeux vidéo utilisent ces accessoires à des fins décoratives, là où ce projet voulait pousser davantage l’utilisation de ces dispositifs à des fins ludiques.

    Mon rôle

    Il a ainsi été question du développement d’une bibliothèque en C# à l’aide du framework .NET pour faciliter l’interaction avec les ampoules ainsi que de plusieurs jeux réalisés avec Unity. J’ai essentiellement participé à cette deuxième partie, contribuant à la programmation gameplay, au game design et, le cas échéant, au level design de ces jeux.

    Reconnaissance

    Notre travail d’analyse, appuyé sur plusieurs sessions de playtests organisées avec des joueurs volontaires, ainsi que la qualité de nos productions ont amené Chroma à être sacré meilleur projet innovation de l’année 2018 tant d’un point de vue technique que fonctionnel.

  • Ride Out

    Ride Out

    Description

    Ride Out est un jeu de runner musical dans lequel le joueur contrôle un personnage cherchant à échapper à l’effondrement technologique qui survient. Il doit pour cela passer au travers de 10 niveaux pendant lesquels différents obstacles se dresseront sur son chemin, calés au rythme de la musique jouée en arrière-plan. Le jeu se veut comme ayant une esthétique graphique et sonore marquante, mis en place avec la musique, les sprites et les dessins produits pour le jeu.

    Mon rôle

    Ce jeu aura constitué ma première participation à une game jam. Il a en effet été créé en tant que soumission pour la 39e édition de la Ludum Dare. Le but y était de concevoir un jeu dans un temps de 72 heures sur un thème donné : Running Out of Power. J’ai pu participer à l’implémentation des différentes mécaniques de gameplay ainsi qu’à la création des niveaux.

  • Underbreak

    Underbreak

    Description

    Underbreak est un jeu dans lequel le joueur incarne un personnage cherchant à s’échapper des enfers. Chaque niveau renferme un certain nombre de clés qu’il faudra ramasser pour pouvoir activer le passage au niveau suivant. En le traversant, le joueur pourra choisir entre 3 pactes démoniaques, chacun lui octroyant des bonus, mais également des handicaps différents, affectant ainsi le reste de sa progression…

    Mon rôle

    Le jeu a été créé avec le moteur Unity en 72 heures, dans le cadre de la 44e édition de la Ludum Dare. J’ai pu participer à cette game jam au sein d’une équipe comportant de nombreux membres. Pour ma part, j’ai pu collaborer avec Kévin Roussel (connu pour être le co-fondateur de la chaîne « Les Aventures de Red » sur YouTube) et Benjamin Robcis au développement du jeu. J’ai pu alors contribuer à l’ensemble des aspects du gameplay, comme les différents effets des pactes ou le contrôle du personnage, mais aussi à la réalisation de la fin du jeu.

  • Mana Trees

    Mana Trees

    Description

    Mana Trees est un jeu de gestion plongeant le joueur dans un univers fantasy où il guide une colonie de fées magiques. En puisant dans la magie de leur environnement, ces créatures peuvent construire des bâtiments et générer les ressources essentielles à leur survie. Le joueur se voit confier la tâche d’affecter les fées à diverses activités, de gérer sa colonie intelligemment pour assurer sa pérennité, et de la protéger des attaques de démons qui peuvent survenir au fil du jeu.

    Mon rôle

    En tant que développeur freelance, j’ai eu l’opportunité de contribuer à Mana Trees pendant six semaines, en vue de la création d’une démo pour la Game Connection 2022. J’ai principalement œuvré sur les mécaniques liées aux démons et à la défense de la colonie de fées. Ceci comprenait la mise en place de la mécanique d’apparition des démons à intervalles réguliers près de portails démoniaques, la conception de leur intelligence de déplacement (pathfinding), de leur mode d’attaque, ainsi que de structures défensives comme des tourelles qui repoussent les démons se rapprochant de la colonie.

  • The Heart Pieces

    The Heart Pieces

    Description

    The Heart Pieces est un puzzle game en vue de dessus (top-down). Le joueur doit ramener des fragments de cœur disséminés dans chaque niveau à un cœur mourant afin de le sauver dans un temps imparti. Chaque fragment augmentant le temps restant avant le game over, trouver le bon ordre dans lequel les ramasser est crucial.

    Contexte

    Ce jeu constitue ma première participation au format compo de la Ludum Dare, plus strict que le format jam. Le jeu doit être fait seul, en 48h (contre 72 pour le format jam) et toutes les ressources graphiques et sonores doivent être originales. C’est donc sous ces contraintes fortes que j’ai pu réaliser ce jeu, sous le thème « Keep It Alive », pour lequel j’aurai été l’unique créateur tant du jeu que des ressources en forgeant la direction artistique.

  • Jock Studio

    Jock Studio

    Le projet

    Jock Studio est un dating sim gay pour adultes développé par BLits Games, financé à hauteur de plus de 566 160 $ sur Kickstarter, ce qui constitue un record pour cette catégorie. Le joueur incarne Ace Anderson, un étudiant homosexuel à Olympus U, qui se retrouve mêlé à un club cinéma dissimulant en réalité un studio de films pour adultes. À travers cette aventure, il explore ses sentiments et sa sexualité, tout en jonglant avec les contraintes de la vie étudiante.

    Le jeu se distingue des productions précédentes du studio — normalement spécialisé dans le visual novel — par une liberté d’action inédite. Le joueur se déplace librement sur le campus et gère ses ressources — énergie, faim — pour optimiser ses journées. Il peut investir dans ses statistiques de performance ou cultiver ses relations avec les différents personnages, chacun ouvrant la voie à une histoire propre.

    Ma contribution

    Premier développeur Unity spécialisé à rejoindre BLits Games, je suis devenu le développeur principal de Jock Studio, avec une responsabilité transversale sur l’ensemble de la partie technique du projet. Au sein d’une équipe de cinq développeurs, j’assure l’architecture du projet, la cohérence du code et sa maintenabilité sur le long terme, notamment via des revues de code systématiques sur les fonctionnalités produites par l’équipe.

    Le projet repose sur une architecture structurée autour des principes SOLID, du pattern MVC, de ScriptableObjects notamment avec un système d’événements et de données observables (SOAP). Nous utilisons également Naninovel et son système de services comme socle pour la gestion des séquences narratives.

    Parmi les fonctionnalités majeures dont j’ai la charge figurent la gestion des déplacements sur le campus, l’affichage et l’exécution des actions disponibles, ainsi que le déclenchement des événements contextuels. J’ai aussi contribué à l’élaboration de plusieurs mini-jeux du titre : Workout, Photoshoot et Filming.

    Le défi le plus structurant du projet reste le système de free time — la mécanique au cœur de la liberté d’action du joueur sur le campus. Sa complexité tient à la multiplicité des cas d’usage à couvrir : gestion d’un calendrier dynamique pour faire apparaître des personnages ou des événements à des moments précis, et interruption immédiate de ces séquences lorsqu’un événement scripté global prend la priorité. C’est un système qui a nécessité plusieurs itérations en profondeur, et qui continue d’évoluer au fil du développement.