Projet de fin de semestre 5
Le développement de ce projet de fin de cinquième semestre de BUT reposait sur la création d’un écosystème complet combinant un site web et un jeu vidéo développé avec Unity. Réalisé en équipe de quatre, l’objectif était de concevoir un jeu d’arcade interactif capable de communiquer avec une plateforme en ligne. Le choix s’est porté sur un jeu de rythme, dans lequel les joueurs peuvent enregistrer et consulter leurs scores via le site.
Mon rôle s’est concentré sur la conception et le développement du backend du site ainsi que sur la mise en place de la communication entre le jeu et la plateforme web. Le site a été développé avec Symfony, dont j’ai assuré l’initialisation, la configuration et le développement des fonctionnalités côté serveur.
L’infrastructure a été mise en place à l’aide de Docker, en s’appuyant sur la stack proposée par Kévin Dunglas, afin de garantir un environnement de développement homogène et optimisé. J’ai également configuré l’intégration de Tailwind CSS pour le styling, ainsi que Symfony UX Live Component pour concevoir des interfaces dynamiques et réactives.
Pour la communication avec le jeu, j’ai intégré API Platform, permettant d’exposer une API robuste et structurée.
Après avoir défini les bases techniques avec l’équipe, j’ai conçu la base de données puis développé les différents CRUD nécessaires. J’ai ensuite implémenté les routes API utilisées par le jeu, en veillant à couvrir l’ensemble des cas d’usage lors des tests. Parmi celles-ci, une route permet notamment l’enregistrement des scores en fin de partie.
Afin de valoriser ces données, j’ai développé un tableau de scores interactif permettant aux utilisateurs de suivre leur progression. Cette interface propose plusieurs critères de tri et de filtrage (date, ordre croissant ou décroissant, musique), et a été réalisée à l’aide de composants Symfony UX, garantissant une navigation fluide sans rechargement de page.

Une contrainte importante concernait l’authentification des joueurs depuis la borne d’arcade. L’absence de saisie possible pour des identifiants classiques m’a conduit à concevoir un système d’authentification par code temporaire. Lorsqu’un joueur démarre une partie, un code à usage unique est généré et affiché à l’écran. Il lui suffit ensuite de se connecter sur le site et de saisir ce code pour lier sa session de jeu à son compte.
Un mécanisme de polling permet alors au jeu de récupérer automatiquement les informations utilisateur, utilisées ensuite lors de l’enregistrement des scores.
Enfin, j’ai assuré la communication entre le jeu et le site, en développant les échanges côté C# dans Unity. Une contrainte technique majeure est apparue avec l’utilisation d’un proxy imposé sur la borne, qui altérait le bon fonctionnement des requêtes POST, pourtant essentielles à la création des scores.
Pour contourner ce blocage, j’ai mis en place une adaptation des échanges en utilisant des requêtes GET pour certaines opérations de création. Bien que cette approche s’écarte des standards du Web, elle a permis de garantir la fiabilité des communications dans cet environnement contraint.
Cette solution a été déterminante pour assurer le fonctionnement du système de sauvegarde des scores, élément central du projet, et a permis de livrer une application pleinement fonctionnelle malgré les limitations techniques imposées.