Comment les robots collecteurs de jeu perçoivent le monde du jeu - d'autres entités Game Development Stack Exchange

Pouvez-vous appliquer à un jeu ou est-il spécifique pour chaque jeu? Je suis désolé si la question est pas claire. et je ne demande pas comment faire un bot, plus demandant comment ils détectent les choses à l'écran comme tout à fait fascinant pour moi!







Merci d'avance :)

a demandé le 23 juin '15 à 12:40

Il y a beaucoup de points où un robot peut s'injecter dans le jeu.

L'écran est l'un d'entre eux, mais de loin pas le plus utile. Cependant, je l'ai vu une fois un aimbot très tôt pour Counter Strike qui a utilisé le codage couleur. Il est venu avec des modèles de personnages alternatifs avec des textures unicolore (le jeu a été modding convivial suffisant pour permettre à ce sujet) et vient de détecter les pixels de ces couleurs. Pas une méthode très efficace, cependant. Il était déjà assez maladroits à l'époque, et devient de moins en moins viable parce que les moteurs graphiques deviennent de plus en plus puissants, ce qui signifie que de plus en plus de détails pour confondre les algorithmes de reconnaissance optique.

Il est possible de modifier le jeu lui-même exécutable. Pour ce faire, les développeurs de bots doivent être en mesure de lire et programmer en assembleur, ce qui est pas si difficile avec une certaine pratique. Ils regardent alors le code qui gère les informations qui les intéressent et le réécrire pour le transmettre à leur bot. Une contre-mesure possible du point de vue du développeur du jeu est d'utiliser un obfuscateur pour rendre le code assembleur du jeu moins lisible, mais ceux-ci ne sont généralement pas bon pour la performance et il existe des outils pour de nombreux obfuscators qui inversent leur travail.

Les bots sont les joueurs. Ils viennent de lire les positions du serveur tout comme tous les autres joueurs ne et utiliser les valeurs du joueur / monstre combiné avec un simple script AI pour effectuer des actions dans le jeu en simulant des coups de clavier et les clics de souris programme. Si les robots avaient en fait un algorithme pour détecter ce monstre est à l'écran et d'interagir avec elle, ce serait un logiciel assez impressionnant qui en millions vaudrait. C'est essentiellement AI pour les robots.

répondit le 23 juin '15 à 13h16

Phillip a déjà donné un aperçu de la façon dont la plupart des robots fonctionnent comment, mais je voulais juste pour couvrir les choses un peu plus en détail, comme je l'ai un peu d'expérience personnelle en développement ou pour tous les types de bots qu'il couvrait.

Dans Runescape, il y avait un grand projet (RSBot) qui copie le contenu de la mémoire du client Runescape dans sa mémoire locale, où il pourrait alors voir l'ensemble de l'état du jeu sans risque du client sur la capture. Il a fallu un peu d'ingénierie inverse pour déterminer où en mémoire à regarder afin de trouver les pointeurs vers les données, mais une fois qu'ils ont fait, ils ont exposé une API pour tirer profit des informations. Il savait exactement ce qui était où dans le monde en obtenant les coordonnées d'un objet, puis en les transformant avec la caméra matrice de transformation pour obtenir la position à l'écran. Les masques de vie étaient également lisibles, il était donc trivial de déterminer exactement ce que vont déplacer la souris dans afin d'obtenir le résultat souhaité.







Le bot a fourni un tas de débogage des informations, telles que les annotations qui racontaient le développeur dont les coordonnées sont de tuiles où l'ID cet objet a, ce ID appartient à un élément donné, etc. Cette information pourrait ensuite être utilisé pour faire des robots. Le véritable processus de fabrication des scripts bot était en fait assez simple. Le cadre pourvu de nombreuses fonctions d'utilité, comme MOVE_TO (world_coordinates) ou MOUSE_MOVE (x, y) qui effectuer les actions spécifiées d'une manière quelque peu crédible (en déplaçant la souris le long d'une spline aléatoire, de manière répétée le déplacement à la fois par la minicarte et l'écran, et bientôt)

De plus en Runescape, vous avez la possibilité de réduire de manière drastique la qualité des graphiques. Il était en fait assez facile de faire certains types de bots en filmant l'écran et l'application des concepts de vision informatique de base afin de construire un modèle du monde. J'ai fait à la fois un bot de malédiction et de la fusion bot utilisant cette technique, tous deux travaillé très bien. Il suffit de prendre le cadre, augmenter la saturation autant qu'il pouvait, et essayer ensuite d'extraire des motifs de ce qui pourrait alors générer une carte de probabilité pour les zones de clic.

Dans le cas du robot de malédiction, la cible était un moindre démon, qui est juste une chose énorme rouge, ce qui est trivial à trouver. Dans le cas du robot de fusion, il rechercherait une petite trapézoïdal orange, entouré de gris, et qui serait le four. Il essaierait aussi de trouver un grand, gris clair forme de « L », qui serait le bureau de banque. Qui vient d'être fait avec downscaling et heuristiques de base. Il pourrait aussi s'orienter avec la boussole à portée de main à côté de la minicarte, il pourrait donc orienter la caméra dans une position plus fiable pour trouver les objets cibles.

Dans divers jeux Nexon, les serveurs sont très confiance des clients. J'abusé d'une tonne en MapleStory en modifiant des cartes pour éliminer les dangers ou ajouter funes de sorte qu'un bot ne doit pas être presque aussi sophistiqué. Je surveille également le trafic vers et depuis le serveur afin de construire un modèle du monde qui pourrait ensuite être utilisé pour trouver rapidement et tuer des monstres.

répondu le 24 juin '15 à 18:18

La réponse de Phillip est grande, mais juste une note rapide au sujet de la Model / View / modèle de contrôleur, ou MVC pour faire court.

Votre écran fait partie de la « vue », qui présente des données du « modèle », qui est l'état réel du jeu si vous le souhaitez. Les bots, et votre personnage, tout « existent » (dans un sens) dans le modèle. Imaginez si vous avez débranché votre écran - le jeu continuera même si la vue est allée.

répondu le 24 juin '15 à 15h06

Ils peuvent lire les coords à partir d'un fichier ou d'un serveur, mais aussi avec un système de détection de collision de rayons. Il est courant d'utiliser des rayons qui va du bot (dans ce cas) à l'extérieur de lui. Si le rayon entre en collision avec quelque chose, il retourne des informations au bot, comme si ce que le rayon trouvé était un joueur, un robot, un animal ou d'un simple mur. C'est parce que dans le cas du joueur et le bot par exemple, ils ont une capsule invisible qui les implique entièrement avec des informations sur ce type, par exemple (humain, bot.). Avec ce qu'ils peuvent éviter de s'écraser avec des murs et autres elemnts si elles vous suivent par exemple.

Vous pouvez voir la partie détection de collision de cette page

répondit le 23 juin '15 à 14h05

Cela vous besoin d'injecter du code pour le jeu réel bien - dimitris93 23 juin '15 à 14:10







Articles Liés