¿Cómo se programan y hacen los bots del juego (creados por jugadores) para conectarse con el juego y controlarlo?

Los bots se controlan con inteligencia artificial o aprendizaje automático.

Nunca antes había hecho un sistema de aprendizaje automático, pero he hecho algunos sistemas de IA.

El enfoque que utilicé implementa una máquina de estado finito: Wikipedia.

Déjame explicarte la forma en que funciona:

Tienes una serie de estados en los que puede residir un actor o “robot” de IA. En informática, tratamos de modelar nuestros sistemas tan estrechamente como “cómo funcionan las cosas” en realidad. State Machines nos permite pasar de un lenguaje comprensible para humanos a un lenguaje de computadora de una manera realmente elegante. Así que explicaré el flujo de una máquina de estado AI en el contexto de un juego en el que he estado trabajando, donde hay “atacantes cuerpo a cuerpo”

Aquí hay una imagen del diagrama de flujo que modela mi atacante cuerpo a cuerpo:

Si no tienes idea de cómo interpretar esto, te lo explicaré.

Las flechas que conducen de estado a estado representan “transiciones” entre estados. Las transiciones son esencialmente condiciones que se cumplen para pasar de un estado a otro, como “estar al lado de un enemigo” o “encontrar un buen lugar para moverse”. Entonces, el texto en las flechas son aquellas condiciones que deben existir para moverse al estado al que apunta la flecha.

Los cuadros cuadrados son estados que pueden producir algún tipo de “Acción”. Las acciones son generalmente cosas que se manifiestan visualmente en el mundo exterior, como el movimiento o el ataque. Cuando la máquina de IA está en ese estado y la mecánica del juego le pide al actor que elija una acción, el actor elige la acción señalada en el diagrama.

Las cajas en forma de cinta representan lo que llamé estados “transitorios”. Estos son estados en los que el actor realiza cálculos pesados ​​para tomar alguna decisión. Podrías poner toda esa lógica en una transición, pero ralentizaría el juego. Poner la lógica en un estado permite que la lógica sea multiproceso más fácilmente.

Tenga en cuenta que hay infinitas formas de hacer “bots” en su juego. Elegí este método porque era el más fácil de entender para mi mente.

EDITAR:

Me di cuenta de que entendí mal el término “bot” en la pregunta, como una entidad de IA en un juego que usted programó. Sin embargo, creo que puede haber sido “bot”, lo que significa esto:

Código AI / Machine Learning que se conecta a un juego existente, para controlar la perspectiva del jugador.

^ Hacer esto es mucho más difícil. Aún tendría que hacer toda la codificación AI descrita anteriormente descrita en este problema, o alguna otra solución. Además, tiene el trabajo de hackear su cliente de juego (descompilar el código y reconstruirlo a su manera), para que pueda hacer dos cosas, relacionadas con la Entrada / Salida a su sistema de IA:

  1. Burlarse de la entrada del jugador de alguna manera. En lugar de presionar “w” para mover el reproductor, puede llamar a alguna función en su código que equivale a presionar “w”. Nunca he hecho algo así antes, pero estoy seguro de que es posible.
  2. Obtenga el estado del juego para que pueda expresar las condiciones en sus transiciones. Por ejemplo, supongamos que tiene un estado de “ataque” y “retirada”, y una condición de transición que va del primero al segundo, que es “Baja en salud”. Deberías poder consultar el estado del juego y saber que tu jugador tiene “poca salud”.

En última instancia, es la misma expresión exacta que un actor de ai diseñado en el juego, excepto que los métodos para realizar acciones y obtener el estado actual del juego son mucho más desordenados.

EDITAR pt 2:

Pensar más en esto, que es muy fascinante, depende de cómo se construyó el juego, es posible que pueda tomar componentes de IA / módulos de código que ya están en el juego, que se utilizan para controlar mobs, y usarlos como punto de partida para tu código para controlar al jugador. Es un gran “si”, pero puede reducir su tiempo de desarrollo bastante.

More Interesting

¿Cuál es un buen algoritmo para priorizar mensajes DENTRO de su bandeja de entrada?

Si tengo una matriz compuesta de cadenas de dígitos y guiones, ¿cómo puedo usar Javascript para agregar la suma de cada dígito mientras omito los guiones?

Quiero construir una casa de piedra óptima, usando una computadora para decidir la disposición de las piedras. ¿Cómo podría funcionar esto?

¿Cuál es la diferencia entre la implementación de HPLC y FTIR?

¿Cuáles son los ejemplos prácticos de algoritmos de clasificación? He oído hablar de la clasificación de burbujas, la clasificación rápida y la clasificación por inserción. ¿Cuáles son los ejemplos prácticos de estos algoritmos? ¿Para qué se usan y dónde son necesarios en los sistemas de software?

¿Por qué son tan importantes los algoritmos?

¿Qué tipo de algoritmos usa Android para mezclar tu música?

¿Cuál es el número total de rompecabezas de sudoku posibles?

¿Cómo comparamos la complejidad del espacio y el tiempo como O (n ^ 2) tiempo versus O (n) espacio y O (n) tiempo?

¿Qué enfoque debería usarse para resolver esta pregunta sobre hackerrank?

¿Hay algún algoritmo de aprendizaje automático para el que pones una línea y devuelve la línea más cercana en un conjunto de datos?

¿Cuál es la mejor manera de aprender el algoritmo KMP para poder recordarlo fácilmente?

¿Por qué la clasificación de montón se considera un algoritmo in situ?

¿Cuáles son los beneficios de usar la recursividad de la cola? ¿Es siempre posible?

¿Qué debe aprender primero, algoritmos y DS o un lenguaje de programación?