222 lines
5.2 KiB
Markdown
222 lines
5.2 KiB
Markdown
{width="6.270833333333333in"
|
||
height="1.2083333333333333in"}
|
||
|
||
**Compte-Rendu Projet C++**
|
||
|
||
Harlé Antoine - Hanna Élias
|
||
|
||
**Sommaire**
|
||
|
||
**[Getting started](#getting-started) 2**
|
||
|
||
**[How to play](#how-to-play) 2**
|
||
|
||
**[Description du projet](#description-du-projet) 3**
|
||
|
||
**[Organisation](#organisation) 4**
|
||
|
||
**Getting started**
|
||
===================
|
||
|
||
***Prérequis :*** C++ 11 , SDL2, Boost.test
|
||
|
||
***Lancement de Nidrobb :***
|
||
|
||
- Lancer la commande *make* à la racine du fichier *src* pour compiler
|
||
> les fichiers sources.
|
||
|
||
- Lancer la commande *./Nidrobb*.
|
||
|
||
***Lancement des tests unitaires :***
|
||
|
||
- Choix du test de classe à lancer : dans le fichier *makefile* à la
|
||
> racine du fichier *src*, choisir [un]{.ul} test à réaliser parmis
|
||
> les tests disponible en commentaire (\#Unitests/TestDispo.cpp) en
|
||
> le plaçant non commenté devant *TESTSRC =* .
|
||
|
||
{width="7.192708880139983in"
|
||
height="0.6940332458442695in"}
|
||
|
||
- Lancer la commande *make Unitest* à la racine du fichier *src* afin
|
||
> de compiler et lancer le test.
|
||
|
||
**How to play**
|
||
===============
|
||
|
||
**But du jeu :**
|
||
|
||
(*But initial*) Tuer le joueur adverse et progresser dans la zone du
|
||
joueur adverse.
|
||
|
||
(*But actuel*) Toucher le joueur adverse en premier.
|
||
|
||
**Mécanique de jeu :**{width="0.768591426071741in"
|
||
height="0.6979166666666666in"}
|
||
|
||
- *One Punch Man* : Un coup suffit à mettre au tapis ton adversaire !
|
||
|
||
```{=html}
|
||
<!-- -->
|
||
```
|
||
- *Du fun en illimité !* : Respawn des joueurs tués instantané.
|
||
|
||
{width="1.3125in" height="0.8940212160979878in"}
|
||
|
||
- *Combat aériens* : Possibilité de se battre dans les airs ! Après
|
||
> avoir pris un peu de hauteur, court et bat toi dans les air tel
|
||
> Son Goku©️ !
|
||
|
||
{width="1.5625in" height="0.90625in"}
|
||
|
||
- *Parade* : Possibilité de contrer une attaque adverse avec une
|
||
> attaque au bon moment !
|
||
|
||
{width="1.3125in" height="1.1875in"}
|
||
|
||
- *Esquive* : Possibilité d\'esquiver une attaque en s'accroupissant
|
||
> au bon moment !
|
||
|
||
**Commandes :**{width="3.4691797900262467in"
|
||
height="2.369792213473316in"}
|
||
|
||
- **Déplacement :**
|
||
|
||
- J1 : Q / D
|
||
|
||
- J2 : ← / →
|
||
|
||
- **Accroupis :**
|
||
|
||
- J1 : S
|
||
|
||
- J2 : ↓
|
||
|
||
- **Sauts :**
|
||
|
||
- J1 : Barre Espace
|
||
|
||
- J2 : Enter (Pavé numérique)
|
||
|
||
- **Attaque :**
|
||
|
||
- J1 : G
|
||
|
||
- J2 : 0 (Pavé Numérique)
|
||
|
||
**Description du projet**
|
||
=========================
|
||
|
||
Le jeu est basée sur les animations et a pour objectif de faciliter
|
||
l'ajout/amélioration de contenu.
|
||
|
||
**Réalisations :**
|
||
|
||
- Affichage
|
||
|
||
- Gestion des entrées utilisateurs flexible : *InputMap, Command
|
||
> Pattern*
|
||
|
||
- Mouvements simples
|
||
|
||
- Animations flexible : Modification simple des animations (Sprite,
|
||
> Hitbox Passive/Active) dans l'*AnimationBuilder*.
|
||
|
||
- Monde flexible : Modification simple des environnements (fond,
|
||
> plateforme, obstacles) dans le *WorldBuilder*.
|
||
|
||
- Ajout simple de joueurs ordinateurs.
|
||
|
||
**Bug :**
|
||
|
||
- *Gestion des fuites mémoires impossible* : Lancement de *valgrind*
|
||
> avec Nidrobb échoue systématiquement.
|
||
|
||
```{=html}
|
||
<!-- -->
|
||
```
|
||
- Bugs de collisions : sortie de la carte, saut sur obstacles
|
||
|
||
- Bug de chute : pas de chute tant qu'il y a des actions.
|
||
|
||
**Améliorations :**
|
||
|
||
- Menu de jeu{width="1.72249343832021in"
|
||
> height="0.75in"}
|
||
|
||
- Tests complets et unifiés
|
||
|
||
- Postures de joueurs (haute/milieu/basse)
|
||
|
||
- Attaques haute / basses
|
||
|
||
- Animations de morts
|
||
|
||
- Raffinement des frames (Sprites & Hitbox Passive/Active)
|
||
|
||
- Affichage des hitbox Passive / Active
|
||
|
||
**Inspirations du système de hitbox
|
||
:**{width="3.7314818460192476in"
|
||
height="2.0989588801399823in"}
|
||
|
||
**Hitbox passive** = réception de dommages / collisions environnement
|
||
|
||
**Hitbox active** = envoie de dommage / parades
|
||
|
||
**Organisation**
|
||
================
|
||
|
||
Pour commencer, nous nous sommes répartis les rôles comme suit :
|
||
|
||
- Harlé Antoine : Responsable Mécanique de jeu
|
||
|
||
- Hanna Elias : Responsable Graphique
|
||
|
||
Pour le développement, nous avons commencés par définir nos objectifs à
|
||
court et long termes puis avons commencé à produire un premier UML sur
|
||
lequel se baser.
|
||
|
||
Nous nous sommes servis de Google Drive pour la mise en commun des
|
||
données. L'utilisation d'un git semblant peu pertinent pour un projet de
|
||
cet ampleur et durée.
|
||
|
||
A partir de cela, nous tentions de modifier le moins possible les mêmes
|
||
fichiers afin de faciliter la mise en commun.
|
||
|
||
Travail réalisé :
|
||
|
||
- Harlé Antoine
|
||
|
||
\- Rédaction du README
|
||
|
||
\- Gestion de l'UML
|
||
|
||
\- Gestion des tests unitaires : *Unitests*
|
||
|
||
\- Mise en place des Design Pattern (Command Pattern, Singleton,
|
||
Factory)
|
||
|
||
\- Développement des animations : *AnimationFrame, Animation,
|
||
AnimationBuilder, (sprite)*
|
||
|
||
\- Gestion des graphiques : images joueurs, obstacles, etc.
|
||
|
||
*-* Gestion des entrées : *InputMap, Command, RightCommand*, etc.
|
||
|
||
-Toolbox
|
||
|
||
\- Structure de jeu : Game, *Player, Obstacle, World, WorldBuilder*
|
||
|
||
*-* Gestion des collisions (Passive/Active)
|
||
|
||
\- Gestion des chutes V2 (isFallingV2)
|
||
|
||
\- Fréquence d'affichage
|
||
|
||
- Hanna Elias
|
||
|
||
\- Gestion de l'affichage : *display, window, sprite*
|
||
|
||
\- Gestion des chutes (isFalling)
|
||
|
||
\- Toolbox
|