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.
- ¿Qué es el algoritmo Twofish?
- Si dos cadenas de longitud desigual se generan por el mismo patrón, ¿cómo se relacionan sus complejidades de Kolmogorov?
- ¿Qué es una explicación intuitiva de inserción en un árbol AVL?
- ¿Por qué el algoritmo ikj es más rápido que el algoritmo ijk para la multiplicación de matrices?
- ¿Por qué no hablamos de O grande para algoritmos de aprendizaje automático?
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:
- 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.
- 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.