Commit e0694816 authored by Benjamin Castel's avatar Benjamin Castel
Browse files

feat: Started redacting report

parent e96aae2d
Loading
Loading
Loading
Loading
+1 −0
Changes for .gitignore: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
.vscode
build
rapport/rapport.pdf

rapport/rapport.md

0 → 100644
+47 −0
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)