Soy nuevo en la programación de juegos y estoy tratando de hacer un juego espacial 2D de arriba hacia abajo con 2 naves espaciales que luchan entre sí. Me está yendo bien con la nave espacial controlada por el usuario, pero no tengo idea de cómo comenzar a programar una IA. ¿Son ciertos métodos / patrones mejores para esta situación? ¿Por dónde empezaría?
58
Respuestas:
El patrón de estrategia es excelente para determinar qué hacer, pero no cuándo hacerlo. También necesitará usar Máquinas de estado finito para saber en qué estado se encuentra su IA y qué decisiones apropiadas están disponibles.
Una guía práctica para construir un juego completo AI: Volumen I
fuente
Si es la primera vez que desarrolla IA, no tiene que preocuparse por cosas como el patrón de estado, las matemáticas de comportamiento o incluso obtener un libro sobre el tema.
Literalmente puede salirse con la suya con algo como esto:
El aspecto principal de hacer que la IA sea correcta es pensar qué comportamientos desea que tenga el personaje y cómo se puede lograr de manera realista. Entonces, para un enemigo espacial básico, me imagino que las posibles acciones que podría llevar a cabo serían:
¿Y cuándo podrían suceder estas acciones?
Después de haber hecho esto debido al bajo número de "estados" en los que puede estar tu personaje, puedes usar una declaración if simple como la de arriba. Entonces, le recomendaría que observe los Comportamientos de dirección, ya que estos son comportamientos muy simples de implementar y pueden resultar en un movimiento realmente atractivo.
Puede encontrar más aquí: http://www.red3d.com/cwr/steer/
Y definitivamente recomendaría el libro de Mat Buckland Programming Game AI By Example , especialmente cuando está comenzando.
Cuando se sienta realmente cómodo con esto, le sugiero que mire los Patrones de Estado y Estrategia.
El punto es comenzar pequeño y simple. No se preocupe por todos estos términos que todo el mundo sigue hablando sobre FSM y patrones de diseño y lo que sea. Primero diseñe y cree, luego preocúpese por cómo puede mejorarlo utilizando los métodos o estándares existentes.
¡Espero que ayude!
fuente
Es posible que desee ver OpenSteer y la documentación de Comportamientos de dirección que lo acompaña. El código fuente no es de nivel principiante, pero los conceptos detrás de él deberían darle algunas buenas ideas.
fuente
Es posible que desee ver el patrón de diseño de la Estrategia . Esencialmente escriba las mismas estrategias básicas de cómo se comportarán los barcos:
Luego usará la lógica (máquinas de estado) para elegir entre estas estrategias. Por ejemplo: si los escudos de las naves han caído por debajo del 50%, huye del objetivo y avanza hacia potenciadores / objetos curativos, etc.
fuente
¿Puedo sugerirle que compre el libro Inteligencia artificial para juegos de Ian Millington, es excelente! :) http://www.ai4g.com/
El código fuente está en Github - licencia MIT.
Por supuesto, si no está usando C / C ++, entonces esto podría ser menos relevante.
Pero realmente una introducción increíble al mundo de la estupidez / inteligencia artificial.
Lo que necesitará de él son máquinas de dirección y de estado. Para principiantes.
fuente
Algunos consejos prácticos si elige máquinas de estado: tenga cuidado con el megaestado.
Es tentador tener un estado de "huir" que maneja establecer una posición para huir, establecer una alta velocidad objetivo, eliminar todos los objetivos, etc. máquina de estado que maneja la selección de una posición de destino, una que maneja armas, etc.
Esto puede parecer estúpido, ya que tendría que agregar estados de fuga a cada máquina individual, pero dado que está limitado a solo una o dos salidas, sus estados terminan siendo muy pequeños, por lo que esto no debería ser un problema.
Además, dado que cada control está ahora bajo control individual, puede terminar seleccionando una posición de objetivo de huida mientras el estado de ataque controla sus armas. Puede atacar a un enemigo mientras conserva la potencia del motor debido a una fuga de refrigerante. Puede conducir para evitar una colisión mientras sigue descargando contramedidas. Todo esto sería imposible con una sola máquina de estado que lo abarque todo.
fuente
Matemáticas conductuales para el juego AI
Agregar este libro a la lista de puntos de partida para aprender programación de IA. Con su enfoque en la implementación de observación y comportamiento en lugar de algoritmos de aplicación limitada, creo que es muy adecuado para la tarea.
fuente
Cómo crear IA es una pregunta difícil, porque consta de muchas partes:
Otros carteles sugirieron grandes libros y soy aficionado a AI4Games sugerido por jacmoe, aunque es bastante general en algunas partes (como muchos libros, lo que por supuesto es comprensible).
Por supuesto, cada tipo de juego tiene sus necesidades específicas, y los juegos arcade / shooter no necesitan arquitecturas complejas para admitir un juego interesante. Las librerías de dirección simples harán el trabajo como base de ese comportamiento, y luego agregará detalles para varios tipos de enemigos (algunos, disparan periódicamente, algunos disparan prediciendo el movimiento del jugador, algunos giran para enfrentar al enemigo, otros pueden coordinar sus ataques, etc.)
fuente
Piensa en lo que haces cuando juegas. Hazte algunas preguntas.
Luego, lo que hago es que la IA mire el campo de juego y haga una lista de posibles acciones o movimientos que la IA podría hacer en función de esas preguntas. Clasifico y clasifico estos movimientos con un "factor de inteligencia". Entonces, es tan simple como elegir y ejecutar un movimiento / acción basado en una combinación de aleatoriedad y cualquier nivel de dificultad que el jugador eligió al comienzo del juego.
Luego, después de 500 milisegundos, lo vuelvo a hacer.
No tiene habilidades de aprendizaje ni nada, pero con suficientes ajustes puede ser bastante convincente, lo que realmente importa
fuente