Projet donjon

Donjon

L’objectif de ce projet est de réaliser une sorte de rogue-like/jeu d’aventure très simplifié. Pour ceux qui ne connaissent pas ce type de jeu, il s’agit d’un jeu où le joueur parcourt des salles dans un donjon. Dans chaque salle, il peut y avoir différentes actions possibles. En effet, une salle peut contenir des objets à ramasser. Les objets ramassés peuvent être utilisés instantanément ou bien conservés dans un inventaire. Une salle peut aussi contenir un ou plusieurs ennemis, dans ce cas, le joueur doit éliminer les ennemis avant de pouvoir avancer à nouveau. Le but du joueur est d’atteindre la sortie du donjon (une salle qui est donc une sortie).

Vous pouvez réaliser ce projet entièrement en C# ou avec Unity si vous vous sentez suffisamment à l’aise, cependant vous n’aurez pas de points supplémentaires pour l’utilisation de Unity. Vous serez évalués uniquement sur vos scripts et la bonne utilisation de l’orienté objet vu au semestre précédent.

Le travail est à réaliser seul ou en binôme.

Le cahier des charges ci-dessous est à respecter à 100% avant de réaliser le moindre ajout supplémentaire.

Cahier des charges

Les personnages

Un personnage possède les éléments suivants :

  • vie
  • force
  • inventaire
  • arme (peut-être sans arme)
  • armure (peut-être sans arme)

Tous les personnages peuvent attaquer un autre personnage.

Il existe deux types de personnages : Joueur et Ennemi

L’ennemi

L’ennemi possède en plus des caractéristiques communes à tous les personnages :

  • Exp (l’expérience que le joueur gagnera s’il tue l’ennemi)
  • Or (quantité d'or lachée par le monstre quand il meurt)

Le joueur

Le joueur possède en plus des caractéristiques communes à tous les personnages:

  • Une liste de compétences (équivalent au grimoire du projet Red Dragon)
  • Des points de techniques (PT), l’utilisation d’une compétence consomme des PT.
  • Bourse d'or (quantité d'or).
  • De l’expérience.
  • Un niveau

Le joueur peut réaliser différentes actions (voir section suivante). Le joueur ne peut réaliser des actions que s’il est possible de les réaliser.

Le joueur gagne de l’expérience à chaque combat. S’il franchit un palier, ses stats augmentent de 1 à 10% (arrondi supérieur). Le palier est déterminé par le niveau du joueur. À vous de trouver une règle de calcul du palier.

Les actions

Les actions que peut exécuter le joueur ne peuvent être réalisées que si certaines conditions sont réunies.

Voici une liste des actions possibles :

  • observer : Cette action est toujours possible, elle permet au joueur de révéler des objets cachés dans la salle.
  • changer de salle : Cette action n’est possible que si la salle ne contient aucun ennemi (vivant) dans la salle. L’action consiste à passer d’une salle à une autre.
  • attaquer : Vous ne pouvez attaquer que s’il y a une cible de disponible dans la salle. Cela lance un combat sur ennemis (voir section combat).
  • ramasser : N’est possible que si un objet se trouve dans la salle. Permet d’ajouter un objet à un inventaire
  • se reposer : N’est possible que si une salle possède un lit et qu’il n’y a aucun ennemi vivant.
  • utiliser : Choisis un objet dans l’inventaire, et le consomme (applique l’effet de l’objet).

D’autres actions peuvent être ajoutées selon vos besoins. Cependant, concentrez-vous sur ces actions ci-dessus dans un premier temps.

Les objets

Vous pouvez ramasser plusieurs objets qui peuvent être stockés dans un inventaire et utilisés. Tous les objets, à l’exception de l’équipement, sont à usage unique, ils disparaissent donc une fois utilisés.

  • Sac d’or : Ajoute un montant d’or à la bourse du joueur
  • potion de soin : Restaure des points de vie joueur d’un certain montant
  • potion de force : Augmente la force du joueur
  • potion de vie : Augmente la vie du joueur
  • potion de technique : Restaure des points de technique (PT)
  • équipement : L’équipement peut-être soit une arme, soit une armure. Elle offre un bonus lors des combats, l’arme ajoute un bonus de force du joueur et l’armure un bonus de défense (voir section combat).

Vous pouvez aussi ajouter d’autre type d’objets.

Les combats

Les combats se déroulent au tour par tour. Le joueur choisi une action, ensuite le monstre et on retourne au tour du joueur et ainsi de suite jusqu’à ce que l’un des deux meurt (vie à 0).

Au tour du joueur, il a le choix entre les actions suivantes :

  • Attaquer : Inflige des dégâts égaux à :Force + Arme - Armure Monstre avec un bonus aléatoire de 0 à 10% des dégâts infligés (Arrondi supérieur)
  • Utiliser une compétence : Utilise une compétence du joueur en consommant les PT correspondants.
  • Fuir : Vous revenez à la salle précédente (50% de chance de réussir). Le monstre est toujours là.

Le monstre peut juste attaquer et inflige des dégâts égaux à : Force + Arme - Armure joueur avec un bonus aléatoire de 0 à 10% des dégâts infligés (Arrondi supérieur).

Si le monstre meurt, tout son inventaire tombe par terre. Le joueur peut éventuellement le ramasser. De plus, l’expérience du monstre est ajoutée à l’expérience du joueur.

Le donjon

Le joueur doit évoluer dans un donjon qui n’est pas nécessairement en 2D. C’est-à-dire qu’il peut y avoir plus que les 4 directions (NORD, SUD, EST, OUEST), il peut y avoir aussi (HAUT, BAS) s’il y a des escaliers (il peut même y avoir des salles de différentes tailles, etc.), il peut y avoir des téléporteurs (à sens unique), etc.

Ainsi une salle possède plusieurs directions possibles, et non nécessairement toutes les directions.

Les personnages se trouvent toujours dans une salle. Seul le joueur peut voyager de salle en salle.

Une salle peut contenir :

  • des objets
  • des ennemis
  • une sortie
  • un lit

La création du donjon doit se faire de manière procédurale, c’est-à-dire qu’à chaque partie, le donjon doit-être différent. Vous veillerez à ce que la sortie soit à au moins une distance de 3 salles par rapport à l’entrée et qu’elle soit réellement accessible.

Si le joueur atteint une sortie, il gagne le jeu.

Notation

Vous serez évalué sur la partie script et technique de développement de votre projet. Voici un barème sur 20 + bonus à titre indicatif :

  • Projet rendu sur Git (respect de la deadline et des consignes) : 2 points
  • Readme (un document décrivant votre projet, les fonctions réalisées, les bugs éventuels, les design patterns utilisés) : 2 points
  • Avis général sur le code (décomposition, commentaires, organisation, etc.) : 3 points
  • Fournir les diagrammes UML : 2 points
  • Le projet est fonctionnel : 2 points
  • Hiérarchie des classes (bonne utilisation de l’héritage) : 3 points
  • Gestion des combats : 2 points
  • Gestion des objets : 2 points
  • Gestion du donjon (génération procédurale des salles et déplacement) : 2 points
  • (bonus) Ajout de fonctionnalité supplémentaire : 1 point bonus par fonctionnalité intéressante ajoutée (max. 3 points). L’utilisation d’unity ne compte pas.