Nidrobb/README.md

194 lines
4.7 KiB
Markdown
Raw Permalink Normal View History

2020-09-27 12:28:17 +02:00
![](media/logo.png)
2020-09-27 12:16:27 +02:00
**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 :***
2020-09-27 12:28:17 +02:00
- Lancer la commande *make* à la racine du fichier *src* pour compiler les fichiers sources.
2020-09-27 12:16:27 +02:00
- Lancer la commande *./Nidrobb*.
***Lancement des tests unitaires :***
2020-09-27 12:34:54 +02:00
- Choix du test de classe à lancer : dans le fichier *makefile* à la racine du fichier *src*, choisir *un* test à réaliser parmis les tests disponible en commentaire (\#Unitests/TestDispo.cpp) en le plaçant non commenté devant *TESTSRC =* .
2020-09-27 12:16:27 +02:00
2020-09-27 12:28:17 +02:00
![](media/unitest.png)
2020-09-27 12:16:27 +02:00
2020-09-27 12:28:17 +02:00
- Lancer la commande *make Unitest* à la racine du fichier *src* afin de compiler et lancer le test.
2020-09-27 12:16:27 +02:00
**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.
2020-09-27 12:28:17 +02:00
**Mécanique de jeu :**
2020-09-27 12:16:27 +02:00
- *One Punch Man* : Un coup suffit à mettre au tapis ton adversaire !
2020-09-27 12:28:17 +02:00
![](media/img1.png)
2020-09-27 12:16:27 +02:00
- *Du fun en illimité !* : Respawn des joueurs tués instantané.
2020-09-27 12:28:17 +02:00
![](media/img2.png)
2020-09-27 12:16:27 +02:00
2020-09-27 12:28:17 +02:00
- *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© !
2020-09-27 12:16:27 +02:00
2020-09-27 12:28:17 +02:00
![](media/img3.png)
2020-09-27 12:16:27 +02:00
2020-09-27 12:28:17 +02:00
- *Parade* : Possibilité de contrer une attaque adverse avec une attaque au bon moment !
2020-09-27 12:16:27 +02:00
2020-09-27 12:28:17 +02:00
![](media/img4.png)
2020-09-27 12:16:27 +02:00
2020-09-27 12:28:17 +02:00
- *Esquive* : Possibilité d\'esquiver une attaque en s'accroupissant au bon moment !
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
**Commandes :**
![](media/img5.png)
2020-09-27 12:16:27 +02:00
- **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**
=========================
2020-09-27 12:34:54 +02:00
Le jeu est basée sur les animations et a pour objectif de faciliter l'ajout/amélioration de contenu.
2020-09-27 12:16:27 +02:00
**Réalisations :**
- Affichage
2020-09-27 12:28:17 +02:00
- Gestion des entrées utilisateurs flexible : *InputMap, CommandPattern*
2020-09-27 12:16:27 +02:00
- Mouvements simples
2020-09-27 12:28:17 +02:00
- Animations flexible : Modification simple des animations (Sprite, Hitbox Passive/Active) dans l'*AnimationBuilder*.
2020-09-27 12:16:27 +02:00
2020-09-27 12:28:17 +02:00
- Monde flexible : Modification simple des environnements (fond, plateforme, obstacles) dans le *WorldBuilder*.
2020-09-27 12:16:27 +02:00
- Ajout simple de joueurs ordinateurs.
**Bug :**
2020-09-27 12:28:17 +02:00
- *Gestion des fuites mémoires impossible* : Lancement de *valgrind* avec Nidrobb échoue systématiquement.
2020-09-27 12:16:27 +02:00
- 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 :**
2020-09-27 12:28:17 +02:00
[](media/nidhogg.png)
2020-09-27 12:16:27 +02:00
2020-09-27 12:28:17 +02:00
- Menu de jeu!
2020-09-27 12:16:27 +02:00
- 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
2020-09-27 12:34:54 +02:00
**Inspirations du système de hitbox:**
![](media/hitbox.png)
2020-09-27 12:16:27 +02:00
**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
2020-09-27 12:34:54 +02:00
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.
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
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.
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
A partir de cela, nous tentions de modifier le moins possible les mêmes fichiers afin de faciliter la mise en commun.
2020-09-27 12:16:27 +02:00
Travail réalisé :
- Harlé Antoine
2020-09-27 12:34:54 +02:00
- Rédaction du README
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Gestion de l'UML
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Gestion des tests unitaires : *Unitests*
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Mise en place des Design Pattern (Command Pattern, Singleton, Factory)
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Développement des animations : *AnimationFrame, Animation, AnimationBuilder, (sprite)*
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Gestion des graphiques : images joueurs, obstacles, etc.
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Gestion des entrées : *InputMap, Command, RightCommand*, etc.
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Toolbox
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Structure de jeu : Game, *Player, Obstacle, World, WorldBuilder*
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Gestion des collisions (Passive/Active)
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Gestion des chutes V2 (isFallingV2)
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Fréquence d'affichage
2020-09-27 12:16:27 +02:00
- Hanna Elias
2020-09-27 12:34:54 +02:00
- Gestion de l'affichage : *display, window, sprite*
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Gestion des chutes (isFalling)
2020-09-27 12:16:27 +02:00
2020-09-27 12:34:54 +02:00
- Toolbox