Changes for rapport/rapport.md: 47 added lines, 0 removed lines.
Original line number
Diff line number
Diff line
# (sp)Ace Combat - rapport
## Introduction
### Genèse du projet
**(sp)Ace Combat** (en référence au simulateur de combat aérien [Ace Combat](https://fr.wikipedia.org/wiki/Ace_Combat)) est notre projet pour la matière "Synthèse d'image" du M1 Info 2021-2022.
Il s'agit d'un simulateur de combat spatial (*space dogfight*) permettant, en accord avec le thème imposé, de jouer à deux joueurs sur le même clavier. Il est construit sur l'interface OpenGL glitter, modifiée par endroits pour permettre un meilleur traitement de certaines données.
### Objectifs initiaux
Au début du projet, nous avons décidé de nous fixer des objectifs principaux (devant être atteints à la fin du projet) et secondaires (destinés à n'être réalisés que si nous avions assez d'avance). Voici les objectifs primaires :
- [x] Faire le rendu d'un vaisseau
- [x] Ajouter un système d'entités
- [x] Permette le déplacement des entités
- [x] Permettre la rotation des entités
- [x] Permettre aux vaisseau de tirer
- [x] Détecter les collisions tir-vaisseau
- [x] Permettre à un joueur de gagner le jeu
Et voici les objectifs secondaires :
- [x] Détecter les collisions vaisseau-vaisseau
- [x] Ajouter des obstacles (astéroïdes)
- [ ] Détecter les collisions vaisseau-obstacles
- [ ] Spécialiser le déplacement des vaisseaux
- [ ] Ajouter une physique newtonienne aux vaisseaux
- [x] Ajouter des écrans de fin de partie
De plus, nous nous sommes fixé les contraintes suivantes pour ne pas nous éparpiller et rendre notre projet plus intéressant :
- Ne pas utiliser de bibliothèque externes
- Gérer les collisions de la manière la plus réaliste possible
- Rendre le code le plus modulaire possible
## Programmation
<!-- TODO : Compléter -->
### Modifications apportées à *glitter*
Nous avons dû modifier quelque peu glitter afin de permettre de mieux gérer certains éléments de notre projet
### Système d'entités
Le système d'entités est géré par la classe `model/Entity`. Cette classe a pour but de gérer une unité dans l'espace 3D, notamment de gérer sa position, sa rotation, son échelle (qui peuvent ensuite être transmis au `glapi` de glitter)