Tower Bruiser

Tower Bruiser

Tower Bruiser est un Tower defense disponible sur PC, Android et Linux. Il est basé sur mon moteur 3D ( développé en C++) que j’ai mis plus d’un an et demi à réaliser et bien qu’il ne soit pas parfait je suis quand même satisfait du résultat, ainsi que l’expérience qu’il m’a apporté. 

 

Le gameplay est simple, vous contrôlez un humain qui peu construire 4 tours qui on chacune leur particularité.
Le but est de ne laisser passez aucun ennemie à travers vos murs.
A Vous de Trouver la bonne Stratégie!
J’ai rencontré de nombreux défis lors du développement de ce jeu, mais deux d’entre eux furent très intéressant à résoudre :

 

-Optimisation du rendu : En phase de jeu normal le jeu peu afficher 100 models 3D simultanément en ajoutant à cela le nombre de polygone de la map, cela peu revenir très cher en  calcul (sur une plateforme mobile).
Pour résoudre ce problème j’ai optimisé l’affichage du rendu à l’aide d’un algorithme de Quadtree + Frustrum.

 

-Optimisation du pathfinding : Le pathfinding est le point le plus important de mon jeu, car il constitue à lui seul le comportement des ennemies vis a vis du héros. Dans un premier temps j’ai utilisé un simple algorithme A Star
afin de déterminer le chemin. Malheureusement vu l’ampleur de la carte, a partir de 50 ennemies le jeu ramait terriblement. J’ai donc utiliser un algorithme (de partitionnement) : quadtree en fonction des zones de collisions me permettant ainsi de créer une structure beaucoup plus légère à manipuler (avec algorithme du plus proche voisin) pour la recherche A-star. Une fois cette algorithme intégré au jeu, il m’est maintenant possible de gérer plus de 200 ennemies en même temps et avoir de très bonne performance.

 

Il m’aurait été également possible d’utiliser l’algorithme wavefront pour trouver le chemin les plus cours, mais après plusieurs Benchmark il c’est avéré que l’implémentation Quadtree+Recherche du plus proche voisin+Astar était plus performante dans mon cas.