/          All Posts       Projects       GitHub       More...
🔗

Tower Defense, projet de fin d’annĂ©e SUPINFO

J’ai Ă©tĂ© plutĂŽt discret ces derniers temps, pris pas mal d’occupations, dont la finalisation de nos projets de fin d’annĂ©e Ă  SUPINFO.

Nous venons juste (mes 3 collÚgues et moi) de passer notre soutenance orale, ce qui met enfin un terme à plusieurs mois de développement.

Notre prĂ©sentation s’est trĂšs bien passĂ©e, et dans l’euphorie de la victoire, je vais vous prĂ©senter un peu plus en dĂ©tail le projet sur lequel j’ai le plus travaillĂ© : un jeu de Tower Defense dĂ©veloppĂ© entiĂšrement en C#, avec l’aide de la bibliothĂšque graphique SFML (plus prĂ©cisĂ©ment, son binding .net).

RAMPART screenshot

RAMPART 1991

Le sujet Ă©tait imposĂ© mais nous avions le champ libre pour le langage de dĂ©veloppement, et nous nous sommes demandĂ© ce que pouvait donner un petit jeu en C# 🙂

Le jeu original, RAMPART, dont nous nous sommes inspiré, date des années 1990 et a été développé en assembleur. Il est téléchargeable ici, et est jouable en utilisant DosBox.

Passons au notre maintenant


1. Gameplay

Une petite explication pour commencer : la carte se prĂ©sente sous la forme d’une ile, avec plusieurs chĂąteaux. Le but du jeu est de se construire une sorte de forteresse autour des chĂąteaux, ce qui permettra de placer des dĂ©fenses contre les vagues de bateaux ennemis qui vont arriver.

Tous les chĂąteaux doivent ĂȘtres capturĂ©s par le joueur pour que la partie soit gagnĂ©e.

Le jeu se divise en 3 phases de gameplay :

  1. CrĂ©ation Ă  l’aide de murs de forme alĂ©atoire, d’une zone fermĂ©e, contenant un ou plusieurs chĂąteaux.
  2. Placement de canons/tours Ă  l’intĂ©rieur des zones sĂ©curisĂ©es.
  3. Combat contre les vagues de bateaux ennemis. Il faut en couler en maximum le plus vite possible pour ménager les murs.

Le gameplay de base est trĂšs rapide, dĂ©coupĂ© en phases d’environ 15 secondes, ce qui conserve un rythme soutenu.

Il existe Ă©galement un mode multi-joueur, que nous n’avons finalement pas eu le temps de commencer.

Nous avons par contre intĂ©grĂ© un prototype de mode de jeu “stratĂ©gique”, plus orientĂ© gestion de ressources que le jeu de base.

Le joueur doit alors répartir des ressources de base limitées pour construire des murs, des tours, des munitions


Un screenshot du jeu en cours de partie :

Interface principale du jeu

2. Conception

Comme nous n’avions pas une grande expĂ©rience du dĂ©veloppement de jeux, qui est trĂšs diffĂ©rent d’une application classique, le projet s’est construit de lui mĂȘme, Ă  partir de ce que nous voulions atteindre, des problĂšmes que nous avons rencontrĂ©, et beaucoup de refactoring. 😄

J’ai essayĂ© d’imposer une architecture cohĂ©rente et efficace le plus possible, luttant contre mon binĂŽme et sa programmation parfois anarchique 🙂 et bien que j’ai du faire quelques concessions Ă  la vue de la deadline qui se rapprochait, je suis plutĂŽt content du rĂ©sultat.

Nous avons beaucoup utilisĂ© les avantages de l’orientĂ© objet, ce qui me permet de vous prĂ©senter ces magnifiques diagrammes UML :

Gestion des tirs et des dégats

Gestion des tirs et des dégats

Gestion des objets fixes

Gestion des objets fixes

J’espĂšre que vous avez apprĂ©ciĂ©. ^^

Graphismes & particules

Graphismes & particules

Concernant le code pur, nous nous sommes fait plaisir (surtout mon binĂŽme cette fois).

Nous avons notamment dĂ©veloppĂ© un gĂ©nĂ©rateur de maps alĂ©atoires, un systĂšme de pathfinding pour les bateaux, ainsi qu’un moteur de particules.

Ce moteur de particules, il faut bien l’avouer, est en grande partie responsable de l’aspect graphique attrayant du jeu.

Il permet de générer feu, fumée, et explosions du plus bel effet, en prenant en charge le type de cible que le boulet atteint.

Boulets enflammés

Boulets enflammés

Il permet aussi de tirer des boulets enflammĂ©s, nettement plus attractifs visuellement pour le joueur 🙂

En parlant de graphismes, nous avons des textures assez immenses (256*256 par bloc), ce qui permet un zoom impressionnant, bien que peu pratique pour jouer.

Tous les sprites du jeu proviennent de rendu 3D haute définition (tours, bateaux, arbres
)

3. Vue d’ensemble du jeu

J’ai volontairement simplifiĂ© cet article pour ne parler que de ce qui m’intĂ©ressait, mais Ă©tant donnĂ© que c’est le rĂ©sultat de plusieurs mois de travail, il est Ă©videmment bien plus complexe : 6646 lignes de code Ă  la derniĂšre rĂ©vision, sans compter la SFML que nous avons lĂ©gĂšrement modifiĂ© pour nos besoins


Je n’ai pour l’instant pas l’intention de publier le code ou/et une version binaire du jeu.

Ce n’est de toute façon dans son Ă©tat actuel qu’une version beta amĂ©liorĂ©e
 qui sera peut ĂȘtre terminĂ©e un jour, on ne sait jamais 🙂

Et pour terminer, une petite vidéo de démo.

Ecrit un soir d’orage, en Ă©coutant Dope Star Inc.

Newer Older

Loading comments...