Wallpass
Hello,
Sans savoir quel niveau je pourrais me donner en programmation, je peux dire que j'y ai quand même assez bien toucher. Par exemple l'un des premiers objectifs que je m'étais donné pour apprendre le python était un bot pour un jeu de navigateur (monstrueusement plus simple à mettre en oeuvre qu'un bot pour dofus)...
J'ai essayer de trouver les règlements du forum et j'ai abandonner encore (lol) donc je ne sais pas si je peux vous donner le lien du jeu en question... c'est un jeu 18+ donc je ne prendrais pas le risque mais si ça ne dérange pas ou si on ne donne que le nom je pourrais aussi vous montrer le code que j'ai fait pour l'instant.
Mais en gros mon bot est capable de faire du template matching en utilisant openCV (cette partie du code a été réalisée en suivant bêtement un tuto sur youtube, je pense que je suis très loin de comprendre assez openCV pour ma propre satisfaction, et qu'à cela ne tienne ce n'est quand même pas du machine learning, sooo.. I want more XD), les fonctions d'enregistrement de templates et de binding box sont incluses dans une classe et toutes les images ainsi que les coordonnées des box où elles doivent être recherchées sont enregistrées grâce au module pickle. J'utilise pyAutoGui dans des méthodes de classe pour cliquer au centre de la template recherchée lorsqu'elle est trouvée et mon bot est capable de faire a peu près tout dans le jeu, sauf peut-être vendre l'équipement superflux... Mais il récolte dès qu'une récolte est disponible, il se bat en PvP dès qu'il en a la capacité, en PvE aussi et achète à la boutique lorsque c'est nécessaire. Il est capable de voir lorsqu'il gagne quelque chose et de récolter ce gain et il recharge la page lorsque ma connexion internet ou l'ordinateur se mettent à faire chier. Il y a encore pamal de bugs mais j'ai réussi à le faire tourner sans accro pendant 3 jours, puis le portable sur lequel il tourne à fait un bluescreen. Problèmes liés à l'utilisation du template matching (d'où mon envie d'utiliser du machine learning) c'est que dès que la résolution ou le ratio d'image change, il ne saura plus où regarder et il ne reconnaitra plus ce qu'il a enregistrer, il faudra donc reprendre toutes les images et les coordonnées pour qu'il fonctionne à nouveau.
Je crois donc que je peux dire que j'ai déjà passer mon top départ... Enfin... vous programmez tous depuis plus longtemps et mieux que moi j'en mettrait ma main au feu, donc à vous d'en juger lol. Je crois que je comprend la POO, pour python j'en suis au stade de comprendre les threads (ou plutôt comment les mettre en oeuvre), les interfaces graphiques (je commence avec tKinter) et entre autre les décorateurs, mais pour ces derniers je crois qu'il me faut simplement un peu de pratique.
Ceci dit,
Ce qui m'inquiétait beaucoup par rapport aux bot socket c'est que dans mes recherches préliminaires ils semblaient voués au bannissement. C'était la base de ma réflexion "ah mais si le programme utilise exactement les mêmes outils que des vrais joueurs et a un comportement random, comment ankama pourrait-il bien détecter le dit bot?" et je me suis sentie vraiment géniale pendant la seconde et demie où je ne me suis pas demander "ok mais pourquoi personne ne le fait?", et puis par impatience je me suis lancée dans python parce que je ne savais plus trop où chercher XD.
En ce moment j'ai je crois besoin d'avoir un résultat concret pour me motiver dans mon apprentissage, je vais continuer d'apprendre python, et espérer le maitriser (au delà des bots, j'aimerais vraiment étudier dans le domaine de l'intelligence artificielle... je trouve ça vraiment fascinant, je prend juste ce rêve avec un grain de sel sachant que je suis justement peut-être un peu trop rêveuse) mais en parallèle suivre vos conseils et m'orienter vers un bot socket pour commencer plus simple.
De toute façon il faut bien maitriser plus d'un langage dans ce monde non? hihi ^_^
J'ai fureter un peu votre forum tutoriel, et jeté mon dévolu sur https://cadernis.com/d/491-tuto-bot-socket-les-fondamentaux ... Est-ce un bon choix? Quels tutos me conseilleriez vous en complément ou en remplacement? Un langage privilégié?
Merci pour tes liens astro05, je les explorerai assurément. Ce que qui me séduisait tout particulièrement avec l'utilisation du ML pour un bot dofus c'est qu'on pourrait finir par faire (je crois) un bot capable de faire des donjons de haut niveau, voir même se mesurer à des joueurs (enfin, je sais pas si ça se fait déjà... disons que lorsque j'étais prise dans ce tourbillon de pensées j'avais les yeux qui pétillaient en pensant aux ordinateurs capables de battre des humains aux échecs ou au go, je me suis dit que ce serait drôlement cool de faire ça mais avec un jeu qui a bercer ma propre adolescence... même si c'est pas la chose la plus légale de l'univers...)
Pour avoir une bonne IA, l'un des pré-requis est d'avoir un jeu de données d'apprentissage assez conséquent : pour que ton IA soit "intelligente", il faut lui "montrer" plein de fois comment on fait pour faire ce que tu veux qu'elle fasse.
Par exemple, pour lui apprendre comment faire un combat, il lui faudrait certainement des milliers voire des dizaines de milliers de combats d'exemple. Et ça, ce serait juste pour lui apprendre les combats "simples" : on tape le monstre, il perd des points de vie, il meurt. Pour des donjons plus complexes où les monstres/les joueurs ont des états (Otomai, Frigost, etc.), ce serait encore plus compliqué : il faudrait des dizaines de milliers de combat d'un même boss pour lui apprendre. Et encore, pas sûr que ça fonctionne...
Mine de rien, Dofus est un jeu complexe avec énormément de règles : comparé aux échecs, le nombre de règles est bien plus important. Si tu débutes dans l'IA, c'est un projet bien trop ambitieux.
Sinon, pour ta question relative au langage à utiliser : il y a plusieurs aspects à considérer quand tu choisis un langage pour un projet. Un langage de programmation est avant-tout un outil : il faut choisir l'outil correct pour un projet donné. Par exemple, tu ne vas pas utiliser une brosse à dents pour laver le sol de ta maison, mais plutôt une serpillère : c'est plus gros, ça convient mieux à la situation. Tout dépend de tes objectifs et de tes contraintes :
- Est-ce que l'objectif est de faire un bot fonctionnel le plus rapidement possible ?
- Que veux-tu que ton bot fasse (crafter des objets, faire des combats, etc.) : ça pourra t'aider à déterminer si tu dois t'orienter vers un bot pixel ou socket
- Est-ce que l'objectif est plutôt d'apprendre un langage dont tu pourras te reservir par la suite : tu vas pas faire grand chose en AutoIt à part des bots pixels, mais tu pourras utiliser Python dans plein de domaines (à l'école, en entreprise, pour faire de l'IA, etc.)
- Veux-tu que ton bot soit cross-platform (Windows, Linux, MacOS, etc.) ou seulement compatible Windows ?
Tu l'auras compris, tout dépend de ce que tu veux faire. Maintenant, comme tu as l'air d'être intéressée principalement par l'IA : fonce sur Python. C'est un langage énormément utilisé en IA et dans d'autres domaines scientifiques. Mais pas que ! C'est aussi un langage utilisé pour faire des sites web, des logiciels, du scripting... bref ! Un bon choix pour débuter en programmation, surtout qu'il est haut-niveau ("haut-niveau" ne signifie pas que c'est un "bon" langage mais que c'est un langage qui est "plus proche des humains" et "plus éloigné des concepts de la machine").