Grille de cellules
Le labyrinthe commence comme une grille de cellules non connectées, chacune avec tous ses murs.
Un FPS coopératif multijoueur développé sous Unity : quatre joueurs s'écrasent sur une planète inconnue et doivent défendre le cœur survivant de leur vaisseau contre des vagues de monstres, tout en explorant un labyrinthe généré procéduralement pour récupérer les pièces manquantes du vaisseau.
Le jeu a été réalisé en équipe de quatre lors du projet informatique de semestre 2 (Sup) à l'EPITA. Il mélange trois genres : le FPS coopératif, le tower defense (tourelles et pièges autour du cœur du vaisseau) et l'exploration procédurale. Il se joue en multijoueur grâce à Mirror, la bibliothèque réseau d'Unity - une introduction fondamentale au travail collaboratif, à Git sur des fichiers binaires (assets Unity), et à la programmation orientée objet en C#.
Le cœur du jeu repose sur son générateur de labyrinthe. Il implémente un algorithme de type recursive backtracker pour produire des labyrinthes parfaits (sans boucles et entièrement connectés), généré une seule fois par le premier joueur connecté puis synchronisé auprès de tous les clients.
Le labyrinthe commence comme une grille de cellules non connectées, chacune avec tous ses murs.
Parcours de la grille qui « casse » les murs, créant un chemin unique et connexe, côté hôte.
Le labyrinthe généré est diffusé à tous les clients via Mirror (NetworkBehaviour).
Des prefabs de murs et de sols sont instanciés pour construire l'environnement.
Le niveau est peuplé d'ennemis, puis un NavMesh est baké au runtime pour leur navigation.
Un NavMeshAgent Unity gère trois comportements : patrouille
aléatoire, poursuite du joueur détecté, et attaque (poing, épée ou saut selon
l'ennemi). Trois catégories : un mutant, un ours, et un groupe de petits
monstres autonomes surnommé « L'Horreur ».
Une douzaine de scripts (labyrinthe, joueur, armes, inventaire, IA...)
héritent de NetworkBehaviour pour synchroniser la partie entre
l'hôte et les clients.
Des tourelles et des pièges peuvent être placés autour du cœur du vaisseau pour le défendre contre les vagues de monstres.
Un système de craft et d'inventaire permet d'exploiter les ressources récoltées ; une sauvegarde de partie est également implémentée.
Un cycle jour/nuit anime le ciel du labyrinthe (ma contribution, avec la gestion de la skybox).
Chaque partie régénère un labyrinthe différent, transformé en environnement 3D jouable à partir de la grille calculée.
Images issues de sessions de test du jeu (moteur Unity, build de développement).
Le projet a été mené à quatre. Ma contribution documentée dans le rapport porte sur l'IA des ennemis, le cycle jour/nuit (skybox) et la création du monstre « L'Horreur ».
Le comportement des ennemis repose sur une logique de patrouille/poursuite/attaque impérative plutôt que sur une machine à états formelle.
Jeu coopératif jouable à quatre : personnage, tir, mort/respawn, inventaire, craft, labyrinthe régénéré à chaque partie et synchronisé via Mirror, tower defense autour du cœur du vaisseau, cycle jour/nuit et sauvegarde.
Une première expérience significative de gestion de projet en groupe de quatre, la maîtrise des bases d'Unity et de C#, et une première mise en pratique d'un projet réseau multijoueur.