Bonjour à tous,
Je suis étudiant en dernière année d'école d'ingénieur, j'ai suivi une formation pour faire du calcul scientifique, c'est à dire pour créer et étudier des schémas numériques afin de résoudre des systèmes d'équations pour la mécanique des solides, des fluides, l'électromagnétisme, etc... Globalement je programme depuis plusieurs années en C++, en Fortran 90 et en Python, je suis plutôt à l'aise même si je suis conscient d'être loin de tout connaître.
Depuis quelques temps, j'aimerais beaucoup développer des IA dans des jeux de société ou des jeux vidéos. Ce qui m'intéresse c'est d'être créatif, de tester mes idées d'abord avec des algorithmes très naïfs, puis de les améliorer pour potentiellement faire des choses bien plus complexes comme j'ai pu le faire dans le domaine du calcul scientifique. Après mes premières tentatives, je me suis posé une question à laquelle je n'ai pas trouvé de réponse sur les forums, et c'est la raison pour laquelle j'ai décidé de m'inscrire sur le forum et de créer un post.
Comment fait-on pour interagir avec une application (sur Windows 10) afin de programmer une IA qui utilise cette appli?
Par exemple j'ai pu voir dans de nombreux streams de jeux vidéos (Hearthstone, Dofus, etc...), que des équipes de commentateurs avaient des outils qui faisaient des statistiques en direct sur les parties en cours. On entend aussi souvent parler de développeurs d'IA en deep learning qui jouent à Dota 2, Age of Empire, ou autre. Il y a aussi malheureusement les algorithmes de triche dans les FPS/TPS comme Fortnite (Aimbots et j'en passe...). Bref, tous ces programmes récupèrent les données d'une application, mais par quel moyens? Est-ce qu'il s'agît d'une lecture de la mémoire (pardonnez mon vocabulaire approximatif), c'est à dire d'une lecture des variables de l'application afin de s'en servir dans l'IA, ou bien est-ce qu'il s'agît d'analyse d'image?
En fait, en ce qui concerne mon projet, j'ai voulu commencer par faire une IA pour jouer au mastermind, et j'avais trois options en tête :
1) Trouver un jeu de mastermind (online ou offline), et trouver un moyen de lire la mémoire utile à une IA.
2) Trouver un jeu de mastermind, puis faire de l'analyse d'image afin de créer mes propres variables utiles à une IA.
3) Créer moi-même un jeu de mastermind, et donc accéder très facilement aux variables utiles à une IA.
Naturellement, pour commencer et créer une IA rapidement j'ai opté pour la 3ème solution, mais bon elle ne me permettra de faire des IA que dans des jeux ultra basiques tels qu'un mastermind. La deuxième option me semble tellement gourmande par rapport à la première. Le traitement d'image, nécessitant potentiellement de l'OCR, doit prendre un temps fou et rend la tâche quasi impossible s'il s'agît d'un jeu où le temps est compté, mais peut-être que je me trompe, je n'ai pas essayé. La méthode la plus intéressante serait la première, mais je n'ai aucune connaissance à ce sujet. Et lorsque je cherche "lire la mémoire d'une application", j'obtiens des résultats assez flous que j'ai du mal à utiliser pour réaliser mon projet.
Je sais qu'il existe des programmes tels que le CheatEngine ou ArtMoney qui permettent de lire la mémoire des applications, mais j'aimerais comprendre comment ça fonctionne et savoir si c'est faisable en C++ ou en Python par exemple. Si vous avez d'autres solutions auxquelles je n'ai pas pensé je suis aussi preneur, j'espère que vous saurez m'éclairer!
Merci beaucoup!
Partager