Présentation


Ce projet a consisté en le développement de l’intelligence artificielle d’un personnage dans un mini-jeu inspiré du jeu indépendant Stardew Valley  (l’intégralité des graphismes utilisés appartiennent à son concepteur). Le langage utilisé est le JAVA.

Le jeu se déroule sur une carte composée de cases carrées en vue 3D-isométrique. L’IA du personnage (Abigail, une fermière aux cheveux mauves)  devait pouvoir à différents besoins :

  • Abigail doit ramasser les oeufs pondus par les poules
  • Abigail doit traire la vache lorsqu’elle produit du lait
  • Abigail doit faire du fromage avec le lait récupéré

Tout cela doit être réalisé par Abigail en empruntant toujours les plus courts chemins

 

 

 

Aspects techniques

Algorithmes


Un des principaux algorithmes étudiés pour faire réaliser au personnage du jeu les différentes tâches est l’algorithme de Dijkstra. Cet algorithme était la solution pour résoudre le problème de plus court-chemin dans le graphe (qui est une grille, cas particulier de graphe) lors de la prise de décision par le personnage.

Par la suite, il a fallu gérer des pondérations négatives dans le graphe et l’utilisation de l’algorithme de Bellman Ford a été envisagée.

 

Code


Les actions effectuées par l’IA reposent sur l’utilisation de l’algorithme de Dijkstra, qui a été retranscrit en JAVA. Cette fonction retournait un tableau de valeurs qui contenait l’ensemble des cases à parcourir par le personnage. Ce chemin était ensuite utilisé dans des méthodes de l’IA du personnage permettant par exemple la récupération d’œufs ou de lait.

L’ensemble du code est disponible dans ce dépôt.