QT Game
ISEN CIR 2 - 2023
Rôle
Développeur
Durée et résultat
1 Mois (~150 Heures) | 19,5/20
Équipe
Projet individuel
Liens
Aperçu
Projet individuel de 1 mois en C++. Développement d'un jeu de plateforme 2D avec la librairie Qt. Intégration de la gestion des fenêtres, de gravité, des collisions et de la création optimisée de niveaux. Ajout de mécaniques de combat, d'ennemis, de plateformes, d'animations et d'effets visuels pour améliorer l'expérience de jeu.
Objectif
Concevoir un jeu de plateforme 2D
L’objectif principal de QT Game était de développer un jeu de plateforme 2D en appliquant les concepts de la programmation orientée objet (POO) tout en intégrant des mécanismes de gravité et de collisions. Le projet visait également à améliorer l'expérience de jeu en y intégrant des mécaniques de combat et des interactions dynamiques.
Un autre objectif important était d’optimiser les performances du jeu pour garantir une expérience fluide et immersive, en s’assurant que chaque interaction et chaque animation fonctionnent correctement.
1.0
Gameplay
Contexte
Cadre et durée
Ce projet a été réalisé dans le cadre de ma deuxième année à l'ISEN, durant un module de C++. L'objectif du module était de mettre en pratique des concepts avancés de développement C++ en utilisant Qt pour gérer l'interface graphique. Il s'agissait d’un projet individuel d’une durée d’un mois, conçu pour approfondir mes compétences en développement dans ce langage et les appliquer à un projet concret.
Processus et méthodologie
Approche adoptée et étapes du développement
Le développement de ce jeu QT a suivi un processus structuré en plusieurs étapes. J'ai commencé par une phase de conception initiale, suivie du développement des fonctionnalités de base, puis l’ajout d'éléments interactifs, et enfin, l’optimisation des performances.
La première phase a consisté à définir les objectifs du jeu, à concevoir l’architecture globale du projet et à planifier les différentes fonctionnalités à implémenter, l'environnement de jeu et les objectifs de celui-ci.
J’ai ensuite mis en place les fonctionnalités essentielles, telles que la gestion des fenêtres, la gravité, et la détection des collisions. Ces fonctionnalités ont posé les bases solides du jeu.
Après avoir créé l'infrastructure de base, j'ai ajouté des éléments interactifs comme les ennemis, les plateformes mobiles, et les systèmes de combat, qui rendent le jeu plus engageant.
Enfin, j'ai consacré une part importante du projet à l’ajout de nouveaux niveaux, de transitions et d'animations plus subtiles.
Défis rencontrés et solutions
Difficultés techniques et ajustements apportés
Plusieurs défis techniques ont été rencontrés lors du développement de ce jeu, en particulier la gestion des collisions.
La détection des collisions entre le joueur, les ennemis et les plateformes se sont avérées complexe. Pour y remédier, j'ai assigné à chaque bloc une fonction pour simplifier les calculs et ne pas gérer tous les cotés.
Un autre problème a été la création des niveaux. Initialement généré en dur dans le code. J'ai ensuite implémenté une fonctionnalité qui me permettait de générer un niveau à partir d'un CSV et de codes numériques.
Pour aller plus loins, j'ai enfin ajouté un niveau sombre (le dernier) qui avait pour spécificité de n'éclairer seulement autour du joueur. Cela m'a permis de diversifier l'expérience utilisateur, mais a également posé des problèmes de performance qui ont été réglées au mieux.
4.0
Gameplay
Résultats
Performances et retour final
L'optimisation réalisée a permis au jeu de fonctionner sans ralentissement, tout en maintenant un rendu visuel de haute qualité. Les mécaniques de combat, les ennemis dynamiques, et les effets visuels contribuent à rendre le jeu captivant et engageant. Ce projet a été noté 19,5/20.
Retours d'expérience et compétences acquises
Leçons apprises et compétences développées
Ce projet m’a permis de développer plusieurs compétences, notamment dans l'utilisation de Qt et dans l’application de concepts avancés de programmation orientée objet.
Le développement du jeu QT m’a permis de mieux comprendre les capacités de Qt, notamment pour la gestion des interfaces graphiques et l'intégration d'animations dans un jeu.
J’ai également perfectionné mes compétences en optimisation des performances, en trouvant des moyens d’améliorer la génération de niveaux.