Sources & Ressources du talk AI Takeover du DevFest Nantes 2018
Contient les sources relatives à l'entraînement et au run du bot et du moteur de jeu.
- src/train_ruler.py : entraîne un nouveau moteur de jeu (autorise ou non les déplacements, retourne les codes de victoire & défaite)
- src/app_ruler.py : web service flask exposant le modèle du moteur de jeu et la map (rentrée en dur à partir d'une des 3 maps stockées au format RDS dans data/ ) sur le port 5000
- src/rldql.R : script R permettant d'entraîner un nouveau bot via deep q learning
- src/Agent.R : script R contenant la logique de l'agent (le bot) & exposant une api permettant de requeter son prochain mouvement en fonction de l'état de la map
- src/mapGeneration.R : script R permettant de faire tourner un algo génétique pour générer une nouvelle map
- run_bot.R : script R permettant d'exposer l'api de Agent.R derrière un webservice (via plumber)
game_logic/data contient 3 maps générées par l'algo génétique ainsi qu'un modèle de deep q learning contrôlant le comportement du bot. game_logic/img contient une illustration du comportement du bot.
Contient le script R permettant de générer des graphiques au format xkcd. Pourquoi ? Parce qu'on peut.
Contient les scripts python permettant de faire tourner un GAN. Un ACGAN a également été essayé.
- data/proc contient les données sérialisées des différents sprites qui ont été scrapés (block: les blocks ;), gm: ghost monster, pacman : pacman, pg: pacman ghost, tiles: tiles)
- img/ contient quelques exemples d'images générées
- src/scraper.py : permet de scraper des images sur google image (python scraper.py -s pacman -n 200 -d path/to/download)
- scr/scraper.R : script R permettant de lancer scraper.py et de pré-processer les images (resize en 28x28 grayscale et 28x28 color; passage du background en blanc; normalisation des différents color channel) et sérialise les images dans data/proc (data.dat = grayscale, cdata.dat = color)
- src/acgan.R & src/gan.R sont des scripts R permettant de faire tourner un gan ou un gan conditionnel directement à partir des données contenues dans data/proc
- src/acgan/acgan.py et gan.py sont les équivalents python, c'est le gan.py qui a été utlisé pour les images présentées lors du talk. Les deux se basent non pas sur les données .RDS (format R) mais sur les données .csv
- src/cdata_to_csv.R : script R permettant de transformer les données RDS (cdata.dat) au format csv (pour lecture sous python: /!\ pandas & R n'utilisent pas le même ordonnancement des données matricielles)
Projet angular contenant l'UI du jeu
Le projet peut être lancé via un container docker.
docker pull valeuriad/pacman
docker run -p 4242:4242 -p 5000:5000 -p 4200:4200 valeuriad/pacman
docker build -t pacman-ai .
docker run -p 4242:4242 -p 5000:5000 -p 4200:4200 pacman-ai