Tu peux globalement séparer l'architecture d'un bot en 3 couches :
-
La récupération et le parsing des données. Typiquement convertir un flux de données brutes en objects compréhensibles (Networking / Fichiers du jeu / etc.).
Celle-ci pourrait contenir :
- L'implementation d'un protocol réseau suivant la version du jeu. La 1.29 communique en String clair alors que la 2.0 en byte[] avec des règles beaucoup plus poussées.
- Une bibliothèque de paquets réseau représentés sous formes de classes. Tu seras bien content de découvrir les ProtocolBuilder. CC @BlueDream
- Des parsers de fichiers du jeu. Pour Dofus, les fichiers D2o, D2p, I18N, dlm et bien d'autres.
- ...
-
Le cerveau du bot.
Par cerveau j'entant l'ensemble des comportements implémentés pour faire face à des tâches identifiées (Marcher, Lancer un sort, Définir une stratégie de combat, cultiver etc. etc).
C'est le moment d'approfondir son niveau en architecture logicielle (ça devient vite la jungle)
-
Le cerveau de groupe.
- Un bot socket doit pouvoir gérer des groupes de bots et la manière conventionnelle de gérer ces groupes et de définir un chef de groupe à qui toutes les décisions reviendront. Les autres cerveaux ne seront que des suiveurs et réaliseront bêtement les tâches pour lesquelles ils ont été programmé. Ce mécanisme de leader / suiveur(s) peut s'implémenter dans ce cerveau. A noter que cette manière de gérer un groupe n'en est qu'une parmi tant d'autres.
- La plupart du temps un bot MITM ne devra gérer qu'un seul personnage à la fois. Celui du client ouvert. Cela simplifie énormément le développement de ce cerveau car il n'y a pas besoin de gérer la synchronisation entres plusieurs sous-cerveaux. Celui-ci est toujours nécessaire car on peut considérer notre seul client comme étant le leader d'un groupe d'une seule personne. C'est donc à lui que revient l'entièreté des décisions. Logique non ? =D
On ne parle là que de l'architecture profonde, pas la couche graphique et autres couches de haut niveau.
--
LA grande différence entre full Socket et MITM est que le MITM intercepte et manipule des données envoyées par un vrai client Dofus alors que le full Socket doit créer ces données de toute pièce en reproduisant fidèlement les données d'un vrai client.
Par reproduction des données d'un vrai client j'entends:
- L'algorithme de pathfinding: les chemins générés par le bot socket doivent être exactement les mêmes que ceux générés par un vrai client. (La moindre erreur de calcul = ban)
- Les réponses aux différentes stratégies anti-bot utilisées dans le protocol (dans le cas de Dofus 2.0).
- Le chiffrement RSA du mot de passe : en utilisant la clef trouvée dans le code source du jeu.
- et beaucoup ... beaucoup beaucoup d'autres
Le MITM quant à lui manipule les données sûres d'un client certifié. Elles garantissent une sécurité au niveau de l'anti-bot. Le MITM est libre de choisir quand il interagira avec le flux réseau afin de soit modifier soit y injecter un paquet. Il n'a donc quasiment aucune logique de connexion à implémenter étant donné que tout est fait par le vrai client
.
Je recommande de commencer par développer un bot MITM car le développement d'un bot fonctionnel sera 2 à 3 fois plus rapide (source Evian) que celui d'un bot full Socket. De plus, les projets full Socket demandent une quantité de code faramineuse et peuvent vite décourager les plus novices d'entre nous. Une fois ce premier projet réussi alors pourquoi pas passer sûr du full Socket =)
Le développement d'un bot est une entreprise certes importante mais qui apporte énormément de connaissances aussi bien dans l'architecture logicielle, que dans la prise de décision, que dans l'arrachage de cheveux, que dans la réflexion / concentration, que dans les mathématiques etc etc etc.
Plus personnellement, j'ai commencé le développement à 12 ans et le développement Dofus à 14. Ca ne m'a jamais vraiment quitté depuis (cela fait une dizaine d'années). C'est même ça qui m'a passionné pour le développement informatique et qui m'a poussé à en faire mon métier. Ce 14 septembre (je vous écrie dans la nuit du 14 au 15) j'ai terminé mon stage de fin d'études, qui conclue lui même 5 années d'études. Ce message est un peu une sorte de remerciement envers ce que tout ce jeu m'a apporté. Dans le monde virtuel tout comme IRL.
J'espère que ma petite introduction pourra t'éclairer quant à tes questionnements
@+