27 votes

Jeu vidéo

Quelque chose que je me suis toujours demandé, surtout depuis que cela m'a inspiré pour commencer la programmation quand j'étais enfant, c'est 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 pour les MMORPG? Ou même des robots de type FPS?

Je parle de robots d'automatisation créés par les joueurs.

39voto

bta Points 22525

De " bot " d'un jeu, vous devez être capable de faire deux choses de base du programme: détecter ce qui se passe dans le jeu, et de fournir des commentaires pour le jeu.

La détection de ce qui se passe dans le jeu a tendance à être le plus difficile des deux. Quelques méthodes pour ce faire sont:

  • Grattage d'écran de Cette technique de capture de l'image sur l'écran et l'analyse, à la recherche de choses comme des ennemis, le joueur le statut, le pouvoir-ups, les messages de jeu, le temps des horloges, etc. Cela tend à être particulièrement difficile de la méthode. OCR techniques peuvent être utilisées pour le traitement de texte, mais si le texte est écrit sur le dessus de l'univers du jeu (au lieu de sur un élément de l'INTERFACE utilisateur avec un solide arrière-plan), de l'évolution constante du contexte peut rendre difficile d'obtenir des résultats précis et cohérents. Trouver les objets non textuels sur l'écran peut être encore plus difficile, en particulier dans les mondes 3D, en raison des différentes positions et orientations que d'un seul objet peut éventuellement exister.
  • Des Signaux sonores Dans certains jeux, les actions et les événements sont accompagnés par des effets sonores uniques. Il est possible de détecter ces événements par la surveillance de la sortie audio du jeu et de l'associer à l'encontre de l'enregistrement de l'effet sonore. Certains jeux permettent au joueur de fournir leurs propres effets sonores pour des événements, qui permet l'utilisation d'effets sonores qui sont conçus pour être faciles à écouter et à filtrer.
  • Mémoire de Surveillance Si le fonctionnement interne du jeu sont bien compris, alors vous pouvez surveiller l'état d'un jeu en inspectant le jeu de l'espace mémoire. Certains cheat outils pour la console de systèmes (tels que le Game Genie) l'utilisation de cette méthode. Par la détection de ce mémoire les mises à jour du jeu, il est possible de détecter ce que le jeu est en train de faire. Certains jeux de hasard les emplacements de mémoire qu'ils utilisent à chaque fois qu'ils sont lancés dans une tentative de déjouer cette vulnérabilité.
  • L'Analyse des paquets Avec les pilotes appropriés, vous pouvez intercepter le jeu de données de paquets qui sont envoyés à ou récupéré à partir de votre carte réseau (pour les jeux joués en ligne). L'analyse de ces paquets peuvent révéler ce que votre client de jeu est de communiquer au serveur, qui habituellement tourne autour du joueur/les actions des ennemis.
  • Jeu de Scripts Certains jeux disposent d'une interface de script. Si disponible, c'est généralement la méthode la plus simple parce que c'est quelque chose que le logiciel de jeu est conçu pour faire (méthodes précédentes seraient tous généralement considérés comme "hacks"). Certains scripts doivent être exécutées en-jeu (par le biais d'une console ou par le biais d'un système de compléments) et certains peuvent être gérés par des programmes externes qui communiquent à travers le jeu via une publication de l'API.

Générer des événements d'entrée sur l'écran de jeu est généralement la tâche plus facile. Certaines méthodes sont les suivantes:

  • De mémoire de "Piquer" Similaire à la mémoire de surveillance de la section ci-dessus, la mémoire piquer, c'est l'acte d'écrire les données directement dans le jeu, l'espace mémoire. C'est la méthode utilisée par le Game Genie pour l'application de ses codes de triche. Compte tenu de la complexité des jeux modernes, c'est une tâche très difficile et peut potentiellement crash de l'ensemble du jeu.
  • L'entrée de l'Émulation "Faux" du clavier ou de la souris signaux peuvent être générés au lieu de direct, l'interaction humaine. Cela peut être fait dans le logiciel à l'aide d'outils tels que AutoIt. Matériel hacks peuvent également être utilisés, tels que les appareils qui se connectent à l'ordinateur en USB ou PS/2 port et le système à un clavier, mais au lieu de générer de faux keypress les événements en fonction de signaux reçus à partir de l'ordinateur (par exemple, sur un port série). Ces méthodes peut être difficile pour des jeux à détecter.
  • Jeu de Script Comme mentionné ci-dessus, certains jeux offrent des méthodes intégrées pour le contrôle par programmation, et en prenant avantage de ces outils est généralement la plus simple (mais peut-être pas le plus puissant) technique.

Notez que l'exécution d'un bot dans un jeu est généralement une violation du jeu, les Conditions D'Utilisation et que vous pouvez obtenir en suspension, interdit, ou pire. Dans certains pays, ceci peut entraîner des sanctions pénales. C'est un autre avantage pour l'utilisation d'un jeu de script intégré capacités; si il est conçu pour être une partie du logiciel de jeu, puis l'éditeur de jeu est probablement ne va pas vous interdire de l'utiliser.

10voto

Meinersbur Points 3511

Une fois, j'ai écrit un simple MMORPG bot par moi-même. J'ai utilisé AutoHotkey.

  • Il fournit beaucoup de méthodes pour simuler la saisie de l'utilisateur -- on va travailler. Il est fastidieux de programme de travail, l'un en C++ par soi-même (Ou de regarder dans AutoHotkey de la source).
  • Il permet d'interroger directement l'écran de pixel modèles, même les écrans de jeu (DirectX)

Donc, ce que j'ai fait était à la recherche de l'écran pour que le nom d'un ennemi (Stockées sur une photo avec le jeu de caractères) et le script clics quelques pixels en dessous de l'attaque. Il assure également le suivi de la barre de santé et les pots si elle est trop faible.

Très trival. Mais je sais que d'un bot WoW qui est aussi fait à l'aide de AutoHotkey. Et je vois beaucoup de gens ont eu la même idée (le Mien n'était pas pour WoW, mais probablement illégal, trop).

Des techniques plus avancées , ne pas capturer l'écran, mais directement lire le jeu de la mémoire. Vous avez à faire beaucoup de l'ingénierie inverse pour faire ce travail. Et il s'arrête de fonctionner quand le jeu est mis à jour.

3voto

dash-tom-bang Points 9384

Comment une seule personne à leur journée à jour?

C'est le genre de problème que l'AIs dans les jeux de résoudre.

Que voulez-vous faire de votre entité faire? Code de votre entité à le faire. Si vous voulez que votre monstre à chasser de l'avatar du joueur, le monstre a juste besoin de faire face à la avatar, puis déplacer vers elle. Lorsque ce monstre obtient à l'intérieur d'une distance appropriée, il peut choisir à mordre le joueur avatar, et ce choix peut être aussi simple que d' AmICloseEnough(monster, player); ou plus complexes, voire aléatoire.

Les robots dans un FPS sont difficiles à obtenir car il est facile de les rendre parfait, mais pas si facile de leur faire plaisir. E. g. ils savent toujours exactement là où le joueur est (gPlayer.GetPosition()) de sorte qu'il est facile de tirer sur le joueur dans la tête à chaque fois. Il faut un peu de "l'art" de faire le bot se déplacer comme un humain le ferait.

0voto

BRampersad Points 582

Cela s'appelle l'IA (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 bot FPS fonctionnerait en obtenant les coordonnées du corps de votre joueur et en réglant le pistolet de votre bot ennemi pour viser cette coordonnée et commencer à tirer lorsqu'il se trouve dans une certaine plage.

0voto

dash-tom-bang Points 9384

Pour les robots de style FPS, vous pouvez jeter un œil au Kit de développement Unreal. Si je comprends bien, cela a obtenu une grande partie du code source du jeu.

http://udn.epicgames.com/Three/DevelopmentKitHome.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X