Le Labyrinthe des Dys-Parus
Jeu de labyrinthe avec algorithme de génération procédurale
Aperçu du projet
Le Labyrinthe des Dys-Parus est un jeu de labyrinthe innovant développé en Java avec JavaFX. Le joueur progresse à travers plusieurs étapes qui changent la manière de voir et d'interagir avec le jeu, offrant une expérience immersive unique. Le projet propose un mode coopératif et un mode libre pour une expérience de jeu diversifiée, tout en intégrant des mécaniques de jeu progressives qui évoluent au fil de la partie.
Au cours de ce projet, j'ai été responsable de la conception de l'architecture globale du jeu, de l'implémentation des algorithmes de génération procédurale des labyrinthes, ainsi que du développement de l'interface graphique avec JavaFX. J'ai également travaillé sur la gestion des différents modes de jeu et la synchronisation des actions en mode coopératif.
Contexte
SAÉ réalisée en équipe dans le cadre du BUT Informatique à l'IUT de Lille. Le projet vise à approfondir la génération procédurale, le développement d'interfaces graphiques JavaFX et la conception de systèmes de jeu modulaires.
Objectifs
- Concevoir un moteur de génération de labyrinthes paramétrable et performant.
- Proposer plusieurs modes de jeu (progression, coopératif, libre) autour d'un même cœur logique.
- Livrer une interface graphique JavaFX claire et jouable de bout en bout.
Mon rĂ´le
Au sein de l'équipe, j'ai pris en charge l'architecture globale (patterns Observateur et Factory), l'implémentation des algorithmes de génération et une partie de l'interface JavaFX. J'ai également contribué à la synchronisation des actions en mode coopératif et à la coordination des points d'intégration entre les modules.
Fonctionnalités principales
- Génération procédurale Algorithme de génération de labyrinthes paramétrables avec différents niveaux de complexité
- Interface graphique moderne Développé avec JavaFX pour une expérience visuelle fluide et immersive
- Plusieurs modes de jeu Mode histoire avec étapes progressives, mode coopératif et mode libre
- Mécaniques évolutives La perception du jeu change selon les étapes franchies
- Système de progression Déblocage progressif de nouvelles fonctionnalités et défis
Technologies utilisées
Java
Langage principal du projet, pour la logique de jeu et les algorithmes
JavaFX
Framework pour l'interface graphique et les animations
Algorithmes de génération
Génération de labyrinthes parfaits par parcours en profondeur randomisé (DFS) et labyrinthes imparfaits par densité de murs
POO avancée
Architecture orientée objet avec patterns Observateur (AbstractModele) et Factory (MazeFactory)
Défis techniques
Algorithme de génération performant
Conception d'un algorithme de génération de labyrinthes efficace et paramétrable, capable de créer des parcours variés et équilibrés en termes de difficulté.
Gestion de l'affichage dynamique
Mise en place d'un système d'affichage qui s'adapte selon les étapes du jeu, modifiant la perception du joueur de manière fluide.
Mode coopératif
Implémentation d'un système de jeu à plusieurs joueurs avec synchronisation des actions et gestion des interactions.
Compétences développées
Compétences techniques
- Conception et implémentation d'algorithmes complexes
- Développement d'interfaces graphiques avec JavaFX
- Architecture logicielle avec patterns Observateur et Factory
- Gestion d'événements et interactions utilisateur
- Optimisation de performances pour le rendu graphique
- Tests et débogage d'applications complexes
Compétences transversales
- Travail d'équipe : découpage des modules entre développeurs et intégration continue des contributions.
- Rigueur : maintien d'une architecture cohérente malgré l'ajout progressif de modes de jeu.
- Résolution de problèmes : debug de cas limites de génération et de synchronisation coopérative.
Résultats obtenus
Livrable fonctionnel intégrant les trois modes de jeu prévus, accompagné des diagrammes UML (classes, cas d'utilisation) et d'une démonstration jouable. Le moteur de génération supporte labyrinthes parfaits (DFS) et imparfaits, avec des paramètres ajustables (taille, densité).
Bilan & recul
- Ce que j'ai appris : appliquer concrètement des patterns POO à un projet de taille moyenne, plutôt que les voir uniquement en cours.
- Difficulté surmontée : la synchronisation du mode coopératif a nécessité de revoir le modèle d'événements ; la séparation modèle/vue via Observateur a débloqué la situation.
- Ce que je referais autrement : écrire les tests unitaires plus tôt et figer l'API du modèle avant de coder les modes de jeu, pour limiter les refontes.
Captures du projet
Explorez le code
Le code source complet est disponible sur GitHub. N'hésitez pas à explorer l'implémentation, cloner le projet et proposer des améliorations !
Voir le repository GitHub →