Présentation générale du jeu
L'objectif principal de cette semaine était de réaliser un jeu utilisant une intelligence artificielle basé sur l'apprentissage par renforcement, en reprenant les acquis de la semaine précédente.
On a décidé de réaliser un jeu dans lequel une IA doit trouver une sortie dans un labyrinthe.
La première étape était de réaliser les éléments de game design.
Premier Croquis du labyrinthe
Labyrinthe final du jeu
Les assets principaux du jeu sont les suivants :
Le chevalier devant trouver une sortie
Les coffres piégés "mimics" retirant des points au chevalier
Les règles sont les suivantes : l'objectif du chevalier est de trouver une des sorties en un nombre limité de déplacements possibles.
Son chemin est semé d'embuche puisque dans le labyrinthe se trouve des coffres piégés, qui, lorsqu'il en rencontre un, perd des points dans son score final. De même, rencontrer un mur lui fait perdre des points.
2 sorties sont possibles, l'une rapporte plus de points que l'autre.
Apprentissage par renforcement
Pour le développement de notre IA, nous avons décidé d'utiliser pour le choix d'action l'algorithme "ε-greedy".
L'apprentissage de la qualité des actions sera réalisé à partir de l'algorithme du "Q-learning".
Au premier tour, l'IA réalise les actions de manière équiprobable
Avancement de l'IA au bout de quelques milliers de tentatives
Chemin que prend l'IA une fois qu'il a fini son apprentissage
Fonctionnalités du jeu
J et O permettent de laisser la main au joueur / à l'ordinateur.
D et F permettent d'enlever ou de remettre l'affichage du jeu afin d'obtenir un apprentissage plus rapide.
R permet de réinitialiser un tour.
C permet de charger la matrice Q décrite dans le deuxième fichier en paramètre en mode exploitation.
La matrice Q est sauvegardée à chaque fin de tour dans le premier fichier en argument.
Des statistiques des performances de l'IA sont sauvegardé dans le 3ème fichier en argument.