Phillip ya dio una gran visión general de cómo funcionan la mayoría de los bots, pero solo quería cubrir las cosas con un poco más de detalle, ya que tengo un poco de experiencia personal desarrollando en o para todos los tipos de bots que cubrió.
En Runescape, había un gran proyecto (RSBot) que copiaba el contenido de la memoria del cliente Runescape en su memoria local, donde luego podía ver todo el estado del juego sin riesgo de que el cliente se pusiera al día. Se requirió un poco de ingeniería inversa para determinar dónde buscar en la memoria para encontrar los punteros a los datos, pero una vez que lo hicieron, expusieron una API para aprovechar la información. Sabría exactamente en qué lugar del mundo obtendría las coordenadas de un objeto y luego las transformaría con la matriz de transformación de la cámara para obtener la posición en pantalla. Las máscaras de impacto también eran legibles, por lo que era trivial determinar exactamente en qué rango mover el mouse para obtener el resultado deseado.
El bot proporcionó un montón de información de depuración, como anotaciones que le indicaron al desarrollador qué coordenadas de mosaico están dónde, qué ID tiene este objeto, qué ID pertenece a un elemento determinado, etc. Esta información podría usarse para hacer bots. El proceso real de hacer los guiones de bot fue realmente bastante simple. El marco proporcionó muchas funciones de utilidad, como move_to(world_coordinates)
o mouse_move(x,y)
que realizarían las acciones especificadas de una manera algo creíble (moviendo el mouse a lo largo de una spline aleatoria, moviéndose repetidamente a través del minimapa y la pantalla, y así sucesivamente)
También en Runescape, tiene la opción de reducir drásticamente la calidad de los gráficos. En realidad, fue bastante fácil hacer ciertos tipos de bots filmando la pantalla y aplicando algunos conceptos básicos de visión por computadora para construir un modelo del mundo. Hice un bot de maldición y un robot de fundición usando esta técnica, los cuales funcionaron bastante bien. Simplemente tomaría el marco, aumentaría la saturación tanto como pudiera y luego trataría de extraer patrones de él, lo que podría generar un mapa de probabilidad para las zonas de clic.
En el caso del bot maldito, el objetivo era un demonio menor, que es solo una cosa roja enorme, que es trivial de encontrar. En el caso del robot de fundición, buscaría un pequeño trapecio naranja rodeado de gris, y ese sería el horno. También trataría de encontrar una gran forma de "L" gris claro, que sería el escritorio del banco. Eso solo se hizo con reducción de escala y heurística básica. También podría orientarse con la práctica brújula al lado del minimapa, por lo que podría orientar la cámara en una posición más confiable para encontrar los objetos objetivo.
En varios juegos de Nexon, los servidores confían mucho en los clientes. Abusé de esto una tonelada en Maplestory modificando mapas para eliminar peligros o agregar deformaciones para que un bot no tenga que ser tan sofisticado. También monitorearía el tráfico hacia y desde el servidor para construir un modelo del mundo que luego podría usarse para encontrar y matar monstruos rápidamente.
Una vez que me di cuenta de que ya no jugaba MMO y simplemente los automaticé, decidí dejar de jugar por completo. Si no estuviera tan preocupado por exponerme legalmente, probablemente podría haber matado vendiendo bots MMO, pero realmente no quería ser demandado. ¡Es por eso que paso mi tiempo haciendo programación real en estos días!