# Bachelor - Todo list ## Todo - Architecture - [x] Créer un container avec interface + serveur dota - [x] Lancer auto install de dota dans container - [x] Lancer auto app dans container quand install finit - [x] Lancer connexion socket ia-interface depuis env (pas depuis main python) - [x] Pouvoir restart serv dota via gRPC (depuis python) - [x] Reset certaine partie interface (socket, etc..) ? - [x] Stop/start serv dota depuis interface * kill dota, close all socket, reopen socket, start dota - [x] Pouvoir lancer plusieurs instance de l'environnement * déploiement du container "à la main" sur toutes les machines * renseigner les ip/port dans le script python - [x] passage des ip/port au env (via env_args, vec_env_args ?) - [x] lancement socket en utilisant ip/port - [x] **lancement docker depuis dota env (empeche 2+ ia sur meme env, à réfléchir)** - [x] Changer architecture "client" (ia python) - [x] Faire en sorte de tout lancer depuis env (connexion socket, etc..). * /!\ Lancer le serveur dota et l'interface depuis l'env dota empeche d'avoir plus d'une ia sur le meme environnement /!\ - [x] Ne plus utiliser Globalvar (passer directement par gRPC) ? - [x] Changer gamestatethread ? - [x] Re repenser le système de thread. Il existe probablement plus simple. ## Todo - IA - [x] Changer action space * Voir pour space Tuples, utile quand space discrete+continuous * Problème de gen de num (cause : Gaussian distribution initially centered at 0) * https://twitter.com/araffin2/status/1111983313676312576 * https://stable-baselines.readthedocs.io/en/master/guide/rl_tips.html - [x] Ajouter action - [x] Attaque ciblé - [x] trouver un mécanisme pour action space (nombre pour nb target) - [x] trouver un moyen de recup une entite (dota api) - [x] Ne rien faire (no operation). Utile dans le cas ou la cible selectionné n'existe pas (ou autre) - [x] Changer reset - [x] Restart le serveur dota - [x] Changer la façon de reset les valeurs du bot. Recup data via socket ? (pos, vie, gold, etc..). * Premiere data recup ne sont pas les data initiale (peut etre que encore en chargement? c'est toujours les meme en tout cas) - [x] Implémenter “done” dans step - [x] ~~Résoudre probleme action space (valeur généré trop "faible", peut etre normal)~~ cf. Changer action space, probablement le prob - [x] Voir pour dota frame data - [x] Comment récup gold (net_worth ?) - [x] Trouver un autre moyen de limiter nb action par seconde ? (mieux que sleep) - [x] bloquer au lancement tant que pas connecté au serv (ne pas spam erreur) - [x] Changer valeur fonction get_ai_values et get_element_values (parametre 0 a chaque fois) - [x] RuntimeWarning: Unexpected end-group tag: Not all data was converted self.game_state.ParseFromString(binData) ## Todo - Interface - [x] Revoir communication interface-ia (data "corrompue") - [x] Resoudre problème "action reçu, mais pas executé" qui arrive 1/10 (action 1) - [ ] trouver un moyen de reproduire le bug - [x] ~~Faire en sorte de reset socket si connexion lost (pour ne pas avoir a reset interface et permettre autre client)~~ pas besoin, autodeploy ## Todo - Général - [ ] Documentation - [ ] Poster - [ ] Refaire makefile - [ ] Refaire readme - [ ] Ajouter des messages d'erreur (ex : "aucun environnement dota trouvé, veuillez...") - [ ] Effacer les branches inutile a la fin - [x] Réflechir à un moyen de deploy env sur plusieurs machine - [x] faire en sorte de deploy en utilisant clef ssh - [ ] Voir pour faire du pre-training ? * https://stable-baselines.readthedocs.io/en/master/guide/pretrain.html - [ ] Créer un poste sur le git de stable baseline pour envoyer divers args a chaque env - [x] Trouver un moyen d'installer dota sans avoir besoin d'interagir avec (requiert un compte steam et un token) - [ ] Changer la methode make_vec_env_custom sur main (trouver un moyen de faire autrement ?) - [ ] Norme de nommage et tout renommer correctement # Doc * https://cdn.openai.com/dota-2.pdf * https://stable-baselines.readthedocs.io/en/master/modules/ppo2.html * https://medium.com/analytics-vidhya/understanding-openai-baseline-source-code-and-making-it-do-self-play-part-1-9f30085a8c16 * https://stackoverflow.com/questions/45068568/how-to-create-a-new-gym-environment-in-openai * https://grpc.io/docs/tutorials/basic/python/#client * https://github.com/alibaba/gym-starcraft * https://github.com/ppaquette/gym-super-mario * https://github.com/deepmind/pysc2