Le Contexte
Ce projet est un moteur de jeu RPG en 2D, fortement inspiré de l'univers de Pokémon. Développé de A à Z en C++ natif en s'appuyant sur la bibliothèque multimédia SFML 3, l'objectif était de créer une base technique solide et évolutive.
Au-delà de l'aspect ludique, ce développement m'a permis de mettre en pratique des concepts d'architecture logicielle complexes : la gestion rigoureuse de la mémoire, l'implémentation de Game States (États de jeu), un système Entity-Component rudimentaire, et la gestion des événements asynchrones.
Moteur d'Exploration
-
Tile Engine : Système de rendu basé sur des
grilles. Chargement dynamique des calques (Sol & Décor) depuis des
fichiers
.csv. - Caméra Dynamique : Algorithme de suivi fluide du joueur avec Clamping (verrouillage de la caméra sur les bordures de la carte).
- Collisions : Système de détection des obstacles physiques (arbres, eau, bords de carte).
- Hautes Herbes & RNG : Déclenchement de rencontres aléatoires basé sur le mouvement du joueur.
Stack Technique
-
C++ 17 : Langage principal
-
SFML 3.0 : Rendu Audio/Vidéo
- CSV : Maps Data
-
Make : Compilation
Système de Combat & Audio
⚔️ Logique Tour par Tour
Le jeu intègre un système de combat complet avec interface graphique (GUI). Le joueur peut naviguer dans les menus via les touches directionnelles (ou Q/D) pour choisir entre attaquer ou se soigner. Les barres de vie s'actualisent en temps réel, complétées par un log de combat textuel. L'intelligence artificielle gère quant à elle un bestiaire de 4 ennemis aux statistiques uniques via des choix aléatoires.
🎵 Transitions Audio & Secrets
Pour renforcer l'immersion, un système de Crossfade (transition fluide) gère le passage entre la musique d'exploration et la musique de combat. J'ai également caché un Easter Egg interactif : un événement spécial se déclenche uniquement si le joueur marche sur la tuile n°102 de la carte... 🕺
Aperçu du Jeu
Quelques images du moteur en action (Exploration & Combat) :