Game programmer
Hex-Calibur

À propos
Hex-Calibur est un Tactical RPG médiéval au tour par tour dans lequel le joueur positionne stratégiquement ses troupes sur une grille hexagonale pour affronter une IA ennemie. Le cœur du gameplay repose sur un système de pathfinding optimisé, des mécaniques de placement intelligentes et quatre types d’attaques différents. Le projet se distingue aussi par une carte claire, un rendu visuel propre et un système de caméra parfaitement adapté à la géométrie hexagonale. Conçu pour être jouable en moins de cinq minutes, il condense stratégie, technique et efficacité dans un court format, mais ambitieux.
Mon rôle
J’ai entièrement développé un système de pathfinding sur grille hexagonale en adaptant l’algorithme A* via une conversion odd-r vers des coordonnées cubiques. J’ai optimisé cet algorithme avec une file de priorité personnalisée pour garantir une complexité maîtrisée et des performances élevées.
J’ai aussi conçu un système de caméra basé sur des calculs d’angle pour empêcher les débordements hors carte, ainsi que l’ensemble de la logique de gameplay (tour par tour, IA, attaques). L’ensemble du code vient de moi.
Objectif du projet
Ce jeu a été développé dans le cadre d’un examen de programmation en C++ sur Unreal Engine 5 à la Haute École Albert Jacquard.
Mon objectif personnel était de proposer une expérience tactique soignée et techniquement robuste. J’ai choisi une grille hexagonale pour enrichir le gameplay, implémenté un pathfinding sur mesure et contrôlé dynamiquement la caméra via des calculs angulaires.
Fonctionnalités principales
-
Déplacement stratégique de troupes sur grille hexagonale (odd-r layout)
-
4 types d’attaques différents
-
Pathfinding personnalisé, adapté à la portée et aux obstacles
-
IA ennemie basique pour simuler un affrontement dynamique
-
Placement libre des unités en début de partie
-
Système de caméra intelligent. Elle reste confinée dans la map hexagonale grâce à des calculs d’angle
Technologies utilisées
-
Unreal Engine 5.4
-
Langage C++
-
Grille hexagonale personnalisée (odd-r layout)
-
Aucune librairie externe pour le pathfinding, tout a été codé manuellement


Exemples de fonctionnement d'un algorithme A* sur une grille odd-r
Défis rencontrés et solutions
L’un des plus grands défis a été d’adapter un système de pathfinding performant à une grille hexagonale, tout en prenant en compte des contraintes de portée et d’accessibilité spécifiques aux unités. Il a fallu implémenter une conversion odd-r vers des coordonnées cubiques pour permettre des calculs précis de distance et structurer une file de priorité efficace capable de trier dynamiquement les cellules selon leur coût total.
Un autre enjeu a été la gestion des limites de la carte : j’ai conçu une méthode mathématique à base de calculs d’angle permettant de confiner la caméra automatiquement dans les bornes visuelles de la carte, même si celle-ci est un hexagone géant. Enfin, j’ai dû veiller à ce que les performances restent optimales, en maîtrisant la complexité algorithmique (O(n*log(n)) en temps, O(n) en mémoire) tout en garantissant une fluidité visuelle et une lisibilité stratégique.
Ce que ce projet montre sur moi
Ce projet illustre ma capacité à m’adapter à des consignes complexes et à les dépasser. Il témoigne de mon envie constante d’optimiser mes systèmes, de mon autonomie technique, ainsi que de mon goût pour les mécaniques rigoureuses et bien pensées. J’aime les défis techniques ambitieux et je suis capable de concevoir des solutions élégantes même dans un cadre contraint. Enfin, j’attache une grande importance à l’expérience utilisateur : lisibilité de la grille, clarté des actions, feedback visuel… tout est pensé pour offrir une expérience de jeu agréable et cohérente.
Réflexion personnelle et apprentissage
Le développement de Hex-Calibur m’a permis de faire un bond en avant dans ma compréhension des systèmes de pathfinding, en particulier dans un environnement non conventionnel comme une grille hexagonale. J’ai dû jongler entre logique algorithmique, mathématiques appliquées (coordonnées, distance de Manhattan adaptée, angles) et contraintes de performances.
Ce projet m’a également appris à structurer un jeu de manière propre et efficace dans Unreal Engine en C++, en m’aidant uniquement de ressources brutes. Enfin, il m’a sensibilisé à la gestion de la complexité, tant du point de vue technique qu’organisationnel : aujourd’hui, je pense toujours mes systèmes avec une attention particulière à la complexité spatiale et temporelle, pour garantir un bon équilibre entre robustesse et fluidité.
Liens / Téléchargement
Le projet Unreal est disponible sur mon GitHub : Emilien