¿Robots de Videojuegos? [cerrado]


Algo que siempre me he preguntado, especialmente desde que me inspiró a empezar a programar cuando era un niño, era cómo funcionan los robots de videojuegos? Estoy seguro de que hay muchos métodos diferentes, pero ¿qué pasa con la automatización para MMORPG? ¿O incluso bots tipo FPS?

Estoy hablando de robots de automatización hechos por jugadores.

Author: Earlz, 2010-04-30

7 answers

Para "botar" un juego, necesitas ser capaz de hacer dos cosas programáticamente: detectar lo que está pasando en el juego, y proporcionar entrada al juego.

Detectar lo que está pasando en el juego tiende a ser el más difícil de los dos. Algunos métodos para hacer esto son:

  • Raspado de pantalla Esta técnica captura la imagen en la pantalla y la analiza, buscando cosas como enemigos, estado del jugador, power-ups, mensajes del juego, relojes de tiempo, etc. Esto tiende a ser un método particularmente difícil. OCR Las técnicas se pueden utilizar para procesar el texto, pero si el texto se escribe en la parte superior del mundo del juego (en lugar de en un elemento de la interfaz de usuario con un fondo sólido), el telón de fondo siempre cambiante puede hacer que sea difícil obtener resultados precisos y consistentes. Encontrar objetos sin texto en la pantalla puede ser aún más difícil, especialmente en mundos 3D, debido a las muchas posiciones y orientaciones diferentes en las que un solo objeto puede existir.
  • Audio Cues En algunos juegos, las acciones y eventos están acompañados por efectos de sonido únicos. Es posible detectar estos eventos monitoreando la salida de audio del juego y comparándola con una grabación del efecto de sonido asociado. Algunos juegos permiten al jugador proporcionar sus propios efectos de sonido para eventos, lo que permite el uso de efectos de sonido que están diseñados para ser fáciles de escuchar y filtrar.
  • Monitoreo de memoria Si el funcionamiento interno del juego está bien entendido, entonces puede monitorear el estado de un juego inspeccionando el espacio de memoria del juego. Algunas herramientas de trucos para sistemas de consola (como Game Genie) usan este método. Al detectar qué memoria actualiza el juego, es posible detectar lo que está haciendo el juego. Algunos juegos aleatorizan las ubicaciones de memoria que utilizan cada vez que se lanzan en un intento de frustrar esta vulnerabilidad.
  • Análisis de paquetes Con los controladores apropiados, puede interceptar los datos del juego paquetes a medida que se envían o se recuperan de su tarjeta de red (para juegos jugados en línea). El análisis de estos paquetes puede revelar lo que su cliente de juego está comunicando al servidor, que generalmente gira en torno a las acciones del jugador/enemigo.
  • Scripting de juegos Algunos juegos tienen una interfaz de scripting integrada. Si está disponible, este es generalmente el método más fácil porque es algo para lo que el software del juego está diseñado (los métodos anteriores normalmente contarían como "hackear"). Algunos scripts deben ejecutarse en el juego (a través de una consola o a través de un sistema de complementos) y algunos pueden ser ejecutados por programas externos que se comunican a través del juego a través de una API publicada.

Generar eventos de entrada de nuevo en el juego es normalmente la tarea más fácil. Algunos métodos incluyen:

  • Memory "Poking" Similar a la sección de monitoreo de memoria anterior, memory poking es el acto de escribir datos directamente en el espacio de memoria del juego. Este es el método utilizado por el Genio del juego para la aplicación de sus códigos de trucos. Dada la complejidad de los juegos modernos, esta es una tarea muy difícil y potencialmente puede bloquear todo el juego.
  • Emulación de entrada Se pueden generar señales "falsas" de teclado o ratón en lugar de interacción humana directa. Esto se puede hacer en software utilizando herramientas como AutoIt. También se pueden usar hacks de hardware, como dispositivos que se conectan al puerto USB o PS/2 de la computadora y parecen ser un teclado para el sistema, pero en su lugar, genere eventos de pulsación de teclas falsos basados en señales recibidas desde el ordenador (por ejemplo, a través de un puerto serie). Estos métodos pueden ser más difíciles de detectar para los juegos.
  • Game Scripting Como se mencionó anteriormente, algunos juegos proporcionan métodos integrados para controlarlo mediante programación, y aprovechar esas herramientas suele ser la técnica más fácil (pero quizás no la más poderosa).

Tenga en cuenta que ejecutar un 'bot' en un juego suele ser una violación del Términos de Uso y puede conseguir que se suspenda, baneado, o peor. En algunas jurisdicciones, esto puede conllevar sanciones penales. Esta es otra ventaja para usar las capacidades de scripting integradas de un juego; si está diseñado para ser parte del software del juego, entonces el editor del juego probablemente no te prohibirá usarlo.

 44
Author: bta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-29 23:02:53

Una vez escribí un simple bot MMORPG por mí mismo. Usé AutoHotkey .

  • Proporciona muchos métodos para simular la entrada del usuario one uno funcionará. Es tedioso programar uno que funcione en C++ por uno mismo (O mirar el código fuente de AutoHotkey).
  • Puede buscar directamente en la pantalla patrones de píxeles, incluso pantallas de juego (DirectX)

Así que lo que hice fue buscar en la pantalla el nombre de un enemigo (Almacenado como una imagen con la fuente del juego) y el script hace clic en un pocos píxeles por debajo de él para atacar. También rastrea la barra de salud y las macetas si está demasiado baja.

Muy trival. Pero sé de un bot WoW que también se hace usando AutoHotkey. Y yo ver muchas otras personas tenían la misma idea (La mía no era para WoW, pero probablemente ilegal, también).

Las técnicas más avanzadas no capturan la pantalla, sino que directamente leen la memoria del juego. Tienes que hacer mucha ingeniería inversa para que esto funcione. Y deja de funcionar cuando el juego se actualiza.

 11
Author: Meinersbur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-29 22:16:47

¿Cómo va una persona individual sobre su día a día?

Este es un tipo de problema que las AIS en los juegos resuelven.

¿Qué quieres que haga tu entidad? Codifica tu entidad para hacer eso. Si quieres que tu monstruo persiga al avatar del jugador, el monstruo solo tiene que enfrentarse al avatar y luego moverse hacia él. Cuando ese monstruo se encuentra a una distancia adecuada, puede elegir morder al avatar del jugador, y esta elección puede ser tan simple como AmICloseEnough(monster, player); o más compleja o incluso aleatorio.

Los bots en un FPS son difíciles de hacer bien porque es fácil hacerlos perfectos, pero no tan fácil hacerlos divertidos. Por ejemplo, siempre saben exactamente dónde está el jugador (gPlayer.GetPosition()), por lo que es fácil dispararle en la cabeza cada vez. Se necesita un poco de "arte" para hacer que el robot se mueva como lo haría un humano.

 5
Author: dash-tom-bang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-29 22:12:37

Se llama IA (inteligencia artificial) y realmente no es tan difícil de replicar, un conjunto de reglas y comandos en el lenguaje de programación de su juego hará el truco. Por ejemplo, un bot FPS funcionaría obteniendo las coordenadas del cuerpo de tu jugador y configurando el arma de tu bot enemigo para que apunte a esa coordenada y comience a disparar cuando esté en un rango determinado.

 0
Author: BRampersad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-29 21:57:05

Para los bots de estilo FPS, puedes echar un vistazo al Kit de Desarrollo Unreal. Según tengo entendido, esto tiene mucho del código fuente real del juego.

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

 0
Author: dash-tom-bang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-29 23:28:26

Bta dio una muy buena respuesta. Solo quería añadir diciendo que los diferentes métodos son sospechables a diferentes medios de detección por la compañía de juegos. La piratería en el cliente del juego a través de monitoreo de memoria o análisis de paquetes generalmente es más fácil de detectar. Generalmente no lo recomiendo ya que puedes ser atrapado muy fácilmente.

El raspado de pantalla utilizado con la emulación de entrada es generalmente la forma más segura de botar un juego y no ser atrapado. Muchas personas, (yo incluido) han sido haciéndolo durante años sin problemas.

Además, para agregar un paso adicional entre detectar lo que está pasando en el juego y proporcionar entrada, algunos juegos requieren un cálculo extenso antes de que pueda decidir qué tipo de entrada proporcionar al juego. Por ejemplo, había un juego en el que tenía que calcular el número de barcos a enviar cuando atacaba al enemigo, y esto se basaba en el número de barcos que tenía, el tipo de barcos, y quién y qué tipo de enemigo era. El cálculo es generalmente la parte "fácil" ya que se puede hacer generalmente en casi cualquier lenguaje de programación.

 0
Author: Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-26 12:09:15

Como veo, los bots son verdaderos asesinos en varios juegos / industria del juego. Los hackers usan bots para jugar en su nombre y esto representa un factor de confianza serio para otros humanos que no se meten en malas prácticas. Como Ryan mencionó, los bots más inteligentes usan raspado de pantalla, pero no estoy de acuerdo con su punto de que los bots de raspado de pantalla no pueden ser capturados. Hay varios servicios de prevención de raspado de pantalla que incluyen ShieldSquare.

Descargo de responsabilidad: Soy uno de los cofundadores de ShieldSquare

 -1
Author: Vasanth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-03 16:06:27