Kass Brikerie
Jeu de casse-briques moderne développé en Java pour terminal
Aperçu du projet
Kass Brikerie est un jeu de casse-briques moderne inspiré du classique Arkanoid, développé entièrement en Java pour terminal. Le projet combine un gameplay classique avec des fonctionnalités modernes : système de bonus, gestion multi-balles, et sauvegarde de scores en ligne. Développé en méthodologie Agile/Scrum sur 9 sprints par une équipe de 5 développeurs.
Au sein de l'équipe, j'ai contribué à l'implémentation du système de collisions et de physique du jeu, au développement du système de bonus variés, ainsi qu'à l'optimisation du rendu dans le terminal pour assurer une expérience de jeu fluide. J'ai également participé activement aux cérémonies Scrum (daily stand-ups, sprint reviews, rétrospectives) et à la gestion du backlog produit.
Contexte du projet
SAÉ universitaire réalisée en équipe de 5 développeurs dans le cadre du BUT Informatique à l'IUT de Lille. L'objectif était de produire un jeu complet en appliquant rigoureusement Scrum, avec un focus sur le travail collaboratif, la gestion de backlog et les bonnes pratiques de développement.
Objectifs
- Livrer un jeu jouable en terminal, fluide et stable, en 9 sprints.
- Mettre en pratique Scrum de bout en bout (planning, daily, review, rétro).
- Garantir une base de code testée et maintenable à 5 contributeurs.
Mon rĂ´le
Développeur dans l'équipe Scrum : j'ai contribué au système de collisions et à la physique, au système de bonus, et à l'optimisation du rendu terminal. J'ai participé activement à toutes les cérémonies Scrum et à la gestion du backlog, ainsi qu'aux revues de code des autres membres.
Fonctionnalités principales
- Gameplay classique amélioré Reprise du concept Arkanoid avec des mécaniques modernes et fluides
- Système de bonus variés Power-ups pour agrandir la raquette, ralentir la balle, obtenir des vies supplémentaires, etc.
- Gestion multi-balles Possibilité de jouer avec plusieurs balles simultanément pour maximiser les points
- Rendu terminal optimisé Rafraîchissement d'image fluide dans le terminal avec gestion des collisions précise
- Système de scores en ligne Sauvegarde et classement des meilleurs scores avec persistance des données
- Niveaux progressifs Difficulté croissante avec des patterns de briques variés
Technologies utilisées
Java
Langage principal pour la logique de jeu et le moteur graphique
Terminal Graphics
Rendu graphique dans le terminal avec rafraîchissement optimisé
Game Loop
Boucle de jeu avec gestion du temps et des FPS constants
Méthodologie Agile
Développement en sprints Scrum avec rétrospectives et planning
Méthodologie Agile/Scrum
Le projet a été développé en suivant rigoureusement la méthodologie Scrum sur 9 sprints :
Sprint Planning
Définition des user stories et estimation des tâches en début de sprint
Daily Standups
Points quotidiens pour synchroniser l'équipe et identifier les blocages
Sprint Review
Démonstration des fonctionnalités développées aux parties prenantes
Retrospective
Analyse des points positifs et axes d'amélioration pour le sprint suivant
Défis techniques
Rendu fluide en terminal
Optimisation du rafraîchissement de l'écran terminal pour obtenir un gameplay fluide malgré les limitations du terminal (pas de double buffering natif).
Détection de collisions précise
Détection cellule par cellule des collisions entre la balle, les briques et la raquette avec gestion des angles de rebond cohérents avec le terminal.
Gestion multi-balles
Coordination de plusieurs balles simultanées avec gestion individuelle des collisions et de la physique pour chaque balle.
Travail en équipe
Coordination de 5 développeurs avec des niveaux d'expérience différents, nécessitant une communication claire et des revues de code régulières.
Architecture du projet
Séparation des responsabilités
Logique de jeu, rendu et entrée séparés en classes dédiées, avec une boucle de jeu centralisée orchestrant les composants
Conception orientée objet
Interfaces (Drawing, Move) et énumérations (BonusListe) pour rendre les briques, bonus et entités graphiques extensibles
Tests unitaires
Tests JUnit sur le système de score et le déplacement de la raquette
Git workflow
Branches par fonctionnalité avec merge requests et code reviews
Compétences développées
Compétences techniques
- Développement de jeux vidéo (game loop, physique, collisions)
- Méthodologie Agile/Scrum en environnement réel
- Travail collaboratif avec Git (branches, merge, code reviews)
- Optimisation de performances et gestion mémoire
- Conception orientée objet avec interfaces et énumérations
- Communication d'équipe et gestion de projet
- Tests unitaires et assurance qualité
Compétences transversales
- Communication : daily standups et synchronisation continue avec 4 autres développeurs.
- Organisation : planification de sprint, estimation et suivi du backlog.
- Adaptabilité : ajustement du périmètre en rétrospective face aux aléas de chaque sprint.
- Esprit critique : revues de code constructives entre pairs.
Résultats obtenus
Jeu livré jouable au terme des 9 sprints, ~4k lignes de Java, tests unitaires JUnit sur le score et le déplacement, dépôt Git structuré (branches par fonctionnalité, merge requests, code reviews). Toutes les cérémonies Scrum ont été tenues sur la durée du projet.
Bilan & recul
- Ce que j'ai appris : Scrum n'a de valeur que si chaque cérémonie est tenue sérieusement ; sauter une rétrospective coûte plus cher qu'il n'y paraît.
- Difficulté surmontée : coordonner 5 développeurs avec des niveaux différents : la mise en place de revues de code systématiques a homogénéisé la qualité.
- Ce que je referais autrement : investir davantage dans les tests automatisés dès le sprint 1, plutôt que de les ajouter en milieu de projet.
Explorez le code
Le code source complet est disponible sur GitHub avec la documentation du projet et les instructions d'installation. Testez le jeu et découvrez l'implémentation !
Voir le repository GitHub →