Compare commits
80 Commits
richarde-p
...
master
Author | SHA1 | Date | |
---|---|---|---|
c3f7616718 | |||
aef3b3ab97 | |||
4685d9942b | |||
9897f3dc1a | |||
ca1d96ab25 | |||
e6a1a7271a | |||
d5ac13d302 | |||
25254b4bc9 | |||
68ce4c0d25 | |||
39f83aa602 | |||
1b1a7fc5f6 | |||
c41978ce6f | |||
d2182e8937 | |||
c0cb457de3 | |||
4f5f1ef192 | |||
28785b48b3 | |||
96accd615b | |||
b90e6042ff | |||
846bffec12 | |||
a0b8424a68 | |||
894cc9cb88 | |||
852e162b88 | |||
7e8a8d7827 | |||
171705ad26 | |||
0d23706e6a | |||
1876555b52 | |||
0cd99f4f60 | |||
2f12ee6540 | |||
d6e65e3b0b | |||
7ca6a97a21 | |||
74c116b2bd | |||
ceeddd47aa | |||
8f04c16f9c | |||
94b6038c9e | |||
df64e98c6a | |||
8a92568e3c | |||
69a0da6985 | |||
9d7d083b66 | |||
8e034fcc47 | |||
f9db0e80d3 | |||
fc3a3cd8c1 | |||
9554d74cee | |||
94bb57d17e | |||
999688361a | |||
f761ef4d82 | |||
f649c1acb7 | |||
a09f2f22b2 | |||
d63aae1ace | |||
09aa523676 | |||
f163fcd649 | |||
887665548f | |||
c36609f4ae | |||
bb9b99c194 | |||
09db149a99 | |||
b899fcb673 | |||
0c7c35a5af | |||
cb840bc925 | |||
96f1c331e2 | |||
3682f118f1 | |||
f4a34b8e9f | |||
afd3ff51ff | |||
0a93be5045 | |||
49a6f364bc | |||
d0f7e42f69 | |||
a1f29fcd14 | |||
d0874892ad | |||
7327551377 | |||
c33488093e | |||
fa43e7123c | |||
ebf6e6d1ae | |||
e9fb561306 | |||
b4bd83700c | |||
|
7151163bfe | ||
d566b7d7aa | |||
1d84117d6c | |||
a53122115c | |||
897c219c8d | |||
03d24e571c | |||
cfd29124ce | |||
61a76e099f |
BIN
Builds/DinoBuildLinux.zip
Normal file
BIN
Builds/DinoBuildMacOS.zip
Normal file
BIN
Builds/DinoBuildWindows.zip
Normal file
BIN
Builds/Guide_dinstallation.pdf
Normal file
BIN
Builds/Old build/Windows_Jetpack_JolAride.zip
Normal file
BIN
Documents/Gantt.xlsm
Normal file
BIN
Documents/Gantt_Prévisionnel.xlsx
Normal file
BIN
Documents/Guide_D'installation.pdf
Normal file
72
Documents/Liste_Rapport.txt
Normal file
@ -0,0 +1,72 @@
|
||||
Rapport de Réunion du 11 Octobre en visioconférence
|
||||
|
||||
Jour du choix du projet et de sa découverte , mise en place des outils et des droits pour les documents.
|
||||
Réunion entre Simon, Victor et Ethan pour décider du jeu adopté et recherché .
|
||||
Le choix fut de faire un jetpack Joyride en y incorporent un joueur bot au lieu du joueur ou plusieurs propositions de réponse à la demande fut trouvé .
|
||||
Diverses maquettes de ses propositions 3 retenus :
|
||||
-L’omniscient(Neuronal)
|
||||
-L’observateur(Neuronal)
|
||||
-L’Itérateur(Procédural)
|
||||
|
||||
Réunion en visioconférence ensemble avec M.Florent Madelaine
|
||||
Proposition des subjectivions précédente , usage de Unity pour la création du jeu, discutions autour des propositions ou l’omniscient et l’observateur serait ceux que nous envisagions de faire en seule joueur bot ( l’un d’eux) et la possibilité d’ajouter un joueur humain.
|
||||
Proposition de M.Madelaine d’incorporer les connaissances et l’usage de MIN, et MAX appris durant nos cours .
|
||||
Les trois IA cité précédemment fut retenus avec pour objectif de les ajouter et de pouvoir les comparer sur des chemins pré-générer ou procédural .
|
||||
|
||||
|
||||
|
||||
Rapport de Réunion du 18 Octobre en visioconférence
|
||||
Discutions entre Simon, Victor et Ethan sur les ressources pour aboutir à notre projet et des connaissances et outils nécessaires pour y parvenir . Apprendre Unity , sprites utilisé ou pour plus tard. Départ du projet sur unity .
|
||||
|
||||
Rapport de discutions du 7 Novembre
|
||||
Discutions sur la mise en place du principe du Min , Max dans le projet , possibilité d’ajouter un système de score et des pièces malus déposé par min pour diminuer le score de max .
|
||||
|
||||
Rapport de Réunion du 20 Novembre en visioconférence
|
||||
Mise en place et début des premier documents , cahier des charges , gant prévisionnel et mise en place des premiers assets sur le git.
|
||||
|
||||
Rapport de Réunion du 24 Novembre en présentiel sans Ethan
|
||||
Réunion sur l’avancement du projet , révision de la génération des niveaux
|
||||
|
||||
|
||||
Rapport de Réunion du 28 Novembre en visioconférence
|
||||
Révision des cahiers des charges fonctionnel et technique afin de les transmettre a M.Madelaine
|
||||
Difficulté sur la mise en place de ces fichiers en markdown sur le git
|
||||
|
||||
Rapport de Discutions du 4 Décembre
|
||||
Résolution du problème suivis d’une vérification et refonte des documents avant d’être envoyé .
|
||||
|
||||
Rapport de Réunion du 20 Décembre
|
||||
Mise en place du système de raycaste sur le jeu , incorporation des missiles, obstacle et pièces .
|
||||
|
||||
Rapport de Réunion du 1er mars en présentiel sans Ethan
|
||||
Réunion sur l’avancement du projet et la gestions de travail.
|
||||
|
||||
Rapport de Réunion du 10 Mars en présentiel
|
||||
Présentation du jeu avec une interface et un menu , d’un système de pièces et missiles .
|
||||
discutions autour des performances et de la vitesse du jeu et mise en place de date pour de futur réunions .
|
||||
|
||||
Rapport de Réunion du 19 Mars en visioconférence
|
||||
Remise en route des taches attribués et créations des ressources pour créer les patterns
|
||||
|
||||
Rapport de Réunion du 25 Mars en présentiel
|
||||
Réunion sur l’avancement du projet,révision des documents disponibles et demandés.
|
||||
|
||||
Rapport de discutions du 2 Avril
|
||||
Révision et recherche d’utilité des formes des patterns en fonction de la vitesse du jeu.
|
||||
|
||||
Rapport de Réunion du 3 avril en présentiel avec M.Madelaine
|
||||
Discutions sur l’avancement du projet , des manques de documents sur le git , nécessite une explication pour déployer et utiliser le jeu .
|
||||
Discussions sur la mise en place d’une difficulté via une augmentation de la vitesse du jeu
|
||||
vérifier les assets et les optimiser pour diminuer la taille du jeu
|
||||
mise en place des documents de suivit et avoir des traces écrites des réunions.
|
||||
|
||||
Rapport de discutions du 24 Avril
|
||||
Vérification des documents présent et remise en conformité
|
||||
recherche d’information sur l’optimisation du jeu .
|
||||
|
||||
Rapport de discutions en visioconférence du 01 Mai
|
||||
Mise en place d’un modèle de données ( JSON) pour stocker les données
|
||||
Mise en place de micros-services (plusieurs API).
|
||||
|
||||
Rapport de réunion en présentiel du 16 Mai
|
||||
Refonte des documents existant.
|
@ -1,5 +1,3 @@
|
||||
---
|
||||
|
||||
# Projet Jetpack DinoAI
|
||||
|
||||
Comparaison de Différentes Intelligences Artificielles dans un Jeu Simple
|
||||
@ -22,37 +20,39 @@ fait le 18/11/2023
|
||||
|
||||
# Sommaire :
|
||||
|
||||
- [Contexte](#Contexte-)
|
||||
- [Contexte](#contexte)
|
||||
|
||||
- - [Sujet](#sujet-)
|
||||
- - [Sujet](#sujet)
|
||||
|
||||
- - [Objectifs](#objectifs-)
|
||||
- - [Objectifs](#objectifs)
|
||||
|
||||
- - [Le Jeu](#le-jeu-)
|
||||
- - [Le Jeu](#le-jeu)
|
||||
|
||||
- - - [Le jeu de base](#le-jeu-de-base-)
|
||||
- - - [Le jeu de base](#le-jeu-de-base)
|
||||
|
||||
- - - [Notre jeu](#notre-jeu-)
|
||||
- - - [Notre jeu](#notre-jeu)
|
||||
|
||||
- [Les Bots](#les-bots-)
|
||||
- [Les Bots](#les-bots)
|
||||
|
||||
- - [S) Le sachant (Apprentissage)](#s-le-sachant-apprentissage--)
|
||||
- - [S) L'omnicient (neuronal)](#s-l-omnicient-neuronal-img-title-src-images-img3png-png-alt-loading-ag-353-data-align-inline-width-50)
|
||||
|
||||
- [M) L’observateur (Apprentissage)](#m-lobservateur-apprentissage-)
|
||||
- [M) L’observateur (neuronal)](#m-l-observateur-neuronal-img-title-src-images-img4png-png-alt-loading-ag-364-width-50)
|
||||
|
||||
- [M) Le calculateur (Algorithme)](#m-le-calculateur-algorithme)
|
||||
- [M) L'Itérateur (Procédural)](#m-l-itérateur-procédurall-img-title-src-images-img5png-png-alt-loading-ag-372-width-50)
|
||||
|
||||
- [C) Le calculateur apprenant (Algorithme & IA)](#c-le-calculateur-apprenant-algorithme--ia-)
|
||||
- [C) L'Itérateur Intelligent (Procédural & Neuronal)](#c-l-itérateur-intelligent-t-procédural-neuronal-img-title-src-images-img6png-png-alt-loading-ag-381-width-51)
|
||||
|
||||
- [L'application :](#lapplication-)
|
||||
- [L'application :](#l-application)
|
||||
|
||||
- - [Menu principal](#menu-principal-)
|
||||
- - [Menu principal](#menu-principal)
|
||||
|
||||
- [Affichage des données](#affichage-des-données-)
|
||||
- [Affichage des données](#affichage-des-données)
|
||||
|
||||
- [Configuration d'une partie](#configuration-dune-partie-)
|
||||
- [Configuration d'une partie](#configuration-d-une-partie)
|
||||
|
||||
- [Le jeu](#le-jeu--1)
|
||||
- [Le jeu](#le-jeu-1)
|
||||
|
||||
- [Prévison dees Étapes de création](#prévision-des-étapes-de-création)
|
||||
|
||||
# Contexte
|
||||
|
||||
@ -84,7 +84,7 @@ Le menu principal du jeu permet d’accéder à une interface de visualisation d
|
||||
|
||||
Jetpack Joyride est un jeu dit “Runner” car il consiste simplement à aller le plus loin possible tout en survivant aux dangers que le jeu lui oppose. Les règles du jeu sont simples, laissant le joueur décider de se propulser son avatar vers le haut ou de le laisser tomber pour faire bouger son personnage verticalement tandis que le terrain et donc ses obstacles avancent horizontalement vers lui de plus en plus vite.
|
||||
|
||||
![capture ecran partie type](img1PNG.jpg)
|
||||
![capture ecran partie type](images/img1PNG.PNG)
|
||||
|
||||
( capture d’écran d’une partie type )
|
||||
|
||||
@ -96,7 +96,7 @@ Pour faire jouer nos IA nous allons donc reproduire le jeu sur Unity en adaptant
|
||||
|
||||
- Un système de score sera ajouté. La maximisation du score sera l’objectif de l’IA au-delà du temps de survie. Le score aura une augmentation linéaire en fonction du temps de survie et pourra être augmenté en ramassant des pièces. Mais de mauvaises pièces peuvent apparaître et faire baisser le score. Les IA devront ainsi adapter leur chemin pour tenter de maximiser leur score quitte à prendre des risques.
|
||||
|
||||
<img title="" src="img2PNG.jpg" alt="interface du jeu" width="637" data-align="inline">
|
||||
<img title="" src="images/img2PNG.PNG" alt="interface du jeu" width="637" data-align="inline">
|
||||
|
||||
- Le jeu original peut faire apparaître des missiles pouvant tuer le joueur. Ces missiles ne seront initialement pas implémentés, des tests nous permettront de savoir si ils sont un ajout viable au jeu après le développement du premier bot.
|
||||
|
||||
@ -110,21 +110,21 @@ Notation MoSCoW:
|
||||
|
||||
Must Should Could Would
|
||||
|
||||
### S) Le sachant (Apprentissage) <img title="" src="img3PNG.jpg" alt="loading-ag-353" data-align="inline" width="50">
|
||||
### S) L'omnicient (neuronal) <img title="" src="images/img3PNG.PNG" alt="loading-ag-353" data-align="inline" width="50">
|
||||
|
||||
Cette IA avancera à l’aveugle en ayant en tête les positions de chaque objet sur l'écran. On s’attends à ce que l’IA comprenne que l’objet représentant son personnage ne doit pas s’approcher des objets néfastes entraînant la mort ou une baisse de score.
|
||||
|
||||
### M) L’observateur (Apprentissage) <img title="" src="img4PNG.jpg" alt="loading-ag-364" width="50">
|
||||
### M) L’observateur (neuronal) <img title="" src="images/img4PNG.PNG" alt="loading-ag-364" width="50">
|
||||
|
||||
Cette IA ne connaît pas les coordonnées des objets à l’écran. L’observateur possède en revanche un champ de vision lui permettant de repérer sur certains angles la distance d’objets par rapport à l’avatar. On s'attend à ce que l’IA apprenne à éviter les objets néfastes s’approchant trop de l’avatar.
|
||||
|
||||
### M) Le calculateur (Algorithme) <img title="" src="img5PNG.jpg" alt="loading-ag-372" width="50">
|
||||
### M) L'Itérateur (procédural) <img title="" src="images/img5PNG.PNG" alt="loading-ag-372" width="50">
|
||||
|
||||
Le bot Calculateur ne fonctionne pas par apprentissage mais par un algorithme. Au fil de la partie, le calculateur doit calculer par itérations différents chemins en essayant de s’approcher du chemin le plus sûr possible. Par intervalle de temps, le calculateur essaiera de prolonger le meilleur chemin qu’il a trouvé et testera des déviations possibles apportant un éventuel avantage sur l’espérance de survie et d’obtention de points.
|
||||
Le bot Itérateur ne fonctionne pas par apprentissage mais par un algorithme. Au fil de la partie, l'itérateur doit calculer par itérations différents chemins en essayant de s’approcher du chemin le plus sûr possible. Par intervalle de temps, l'itérateur essaiera de prolonger le meilleur chemin qu’il a trouvé et testera des déviations possibles apportant un éventuel avantage sur l’espérance de survie et d’obtention de points.
|
||||
|
||||
### C) Le calculateur apprenant (Algorithme & IA) <img title="" src="img6PNG.jpg" alt="loading-ag-381" width="51">
|
||||
### C) L'Itérateur Intelligent t (procédural & neuronal) <img title="" src="images/img6PNG.PNG" alt="loading-ag-381" width="51">
|
||||
|
||||
Bot optionnel fonctionnant comme le calculateur à la différence que l’on essaiera d’y implémenter une IA qui devra faire de meilleurs choix de prolongement et de déviation de chemin afin d’augmenter l’efficacité et les performances du bot Calculateur. On s'attend à ce que l’IA apprenne à trouver des chemins plus sûrs en prenant en compte les chemins déjà testés.
|
||||
Bot optionnel fonctionnant comme l'Itérateur à la différence que l’on essaiera d’y implémenter un syteme neuronal qui devra permettre de faire de meilleurs choix de prolongement et de déviation de chemin afin d’augmenter l’efficacité et les performances du bot Itérateur. On s'attend à ce que le bot apprenne à trouver des chemins plus sûrs en prenant en compte les chemins déjà testés.
|
||||
|
||||
D’autres IA viendront si les idées et les deadlines nous le permettent.
|
||||
|
||||
@ -134,7 +134,7 @@ D’autres IA viendront si les idées et les deadlines nous le permettent.
|
||||
|
||||
### Menu principal :
|
||||
|
||||
![image menu principal](img7PNG.jpg)
|
||||
![image menu principal](images/img7PNG.PNG)
|
||||
|
||||
Permet de naviguer entre les deux parties majeures de l’application.
|
||||
|
||||
@ -152,11 +152,11 @@ L’objectif est de permettre à l’utilisateur de pouvoir comparer facilement
|
||||
|
||||
Il est envisagé d’implémenter une fonctionnalité d’export des données en tableau Exel.
|
||||
|
||||
<img title="" src="img8PNG.jpg" alt="image affichage des données" data-align="center">
|
||||
<img title="" src="images/img8PNG.PNG" alt="image affichage des données" data-align="center">
|
||||
|
||||
### Configuration d’une partie :
|
||||
|
||||
<img title="" src="img9PNG.jpg" alt="image configuration d'une partie" data-align="center">
|
||||
<img title="" src="images/img9PNG.PNG" alt="image configuration d'une partie" data-align="center">
|
||||
|
||||
Cette interface permet à l’utilisateur de configurer une partie ou une suite de parties auxquelles il fera participer un ou plusieurs bots ou bien lui-même.
|
||||
|
||||
@ -172,7 +172,7 @@ Il est envisagé de permettre de choisir un niveau d'entraînement pour chaque b
|
||||
|
||||
### Le jeu :
|
||||
|
||||
![image du jeu plus travaillé](img10PNG.jpg)
|
||||
![image du jeu plus travaillé](images/img10PNG.PNG)
|
||||
|
||||
L’écran de jeu exécutera en temps réel la reproduction du jeu Jetpack Joyride en rendu graphique (ou console si le mode Rush est activé).
|
||||
L’avatar, représentant la célèbre mascotte officieusement officielle du BUT INFO, Dino, peut se déplacer de haut en bas. Le décor et les autres éléments du jeu se déplacent de droite à gauche.
|
||||
@ -182,4 +182,26 @@ Si plusieurs bots jouent ensemble, leurs avatars apparaîtront en transparence.
|
||||
|
||||
Si plusieurs parties sont configurées, chaque partie suivante commencera dès la fin de la partie en cours.
|
||||
|
||||
A la fin de la dernière partie, l’application changera d’interface pour afficher le menu de consultation de données ne comprenant que les données obtenues pendant la session jouée.**
|
||||
A la fin de la dernière partie, l’application changera d’interface pour afficher le menu de consultation de données ne comprenant que les données obtenues pendant la session jouée.
|
||||
|
||||
### Prévision des Étapes de création
|
||||
|
||||
Nous avons décidé d'organiser le processus de création du projet en travaillant simultanément sur plusieurs axes afin de rester constamment informés de son évolution et d'éviter d'être dépassés, tout en permettant à chacun de commencer à travailler sur des aspects additionnels. Ainsi, nous avons structuré la création en plusieurs étapes :
|
||||
|
||||
Semaine 1-3 : Apprentissage des outils (Unity, C#, Python, ML Agent)
|
||||
|
||||
Semaine 3-4 : Conception de l'interface
|
||||
|
||||
Semaine 5-6 : Conception du jeu
|
||||
|
||||
Semaine 7-8 : Création de l'IA "Sachant"
|
||||
|
||||
Semaine 9-10 : Création de l'IA "Observateur"
|
||||
|
||||
Semaine 11-12 : Création de l'IA "Calculateur"
|
||||
|
||||
Semaine 13-14 : Création de l'IA "Calculateur Intelligent"
|
||||
|
||||
Semaine 15-16 : Collecte de données des IA
|
||||
|
||||
diagramme de Gantt disponible dans cahier des charges technique.
|
BIN
Documents/Spécifications_fonctionnelles.pdf
Normal file
223
Documents/Spécifications_techniques.md
Normal file
@ -0,0 +1,223 @@
|
||||
# Projet Jetpack DinoAI
|
||||
|
||||
Comparaison de Différentes Intelligences Artificielles dans un Jeu Simple
|
||||
|
||||
Cahier des charges techniques
|
||||
|
||||
Par :
|
||||
|
||||
Victor Descamps
|
||||
Simon Catanese
|
||||
Ethan Richard
|
||||
|
||||
|
||||
|
||||
Tuteur :
|
||||
|
||||
Florent Madelaine
|
||||
|
||||
fait le 18/11/2023
|
||||
|
||||
# Sommaire :
|
||||
|
||||
- [Contexte](#1-contexte)
|
||||
|
||||
- - [Sujet](#sujet)
|
||||
|
||||
- [Technologies envisagées ](#2-technologies-envisagées)
|
||||
|
||||
- - [Plateforme de développement](#2-1-plateforme-de-développement)
|
||||
|
||||
- [Langage de programmation](#2-2-langage-de-programmation)
|
||||
|
||||
- [Utilisation de ML-Agents](#2-3-utilisation-de-ml-agents)
|
||||
|
||||
- [Modélisation des personnages et des environnements](#2-4-modélisation-des-personnages-et-des-environnements)
|
||||
|
||||
- [Contrôles du jeu](#2-5-contrôles-du-jeu)
|
||||
|
||||
- [Gestion du jeu](#2-6-gestion-du-jeu)
|
||||
|
||||
- [Tests et débogage](#2-7-tests-et-débogage)
|
||||
|
||||
- [Équipe de développement](#3-équipe-de-développement)
|
||||
|
||||
- [Les IA](#4-les-ia)
|
||||
|
||||
- - [L'omniscient (Neuronal)](#l-omniscient-neuronal-img-title-src-images-img3png-png-alt-loading-ag-445-data-align-inline-width-50)
|
||||
|
||||
- [L'observateur (Neuronal](#l-observateur-neuronal-img-title-src-images-img4png-png-alt-loading-ag-455-width-50)
|
||||
|
||||
- [L'itérateur(Procédural](#l-itérateur-procédural-img-title-src-images-img5png-png-alt-loading-ag-463-width-64)
|
||||
|
||||
- [L'itérateur intelligent (Procédural et neuronal)](#l-itérateur-intelligent-procédural-et-neuronal-img-title-src-images-img6png-png-alt-loading-ag-481-width-58)
|
||||
|
||||
- [Livrables](#5-livrables)
|
||||
|
||||
- [Bibliographie](#6-bibliographie)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 1. Contexte
|
||||
|
||||
## Sujet :
|
||||
|
||||
Florent Madelaine.
|
||||
|
||||
Expérimentation Bots pour un ou des jeux.
|
||||
|
||||
Programmer un jeu original avec idéalement des éléments qui en font un challenge pour la réalisation d’IA (hasard, phase d’enchère changeant le payoff, multijoueur, combinatoire importante, ...). Il conviendra de choisir un jeu pour lequel il est possible de réduire la combinatoire du jeu de manière naturelle et de désactiver/activer des règles pour en étudier des variantes naturelles. Il faudra ensuite créer, améliorer et expérimenter avec divers algorithmes pour converger vers des bots offrant un challenge raisonnable pour un humain.
|
||||
|
||||
# 2.Technologies envisagées :
|
||||
|
||||
## 2.1. Plateforme de développement
|
||||
|
||||
Le projet sera développé sur Unity, version 22.3.11f1.
|
||||
|
||||
Unity est un moteur de jeu gratuit et simple d’accès offrant une grande liberté de création et une grande collection d’outils divers.
|
||||
|
||||
De nombreux cours sont disponibles sur internet pour apprendre son utilisation.
|
||||
|
||||
Unity est aussi compatible avec de nombreuses plateformes dont Windows, MacOs et Linux.
|
||||
|
||||
## 2.2. Langage de programmation
|
||||
|
||||
Le langage de programmation utilisé sera C# pour le développement dans l'environnement Unity. Il s’agit du langage natif de la plateforme.
|
||||
|
||||
C# est un langage de programmation objet très ressemblant au Java.
|
||||
|
||||
## 2.3. Utilisation de ML-Agents
|
||||
|
||||
ML-Agents sera intégré pour la conception et l'entraînement des intelligences artificielles. La version 2.0.1 de ML-Agents sera utilisée.
|
||||
|
||||
ML agent est un asset (outil additionnel) interne à Unity qui permet d'encadrer un apprentissage neuronal. Les scripts d'IA seront développés en utilisant ML-Agents pour permettre aux bots d'apprendre à jouer au jeu de manière autonome.
|
||||
|
||||
Les modèles neuronaux seront entraînés en utilisant des algorithmes d'apprentissage par renforcement.
|
||||
|
||||
## 2.4. Modélisation des personnages et des environnements
|
||||
|
||||
Des sprites 2D (images) seront créés pour représenter l’avatar, les obstacles et l'environnement du jeu.
|
||||
|
||||
L’outil de graphisme Photoshop sera majoritairement utilisé pour la conception des sprites.
|
||||
|
||||
## 2.5 Contrôles du jeu
|
||||
|
||||
Les contrôles du jeu seront mis en œuvre pour un joueur humain ainsi que pour les IA.
|
||||
|
||||
La seule commande permettra de modifier la position verticale du joueur tandis que le niveau défilera tout seul de droite à gauche.
|
||||
|
||||
## 2.6 Gestion du jeu
|
||||
|
||||
Un système de gestion de jeu sera mis en place, incluant le chargement du niveau, la gestion des collisions, la génération procédurale d'obstacles et la sauvegarde des scores et de données diverses.
|
||||
|
||||
Les données enregistrées durant l’exécution de l’application seront stockées dans des fichiers json ou xml dans le répertoire de l’application.
|
||||
|
||||
## 2.7 Tests et débogage
|
||||
|
||||
Des scénarios de test exhaustifs seront élaborés pour chaque composant du jeu.
|
||||
|
||||
Les fonctionnalités seront soumises à des tests unitaires. Des outils de débogage de Unity seront utilisés pour résoudre les problèmes potentiels.
|
||||
|
||||
# 3. Équipe de développement
|
||||
|
||||
- **Ethan, Simon et Victor portent tous les 3 le rôle de chef de projet et de développeur.**
|
||||
|
||||
- **Simon sera également responsable des tests de l’application**
|
||||
|
||||
- **Ethan sera aussi impliqué dans la documentation du projet**
|
||||
|
||||
- **Victor sera plus spécifiquement impliqué dans l’implémentation des systèmes neuronaux dans le jeu.**
|
||||
|
||||
L’outil en ligne Trello nous servira à planifier les tâches.
|
||||
|
||||
# 4.Les IA :
|
||||
|
||||
Les concepts d’IA suivant sont expérimentaux et seront sujets à des changements suivant l’avancée du développement du projet et de notre documentation sur la programmation de systèmes neuronaux.
|
||||
|
||||
Le rôle des bots est de décider à chaque instant T de faire monter ou de laisser descendre l’avatar. Tous auront une source de données différentes leur permettant de prendre une décision.
|
||||
|
||||
## L’omniscient (Neuronal)<img title="" src="images/img3PNG.PNG" alt="loading-ag-445" data-align="inline" width="50">
|
||||
|
||||
Ce bot connaît un grand nombre de données brutes. Entre autres :
|
||||
|
||||
- La vitesse de défilement du jeu,
|
||||
|
||||
- La position verticale du joueur,
|
||||
|
||||
- Les coordonnées des deux points des deux lasers les plus proches,
|
||||
|
||||
- Les coordonnées de tout autre danger proche,
|
||||
|
||||
- les coordonnées d’une zone comportant des pièces
|
||||
|
||||
L’IA devra réussir à faire les bonnes corrélations dans ce grand nombre de données pour prendre les bonnes décisions au cours du temps. Elle n’obtiendra pas de données enrichies pouvant faciliter la prise de décision, ces données brutes seront son seul guide.
|
||||
|
||||
![](images/img11PNG.PNG)
|
||||
|
||||
|
||||
|
||||
## L’observateur (Neuronal)<img title="" src="images/img4PNG.PNG" alt="loading-ag-455" width="50">
|
||||
|
||||
Ce bot reçoit en temps réel des données de proximité de l’avatar avec les éléments de l’environnement et des données sur la nature de ces éléments.
|
||||
|
||||
Un ensemble de RayCast partant de l’avatar dans des directions précises seront utilisés pour recueillir les données nécessaires.
|
||||
|
||||
A la manière d’un radar de voiture, l’IA devra analyser sa proximité avec des obstacles puis prendra une décision pour ajuster sa trajectoire.
|
||||
|
||||
L’observateur devra apprendre à éviter les objets néfastes s’approchant trop de l’avatar et essayer de se rapprocher des pièces pour maximiser son score.
|
||||
|
||||
Cinq RayCasts couvrent probablement un champ de vision suffisamment large et dense pour une analyse efficace de l’environnement, mais des nombres différents seront essayés pour essayer de maximiser les performances du bot.
|
||||
|
||||
La longueur des RayCasts correspondra à la taille de l’écran, et les premiers objets rencontrés dans leur trajectoire seront traités comme des données utilisables par le système neuronal de l’observateur. Leur distance par rapport à l’avatar et leur nature (bordure, obstacle, bonus, malus) seront transmises au bot.
|
||||
|
||||
![](images/img12PNG.PNG)
|
||||
|
||||
|
||||
|
||||
## L’Itérateur (Procédural)<img title="" src="images/img5PNG.PNG" alt="loading-ag-463" width="64">
|
||||
|
||||
Le bot itérateur ne fonctionne pas par apprentissage mais par itérations de calculs.
|
||||
|
||||
Son fonctionnement consiste à calculer de nombreux chemins différents par itérations puis à sélectionner le meilleur chemin trouvé pour poursuivre la partie. À chaque intervalle , le bot pourra effectuer et maintenir une action (monter ou descendre) le temps de cet intervalle. L’ensemble des actions forme un chemin donné.
|
||||
|
||||
Le moteur de jeu va tester virtuellement les chemins à tester et le bot va itérer des calculs de suite d’actions un certain nombre de fois. Les chemins proposés amenant à la collision avec un obstacle seront écartés. Le chemin sans collision et apportant le plus de points au score sera sélectionné et le bot recommencera une suite d’itérations de calculs vers la moitié de ce chemin pour améliorer sa trajectoire.
|
||||
|
||||
Si tous les chemins mènent à une collision avec un obstacle, le chemin retardant le plus la collision sera sélectionné. L’ensemble des actions possibles dans une suite d’intervalles représente un arbre binaire où chaque chemin est un parcours de la base de l’arbre vers une feuille. L’itérateur procède à un parcours en profondeur de l’arbre pour trouver le meilleur chemin.
|
||||
|
||||
Nous envisageons d’utiliser l’approche de l'algorithme glouton afin d’obtenir un chemin satisfaisant sans dépenser trop de temps de calcul en parcourant l’arbre entier.Pendant le parcours de l’arbre, si un chemin testé mène à une collision avec un obstacle ou avec un bonus, l’itérateur reviendra avec une nouvelle suite d’actions jusqu’à quelques itérations avant la collision puis procèdera à un nouveau parcours en profondeur à partir de cette nouvelle base pour essayer d’optimiser son score et sa survie. ![loading-ag-468](images/img13PNG.PNG)
|
||||
|
||||
|
||||
|
||||
## L’ itérateur intelligent (Procédural et neuronal)<img title="" src="images/img6PNG.PNG" alt="loading-ag-481" width="58">
|
||||
|
||||
Bot optionnel que l’on implémentera si le temps nous le permet.
|
||||
|
||||
Nous n’avons pas encore de concept clair pour ce bot, nous chercherons une possible implémentation de réseau neuronal fonctionnant de pair avec le calcul itératif de chemins pour améliorer les performances du bot précédent.
|
||||
|
||||
# 5. Livrables
|
||||
|
||||
Le dépôt git du projet contiendra le build de la dernière version fonctionnelle de l’application en plus des documentations annexes. Le projet Unity en lui-même est partagé entre les membres du PT sur la plateforme de collaboration officielle du Unity. Nous veillerons à inclure le code source du projet final dans le dépôt git en plus du build complet de l’application.
|
||||
|
||||
# 6. Bibliographie :
|
||||
|
||||
Apprentissage du C# :
|
||||
|
||||
Série de vidéos sur les aspects du C# dans la programmation sous Unity
|
||||
|
||||
[Learn C# BASICS in 10 MINUTES! - YouTube](https://www.youtube.com/watch?v=IFayQioG71A&list=PLzDRvYVwl53t2GGC4rV_AmH7vSvSqjVmz&pp=iAQB)
|
||||
|
||||
Documentation unity :
|
||||
|
||||
Documentation officiel de la plateforme, utile pour tout besoin technique.
|
||||
|
||||
[https://docs.unity.com/](https://docs.unity.com/)
|
||||
|
||||
Documentation ML-Agents :
|
||||
|
||||
Documentation officielle de ML-Agents qui nous servira à implémenter des systèmes neuronaux.
|
||||
|
||||
[Toolkit Documentation - Unity ML-Agents Toolkit](https://unity-technologies.github.io/ml-agents/ML-Agents-Toolkit-Documentation/)
|
||||
|
||||
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
BIN
Documents/images/img11PNG.PNG
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
Documents/images/img12PNG.PNG
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
Documents/images/img13PNG.PNG
Normal file
After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 760 KiB After Width: | Height: | Size: 760 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 847 KiB After Width: | Height: | Size: 847 KiB |