Bot 2.0 sous Python

Inscrit
7 Mars 2020
Messages
6
Reactions
0
#1
Bonjour la communauté,

Je suis débutant et c'est mon premier post ici. J'ai parcourut le forum et n'ai pas trouvé de projet similaire.

(*prend sa respiration*), je me lance: j'ai commencé à créer un bot Dofus par reconnaissance d'image sous Python. Il y a une multitude de façon beaucoup plus simple de faire (je sais), mais l'objectif premier est de m'entrainer à utiliser ce langage.

L'objectif de ce premier bot sera de contourner les tâches répétitive (farm combat, métier...) en construisant une base de donnée limitée à quelques maps.

J'ai commencé dans un premier temps à prendre des captures des maps en questions et des placements de combat pour constituer ma base de donnée.

Dans un second temps j'ai enregistré mes actions (durée clic souris, durée appuie clavier, zone de clic...) afin d’empêcher deux actions similaires à la suite.
J'ai ensuite déterminé des zones sur l'écran permettant de reconnaitre une map (position...) et d'y associer des actions qui lui sont propre.

Ma question est la suivante: est-ce que quelqu'un a déjà essayé d'implémenter un code un peu similaire ou serait intéressé par la réalisation de ce projet avec moi?
Je vous laisse mon discord si jamais ça vous intéresse: aksoaks#8836

Merci par avance pour vos réponse :)
 
Inscrit
26 Janvier 2016
Messages
76
Reactions
13
#2
Hello,

De ce que je comprends tu enregistre chaque choix possible pour par la suite laisser ton bot tourner avec ces infos ?

Si oui , disons que c'est "rapide" et pas compliqué à mettre en place ... mais bon que ce soit pour l'apprentissage ou la rentabilité l’intérêt est assez limité.
 
Inscrit
25 Novembre 2015
Messages
172
Reactions
8
#3
Le sujet a été largement couvert et débattu ici https://cadernis.fr/index.php?threads/création-dun-bot-pixel.2396/

Il faudrait songer à revoir la manière dont tu mène tes recherche avant de poster son premier message sur le forum, ce post est plus ou moins un doublon et en plus tu entres sur un terrain plutôt glissant ici, de nombreux experts ont a donner leur avis sur ce sujet.
 
Dernière édition:
Inscrit
7 Mars 2020
Messages
6
Reactions
0
#4
Bonjour,
Merci pour vos réponses, je m'attendais a me faire un peu démolir concernant ce post (comme sur la plupart des forums dev).
J'ai bien vu le débat que ça a causé et mon intention était pas d'en recréer un.
J'veux ni être dev par métier ni vendre mon code simplement m'entrainer sur de la reconnaissance d'image. Autant que cet entrainement me soit utile en même temps sur le jeu. De plus j'ai aucun intérêt à essayer de m'approprier d'autres techniques (liées à l'interception de paquets...) pour cette unique application.

Mon objectif reste simple, me détacher d'un combat que je répete environs 1000 fois par semaine sur une map quasiment identique.

Merci quand même d'avoir répondu, je continuerai à occuper mon temps libre de la même manière qu'avant.
 
Inscrit
7 Mars 2020
Messages
6
Reactions
0
#5
Hello,

De ce que je comprends tu enregistre chaque choix possible pour par la suite laisser ton bot tourner avec ces infos ?

Si oui , disons que c'est "rapide" et pas compliqué à mettre en place ... mais bon que ce soit pour l'apprentissage ou la rentabilité l’intérêt est assez limité.
Oui, c'est bien ça je cherche juste à appliquer ce que j'ai appris sur le deep learning pour le jeu étant donné le nombre incalculable de librairie qui existe pour le traitement d'image.
L'objectif reste simple mais je préfère pas décrire dans les détails les "pourquoi du comment" sur ce post.
 
Dernière édition:
Inscrit
25 Novembre 2015
Messages
172
Reactions
8
#6
Quant à moi mon objectif était d'attirer ton attention sur ce sujet dont tu semblais ne pas avoir connaissance. Donc pour revenir au sujet initial, tu base ton deep learning sur des données non fiable ? J'ai du mal a comprendre, loin de moi l'idée de vouloir te "démolir", mais tu m'as l'air un peu sur la défensive. Personne ici cherche a interférer avec les temps libre de qui que ce soit, c'est quoi le but de cette assertion ?
 
Inscrit
7 Mars 2020
Messages
6
Reactions
0
#7
Ce post m'a permit d'avoir le terme exact de ce style de bot (pixel bot) je t'en remercie donc. Le terme "deep learnig" ici n'est pas vraiment approprié, il se limite a des mesures de "press clavier", "clic souris", reconnaissance de chiffres, texte, etc. Il tournera sur un PC uniquement dédié à ça donc les données non fiables liées aux paramètres graphiques (résolution, etc.) est réduit.

Mon objectif premier en passant sur ce forum était d'avoir des retours d'expériences là-dessus, voir ce qui existait déjà sur le pixel bot.

Et pour en revenir sur le fait que je sois sur la défensive, c'est qu'en parcourant différents posts, je me suis préparé un peu aux mêmes styles de réponses sanglantes qui font pas avancer les choses
 
Inscrit
26 Janvier 2016
Messages
76
Reactions
13
#8
Quand on parle de learning il faut mettre en place un systeme d'apprentissage , là il me semble que tu répertories juste tous les choix possible pour "cartographié" les actions à réaliser en conséquence non ?
 
Inscrit
7 Mars 2020
Messages
6
Reactions
0
#9
C'est exactement ça, je passe uniquement par 5 maps, j'ai 21 actions différentes à faire, 1 combat contre trois mob et 7 placements différents.
Si y'avait plus de paramètres a prendre en compte ça serait long et fastidieux à mettre en place par Pixel bot. Le deep learning est pas vraiment le terme approprié ducoup, c'est juste de l'apprentissage par coeur.
 
Inscrit
26 Janvier 2016
Messages
76
Reactions
13
#10
Je vois meme pas en quoi il y a de l apprentissage pour le coup ...
Mais tu te rendras toi meme compte des limites si tu veux faire évoluer ton bot !
 
Inscrit
22 Février 2020
Messages
26
Reactions
11
#11
Yo, j'ai réalisé un bot pixel en python il y a quelques semaines pour automatiser mon petit bucheron, donc je peux te filer quelques tuyaux !
Un premier sujet qui m'a pas mal aiguillé :
https://medium.com/@martin.lees/how-i-made-a-python-bot-to-automate-a-tactical-mmorpg-9f6693350d10
Tu y verras entre autres que les librairies pyautogui et opencv-python seront tes grandes copines dans ton aventure pour simuler des clics, prendre un screenshot ou faire du Template Matching (reconnaissance d'image). Je te conseille de commencer petit en testant des méthodes de ces librairies. Par exemple, essaie de reconnaître un arbre et déplacer le curseur dessus ? Ainsi tu comprendras mieux comment ça fonctionne et pourras étoffer ton projet step by step.
Ensuite, on ne peut pas faire du deep learning juste "en répertoriant les actions possibles". Ils te faut aussi des observations, et surtout un moyen de faire tourner des centaines voire milliers d'instances simultanément pour espérer obtenir un résultat potable. Si t'as pas déjà jeté un œil, ceci devrait étoffer ta connaissance du sujet et t'aider à mieux comprendre quelles sont les conditions pour y arriver :
https://deepmind.com/blog/announcem...ard-open-starcraft-ii-ai-research-environment
D'ailleurs si tu sais avoir accès à leur article publié dans Nature c'est une mine d'or !!
Ici, contente toi d'une logique conditionnelle classique ça fera le café pour ta petite application :teeth:
Je t'aurais bien partagé mon code mais il est vraiment répugnant du genre :
Python:
def multi_imagesearch(background_image, template_path, precision = 0.8):
    """ take a BGR image and the template's path in argument and return
        the occurence's locations of the template on this image regarding a certain precision matching """

    template_bgr = cv2.imread(template_path)
    template_gray = cv2.cvtColor(template_bgr, cv2.COLOR_BGR2GRAY)
    background_image_gray = cv2.cvtColor(background_image, cv2.COLOR_BGR2GRAY)
    w, h = template_gray.shape[::-1]

    res = cv2.matchTemplate(background_image_gray,template_gray,cv2.TM_CCOEFF_NORMED)
    threshold = precision
    locations = np.where( res >= threshold)
    res = []
    for pt in zip(*locations[::-1]):
        res.append(pt)

    i = 1
    removeSave = []
    for loc in res:
        if i < len(res):
            if abs(res[i][0] - loc[0]) < 10 and abs(res[i][1] - loc[1]) < 10:
                removeSave.append(loc)
        i += 1
    for r in removeSave:
        res.remove(r)
    
    return res
Perso je suis en train d'abandonner progressivement la reconnaissance d'image qui m'a montré ses limites (mais m'a été un très bon professeur je dois l'avouer), mais peut être que tes tâches sont suffisamment simples pour t'en contenter ?
Bonne chance pour ton projet !
 
Inscrit
7 Mars 2020
Messages
6
Reactions
0
#12
Bonsoir @Geralt merci infiniment pour ta réponse. J'ai survolé les posts que tu m'as partagé, je les lirait plus en détail à tête reposée. En soit, si je t'exposais en détails ce que je cherche a faire, c'est clairement plus simple à mettre en place un bot récolte comme le tient, qui j'en doute pas a du te prendre énormément de temps a coder.

Je peux peut être te décrire clairement mon projet par mp ou sur discord si tu as un peu de temps?
 
Inscrit
22 Février 2020
Messages
26
Reactions
11
#13
Malheureusement j’ai pas envie de consacrer du temps à faire le mentor mais je voulais juste pas te laisser sans réponse constructive. Mon propre bot me bouffe déjà tout mon temps...

La logique conditionnelle d’un bot ressource est applicable au combat : une boucle, des conditions, une prise de screenshot et une recherche d‘un template (par exemple j’ai pris juste une zone du socle des joueurs sur dofus 1 pour détecter la position du protecteur de ressources) pour obtenir ses coordonnées que tu utilises pour effectuer un click à cet endroit. Tu peux aussi enregistrer des positions prédéterminées qui sont invariables (par exemple le bouton « prêt »). Bricole un peu par toi même (c’est vraiment préférable plutôt que de tout te donner direct dans la bouche comme un poussin) tu devrais y arriver !

Si à un moment tu cales, tu peux toujours poster ton problème sur le forum mais sois clair et précis sinon tu vas te faire saucer (et essaie de le résoudre pendant longtemps avant).

Bon courage
 
Haut Bas