Vous connaissez sûrement le jeu de société Les Loups-Garous de Thiercelieux™ mais avez-vous déjà pensé qu’il pourrait améliorer vos pratiques de développement ? C’est exactement ce qui s’est produit avec Antoine, l’un de nos développeurs lillois ! En plus d’avoir inspiré une série Canal+ et un film Netflix, ce célèbre jeu d’ambiance a inspiré… un assistant de jeu ! Conçu au départ comme un simple outil d’aide, l’Assistant Loups-Garous d’Antoine a parcouru un long chemin depuis cinq ans. En quelques années, il est passé d’une idée challengeante – comment gérer des parties complexes avec de nombreux rôles – à un véritable projet technique open source complet qui intègre de nombreuses bonnes pratiques de développement web. Zoom sur ce projet passionnant dont la V2 vient tout juste de sortir.
De l’idée à la réalité : naissance de l’Assistant Loups-Garous
Initié sur le temps libre d’Antoine, le projet a beaucoup évolué depuis sa création. Au fil du temps, Antoine a entrepris de professionnaliser son assistant, en utilisant des technologies plus avancées et en appliquant des pratiques de développement poussées, qui lui permettaient de monter en compétences.
Mais quel est l’objectif concret de l’Assistant Loups-Garous ? Aider, tout simplement ! L’assistant vise à simplifier la gestion du jeu Loups-Garous afin de permettre à tous (même aux novices !) de devenir maîtres du jeu, sans connaître toutes les règles par cœur. Parmi les features principales, il comporte par exemple :
- Un écran de création de partie pour accueillir de 4 à 40 joueurs, avec une répartition aléatoire des rôles ;
- Une interface ludique de suivi de chaque événement de la partie (cible des loups-garous, élection du maire, etc.) ;
- Un récapitulatif complet à la fin de chaque partie avec le camp gagnant et l’historique des actions ;
- Une ambiance sonore immersive pour rythmer les parties, avec des thèmes pour le jour, la nuit, et des bruitages spécifiques selon les rôles et groupes ;
- Les 30 rôles du jeu complet, maintenant disponibles, ce qui offre la possibilité de jouer avec l’intégralité des personnages.
L’assistant prend en charge les aspects techniques, délestant ainsi la charge du meneur pour qu’il se concentre sur l’ambiance et l’animation de la partie. L’outil ne remplace pas le jeu en présentiel et les cartes physiques mais agit comme un exhausteur d’expérience. Il améliore considérablement cette dernière, tout en allégeant la prise de tête lorsque l’on est nombreux !
Une architecture solide et des choix technologiques modernes
Au cœur de la V2 se trouve une refonte architecturale audacieuse. L’API centralisée est désormais le cerveau de l’application et gère toute la logique du jeu, des règles complexes aux événements dynamiques. Cette approche, alignée sur les principes des microservices, offre plusieurs avantages :
- Scalabilité améliorée : L’architecture permet une croissance et des mises à jour plus faciles.
- Performance optimisée : Le front-end allégé se concentre uniquement sur l’affichage, améliorant ainsi le temps de chargement ; il est donc plus réactif.
- Flexibilité accrue : Cette structure facilite le développement futur de l’interface mobile, par exemple.
Pour le back-end, Antoine a opté pour Node.js avec TypeScript, offrant ainsi une base solide avec typage statique, et un framework Nest JS qui fournit une structure organisée pour l’API (contrairement à Node.js et Express dans sa V1). Il a gardé MongoDB pour la base de données, en raison de sa flexibilité avec les données de jeu dynamiques. En revanche, différence importante avec la V1 : son application est à présent dockerisée, pour assurer une cohérence entre les environnements de développement et de production.
Côté front-end, l’Assistant Loups-Garous est passé de JavaScript avec Vue.js dans sa V1 à TypeScript avec Nuxt dans sa V2. Nuxt aide à améliorer le référencement naturel (SEO), et ainsi l’expérience utilisateur, grâce au Server Side Rendering (SSR), ce que ne permettait pas Vue.js tout seul. La V2 de l’Assistant Loups-Garous charge donc bien plus rapidement ! Le front est également dockerisée, indépendamment du back.
Tous ces choix technologiques visent à améliorer la maintenabilité, la performance et la scalabilité de l’application, tout en offrant une expérience de développement moderne.
Un développement de qualité : entre clean code et tests
En plus des technologies avancées, l’Assistant Loups-Garous V2 intègre les meilleures pratiques de clean code. Ce projet met l’accent sur la qualité et la lisibilité du code et les tests rigoureux : une couverture de tests à 100% assure que chaque partie du code est testée, tandis que le mutation testing va au-delà des tests traditionnels pour vérifier la qualité des tests eux-mêmes. Plus de 400 scénarios de tests end-to-end écrits en Gherkin simulent des situations de jeu réelles, garantissant la robustesse de l’application.
L’intégration continue et le déploiement continu (CI/CD) automatisent les processus de test et de déploiement, assurant une qualité constante à chaque mise à jour. Ces pratiques, bien qu’exigeantes en temps et en ressources, contribuent significativement à la stabilité et à la fiabilité de l’application.
Un projet open source : collaboration et amélioration continue
Bien que développé principalement par Antoine, l’Assistant Loups-Garous est un projet open source, hébergé sur GitHub ! Grâce à cette approche collaborative, n’importe quel développeur de la communauté peut mettre en pratique ses compétences et s’améliorer en travaillant sur un projet fun et concret.
Autre aspect unique de ce projet : son processus de tests en conditions réelles. Antoine organise régulièrement des sessions de jeu dans notre agence lilloise pour tester l’assistant et recueillir des retours utilisateurs précieux de ses collègues Daveo. Il peut ainsi identifier rapidement les bugs et les améliorations nécessaires de l’application !
Antoine ZANARDI
Consultant Lead Tech chez Daveo
Je donne beaucoup de valeur aux soirées Loups-Garous qu’on organise chez Daveo : j’en repars avec de nombreux retours, beaucoup d’encouragements, et elles affûtent mes soft skills pour la préparation des parties et le développement de l’assistant. Au-delà de ces aspects, j’aimerais que ce projet serve d’exemple en matière d’open source et de bonnes pratiques de développement. Chacun peut contribuer et chaque feature peut être ajoutée facilement, un peu à la manière d’un plug and play. C’est une excellente opportunité de contribuer à un projet collaboratif !
Les défis techniques et perspectives d’évolution
Le développement de l’Assistant Loups-Garous a présenté plusieurs défis, parmi lesquels :
- Équilibrer la complexité technique avec la facilité d’utilisation.
- Gérer la logique complexe du jeu de manière efficace tout en assurant la performance avec un nombre variable de joueurs et de rôles.
Ces challenges ont offert des enseignements essentiels en matière de conception d’applications et de gestion de projet.
Aujourd’hui, le projet continue d’évoluer et il n’est jamais trop tard pour y contribuer ! Antoine a plusieurs évolutions en ligne de mire :
- Améliorer l’ergonomie de l’application et optimiser l’affichage sur les appareils mobiles, afin d’élargir l’accessibilité de l’assistant. À l’heure actuelle, l’expérience est bien plus optimale sur des grands écrans (PC, tablettes…) car les petits écrans de type smartphone ne permettent pas l’affichage complet de toutes les informations, par manque de place.
- Ajouter de nouvelles fonctionnalités de jeu, comme les cartes de nouvelles lunes, pour mettre en place de nouvelles variantes et étoffer l’expérience de jeu.
- Développer un mode spectateur pour améliorer l’expérience de tous les participants, y compris ceux qui ont été éliminés et ne jouent plus activement dans la partie, en leur montrant le même écran que le maître du jeu, sans les informations secrètes.
Pour Antoine, ce projet est un terrain d’apprentissage précieux. Il lui a permis d’appliquer des connaissances théoriques dans un contexte pratique, d’explorer de nouvelles technologies et de développer des compétences en gestion de projet open source.
L’Assistant Loups-Garous démontre comment un projet personnel peut servir de terrain d’application pour les pratiques avancées de développement web. Loin d’être uniquement un outil pour les amateurs du jeu, il offre un exemple concret de la façon dont la passion et la technologie peuvent se combiner pour créer une application utile et bien conçue.
Chaque retour compte : testez l’Assistant Loups-Garous !
Intéressés par ce projet open source ? N’hésitez pas à visiter le dépôt GitHub du front ou du back pour explorer le code, contribuer ou simplement vous inspirer : que vous soyez un développeur chevronné ou un débutant curieux, vous êtes les bienvenus !
Un besoin technique sur l’un de vos projets ? Faites appel aux experts de notre practice Tech.