TopBack to top

L’API PySC2


Présentation de l’API


DeepMind, organisme de Google travaillant sur l’Intelligence Artificielle et le Reinforcement Learning, a rendu public son environnement d’apprentissage pour StarCraft II. Il est disponible ici.

Cet environnement vient avec un papier d’étude de StarCraft, décrivant également le challenge qu’est StarCraft pour la création d’Intelligences Artificielles.

Dans cet article, l’API PySC2 est rapidement présentée, ainsi que la résolution de mini-jeux fournis avec l’API.


Fonctionnement de l’API


PySC2 est une API développée par DeepMind pour StarCraft II. Elle est écrite en Python et permet aux développeurs de créer des agents IA pour jouer à StarCraft II.

PySC2 permet aux développeurs d’accéder aux informations du jeu. Cela inclut les positions des unités, les ressources disponibles, et plus encore. Les IA peuvent exécuter des actions dans le jeu. Cela permet donc de créer des IAs qui peuvent donner des ordres aux troupes, construire des bâtiments, et gérer l’économie.

Les informations sont toujours réparties en deux parties différentes: Les actions possibles pour un joueur à un moment donné, et l’ensemble des observations qu’un joueur pourrait réaliser.

L’API offre également des outils pour visualiser les parties et analyser les performances de l’IA.



Résolution des mini-jeux de PySC2.


Afin de se familiariser avec l’API, DeepMind fournit plusieurs mini-jeux à résoudre.

Ici, nous allons nous intéresser à la résolution de chacun d’entre eux, en détaillant la stratégie optimale.

Une future version du site comprendra des exemples de code que vous pourrez exécuter par vous-même si vous avez installé StarCraft, et l’API PySC2.

Les captures vidéos présentes ci-dessous sont issues des résultats que j’ai obtenus avec l’API.




MoveToBeacon


Ce mini-jeu est le premier, et le plus simple d’entre tous.

Le but est de déplacer une unité (en l’occurrence, un “marine”) sur une certaine zone de la carte (une balise). Une fois cela accomplit, nous obtenons une récompense, et les positions du marine et de la balise sont réinitialisées aléatoirement. Le jeu est fini au bout de 120 secondes.


MoveToBeacon

Le challenge MoveToBeacon


La stratégie à appliquer pour résoudre ce jeu n’est pas très compliquée. Il suffit de sélectionner le marine, et de lui demander de se déplacer sur la balise.




FindMineralShards


Nous sommes en possession de deux marines, et plusieurs récompenses (packs de minerai) sont placées aléatoirement sur la carte.

Notre but est de récupérer autant de récompenses que possible dans le temps imparti.

Lorsque les 20 carrés de minerai ont été récupérés, de nouveaux carrés de minerais apparaissent d’une manière aléatoire sur la carte.


MineralShards

Le challenge FindMineralShards


Le but de ce challenge est de réussir à gérer indépendamment les deux marines, afin de récolter autant de packs de minerai que possible.




DefeatZerglingsAndBanelings


Nous sommes en possession de 9 marines, et du côté opposé de la carte se trouvent 6 Zerglings et 4 Banelings.

Notre but est de battre les troupes ennemies avec nos marines, et d’en perdre aussi peu que possibles.

Lorsque les Zerglings et les Banelings ont été battus, les positions sont réinitialisées et nous gagnons 4 marines supplémentaires.

Nous obtenons une récompense de +5 à chaque fois que nous battons une unité ennemie, et de -1 à chaque fois que nous perdons un marine.


DefeatZerglingsAndBanelings

Le challenge DefeatZerglingsAndBanelings


Ce challenge demande une gestion très fine de nos unités, puisque si nous nous contentons d’attaquer simplement les troupes adverses, nous allons perdre tous nos marines à cause des Banelings.

En effet, les Banelings sont de petites unités explosives infligeant des dégâts de zone. S’ils arrivent au contact de nos marines, ils perdront tous de la vie.

Nous devons donc implémenter deux comportements différents :

  • Le “hit and run” (attaquer et courir)
  • Le “focus fire” (concentration de tirs)

Le premier consiste à attaquer, puis à courir dans la direction opposée à nos ennemis. Nous mettons ainsi à profit le temps entre deux tirs pour maximiser la distance nous séparant de nos ennemis.

Le second consiste à concentrer nos tirs sur une cible en particulier. En l’occurrence, nous voulons cibler les Banelings en priorité, pour éviter qu’ils n’explosent au contact de nos marines.




CollectMineralsAndGas


Dans ce dernier mini-jeu, le but est de réussir à développer notre économie, et de récolter un maximum de ressources dans le temps imparti.

Au début, nous sommes en possession de douze récolteurs, et d’un bâtiment principal (pouvant produire des récolteurs).

Il y a 16 carrés de minerai, et 4 geysers de gaz vespène.


CollectMineralAndGas

Le challenge CollectMineralsAndGas


Développer notre économie efficacement n’est pas une tâche facile.

Déjà, il nous faut produire des récolteurs en continu. Chaque récolteur pourra récolter des ressources, et augmentera ainsi notre score sur le long terme.

Cependant, nous avons une limite de population, et si nous l’atteignons nous ne pourrons plus produire de récolteurs. Pour l’augmenter, nous allons devoir construire des maisons.

Une fois que nous aurons accumulé assez d’argent, il est intéressant de construire une deuxième base, afin d’aller récolter les ressources qui sont trop éloignées de notre premier bâtiment principal.