Estoy diseñando un juego de estrategia en tiempo real en el que la IA será responsable de controlar un gran número de unidades (posiblemente más de 1000) en un gran mapa hexagonal.Algoritmos para el juego de estrategia en tiempo real AI
Una unidad tiene una serie de puntos de acción que pueden gastarse en movimiento, atacando unidades enemigas o realizando diversas acciones especiales (por ejemplo, construyendo unidades nuevas). Por ejemplo, un tanque con 5 puntos de acción podría gastar 3 en movimiento y luego 2 en disparar a un enemigo dentro del alcance. Diferentes unidades tienen diferentes costos para diferentes acciones, etc.
algunas notas adicionales:
- La salida de la AI es un "comando" a cualquier unidad dada
- puntos de acción se asignan al comienzo de una período de tiempo, pero puede gastarse en cualquier punto dentro del período de tiempo (esto es para permitir juegos en tiempo real en modo multijugador). Por lo tanto, "no hacer nada y guardar los puntos de acción para más tarde" es una táctica potencialmente válida (por ejemplo, una torreta que no se puede mover esperando que un enemigo entre dentro del alcance)
- El juego se actualiza en tiempo real, pero la IA puede obtener un imagen consistente del estado del juego en cualquier momento (gracias a que el estado del juego es una de las estructuras de datos persistentes de Clojure)
- No espero un comportamiento "óptimo", simplemente algo que no es obviamente estúpido y proporciona una diversión/desafío razonable para jugar contra
¿Qué se puede recomendar en términos de algoritmos/enfoques específicos que permitan el equilibrio correcto entre eficiencia y comportamiento razonablemente inteligente?
¿Esto es en tiempo real? ¿Usar puntos de acción para mover y disparar suena más por turnos?En un juego en tiempo real, esperaría escuchar acerca de la velocidad de movimiento y la velocidad de disparo. ¿Cómo se "recargan" los puntos de acción? –
El diseño de los puntos de acceso está más basado en turnos, pero estoy tratando de garantizar que el juego se pueda ejecutar en tiempo real para que pueda funcionar en un contexto de varios jugadores. El concepto actual con el que estoy jugando es que los puntos de acción se actualizan en un intervalo regular – mikera
OK, ahora tengo una versión de demostración ejecutándose en Amazon si alguien está interesado: http://184.73.157.186/ – mikera