Quelque chose que je me suis toujours demandé, d'autant plus que cela m'a inspiré à commencer à programmer quand j'étais enfant, c'était comment fonctionnent les robots de jeux vidéo? Je suis sûr qu'il existe de nombreuses méthodes différentes, mais qu'en est-il de l'automatisation des MMORPG? Ou même des bots de type FPS?
Je parle de robots d'automatisation créés par les joueurs.
Pour `` botter '' un jeu, vous devez être capable de faire deux choses par programmation: détecter ce qui se passe dans le jeu et fournir des informations au jeu.
Détecter ce qui se passe dans le jeu a tendance à être le plus difficile des deux. Voici quelques méthodes pour ce faire:
Générer des événements d'entrée dans le jeu est généralement la tâche la plus facile. Certaines méthodes comprennent:
Notez que l'exécution d'un "bot" dans un jeu est généralement une violation des conditions d'utilisation du jeu et peut vous faire suspendre, bannir ou pire. Dans certaines juridictions, cela peut entraîner des sanctions pénales. C'est un autre avantage pour l'utilisation des capacités de script intégrées d'un jeu; s'il est conçu pour faire partie du logiciel de jeu, l'éditeur du jeu ne vous interdira probablement pas de l'utiliser.
Une fois, j'ai écrit un simple MMORPG bot par moi-même. J'ai utilisé AutoHotkey .
J'ai donc cherché à l'écran le nom d'un ennemi (stocké sous forme d'image avec la police du jeu) et le script clique quelques pixels en dessous pour attaquer. Il suit également la barre de santé et les pots si elle est trop basse.
Très trival. Mais je connais un bot WoW qui utilise également AutoHotkey. Et je voir beaucoup d'autres personnes avaient la même idée (la mienne n'était pas pour WoW, mais probablement illégale aussi).
Techniques plus avancées ne capture pas l'écran mais directement lire la mémoire du je . Vous devez faire beaucoup d'ingénierie inverse pour que cela fonctionne. Et cela cesse de fonctionner lorsque le jeu est mis à jour.
Comment une personne va-t-elle vivre au jour le jour?
C'est en quelque sorte le problème que résolvent les IA dans les jeux.
Que voulez-vous que votre entité fasse? Codez votre entité pour ce faire. Si vous voulez que votre monstre poursuive l'avatar du joueur, le monstre doit juste faire face à l'avatar, puis se diriger vers lui. Lorsque ce monstre se trouve à une distance appropriée, il peut choisir de mordre l'avatar du joueur, et ce choix peut être aussi simple que AmICloseEnough(monster, player);
ou plus complexe ou même aléatoire.
Les robots dans un FPS sont difficiles à faire car il est facile de les rendre parfaits mais pas si faciles de les rendre amusants. Par exemple. ils savent toujours exactement où se trouve le joueur (gPlayer.GetPosition()
) donc il est facile de tirer sur le joueur dans la tête à chaque fois. Il faut un peu d '"art" pour faire bouger le robot comme le ferait un humain.
Cela s'appelle AI (intelligence artificielle) et n'est vraiment pas si difficile à reproduire, un ensemble de règles et de commandes dans le langage de programmation de votre jeu fera l'affaire. Par exemple, un robot FPS fonctionnerait en obtenant les coordonnées du corps de votre joueur et en réglant le pistolet de votre robot ennemi pour viser cette coordonnée et commencer à tirer à une certaine distance.
Pour les bots de style FPS, vous pouvez jeter un œil au kit de développement Unreal. Si je comprends bien, cela contient une grande partie du code source du jeu.
bta a donné une très bonne réponse. Je voulais juste ajouter en disant que les différentes méthodes sont suspectes par différents moyens de détection par la société de jeux. Le piratage du client de jeu via la surveillance de la mémoire ou l'analyse de paquets est généralement plus facilement détectable. Je ne le recommande généralement pas car vous pouvez vous faire prendre très facilement.
Le grattage d'écran utilisé avec l'émulation d'entrée est généralement le moyen le plus sûr de botter un jeu et de ne pas se faire prendre. Beaucoup de gens (moi y compris) le font depuis des années sans problème.
De plus, pour ajouter une étape supplémentaire entre la détection de ce qui se passe dans le jeu et la fourniture d'entrée, certains jeux nécessitent un calcul approfondi avant de pouvoir décider du type d'entrée à fournir au jeu. Par exemple, il y avait un jeu où je devais calculer le nombre de navires à envoyer pour attaquer l'ennemi, et cela était basé sur le nombre de navires que j'avais, le type de navires, et qui et quel type d'ennemi c'était. Le calcul est généralement la partie "facile" puisque vous pouvez le faire généralement dans presque tous les langages de programmation.