Game programmer
Data Surge

À propos
Data Surge est un Bullet Hell Shooter 2D situé dans un univers cybernétique où le joueur incarne un programme défensif luttant contre des vagues de virus informatiques. Le jeu se distingue par son gameplay frénétique mélangeant tirs dynamiques et power ups stratégiques.
Sa variété d'ennemis garantit une difficulté incrémentale, permettant ainsi un gameplay différent entre les différents rounds. Le but de ce jeu est d'obtenir le meilleur score possible avec un nombre de rounds théoriquement infini.
Mon rôle
J'ai développé ce jeu seul en C++ avec SDL2. J'ai structuré le code de manière modulaire, créant des classes dédiées pour le joueur, les ennemis, la machine à états, etc. La boucle principale du jeu a été codée manuellement pour garder un contrôle fin sur le déroulement du jeu. Les calculs de position et les transformations sont réalisés à l'aide de la bibliothèque GLM pour garantir une bonne précision.
J'ai implémenté des mécanismes d'optimisation tels que des pointeurs intelligents et des pools d'objets pour garantir des performances fluides et une architecture de code propre et évolutive.
Objectif du projet
Ce projet a été conçu dans le cadre de mon examen de programmation en Bac2 Q2 à la Haute École Albert Jacquard. L'objectif était de créer un Bullet Hell Shooter complet, en utilisant exclusivement SDL2 et C++. Je me suis donné le défi d'implémenter des mécanismes avancés (gestion manuelle de la mémoire, architecture modulaire, machine à états, etc.), afin de renforcer mes connaissances techniques et de produire un jeu optimisé.
Fonctionnalités principales
-
Ennemis variés : il y a cinq types différents d'ennemis, chacun avec un niveau de difficulté différent
-
Power-ups : il y a 4 power ups différents avec chaque fois 3 raretés différentes
-
Système de score et de progression : comptabilisation des points selon le type d'ennemi éliminé
-
Architecture modulaire : machine à état pour organiser clairement le comportement du jeu
-
Pooling d'objets : réutilisation optimisée des projectiles et entités en mémoire pour optimiser les performances et limiter les allocations dynamiques pendant le jeu
-
Niveau unique : l'organisation de la tilemap du niveau est différente à chaque lancement de nouvelle partie
-
Détection des collisions : le système de collision est basé sur des rectangles pour gérer les interactions entre joueur, ennemis et projectiles
Technologies utilisées
-
SDL2
-
C++
-
GLM (pour les calculs vectoriels)


Avec le framerate unlimited, le jeu peut facilement tourner à plusieurs milliers de fps sans aucune difficulté.
Défis rencontrés et solutions
La gestion manuelle de la mémoire en C++ a été un défi majeur : chaque objet (joueur, ennemis, projectiles, etc.) doit être correctement alloué et libéré pour éviter les fuites. Pour optimiser cela, j’ai mis en place un système de pooling d’objets, ce qui a réduit le nombre d’allocations dynamiques et amélioré les performances. La mise en place d'une machine à état réfléchie permet une gestion plus fluide de l'affichage des différents écrans. Afin de maintenir un framerate stable en présence de nombreuses entités à l'écran, j'ai optimisé la boucle de jeu et la détection des collisions. Ces optimisations garantissent un gameplay fluide même dans les moments les plus intenses.
Ce que ce projet montre sur moi
Ce projet démontre mon souci de l'optimisation, mon autonomie et ma rigueur. J'ai géré seul le développement de ce projet, de la conception à la mise au point. J'ai planifié et testé chaque fonctionnalité pour garantir un jeu performant et amusant. Pour finir, Data Surge reflète ma passion pour le développement de jeux vidéo, ainsi que ma volonté à produire un projet fonctionnel et travaillé.
Réflexion personnelle et apprentissage
Ce projet m'a permis d'approfondir plusieurs compétences clés. J'ai appris à gérer la mémoire en C++ et à utiliser intelligemment les pointeurs pour éviter les fuites. J'ai renforcé mes compétences en architecture logicielle en découpant le jeu en différentes parties telles que la gestion du joueur, des ennemis ou encore des interfaces. J'ai aussi appris à optimiser mon code pour maintenir des performances élevées. Je suis maintenant capable de créer et gérer correctement une boucle de jeu SDL2, ainsi que les rendus graphiques et la gestion des inputs dans ce cadre.
Liens / Téléchargement
Pour le moment, Data Surge n’est pas disponible en téléchargement public. Je prévois dans un futur proche de le rendre disponible.