Bot con el cual pretendo pasar el juego Enter The Gungeon.
- Se genera una pantalla virtual donde inicia el juego y enviar acciones.
- Se extraen capturas de pantallas.
- Diversos procesos independientes capturan diversas características
- Un proceso limpia posibles errores dado los valores en el tiempo
- Dado el estado actual generar una acción.
- La acción es enviada mediante la librería pyautogui.
Para evitar congelar la pantalla actual y facilitar la prueba del sistema se utiliza una pantalla virtual. Esto es posible mediante xvfb el cual permite generar pantallas virtuales. Luego manejando la variable de entorno DISPLAY se puede enviar procesos a esa pantalla. Es posible visualizar e interactuar con esta pantalla mediante vnc o dejarla en background para mayor desempeño.
Existen diversas formas de conseguir capturas de pantalla, pero la mayoría son demasiado lentas para esta aplicación. Por lo tanto fue necesario interactuar directamente con X11 mediante las librerías en C++. Mediante este método se logran extraccion de imagenes a tasa de 100 fps.
Para las características estáticas (vidas, balas, ubicación mira) se utilizan técnicas clásicas de procesos de imagenes. Se toma un trozo del patrón a buscar y luego se usa esta para convolucionar con la entrada, las áreas con respuesta mayor a 0.8 se consideran como candidatos.
Este método no funciona con los personajes los cuales tienen diversas animaciones. Para detectar a estos se utiliza una red convolucional entrenada para ubicar posibles enemigos. Mayores detalles en clf_images.
Para la rectificación en el tiempo se utiliza los valores en el tiempo y se utiliza RANSAC.
TODO