Juego complejo AI para juegos de estrategia por turnos

26

Estoy investigando un proyecto de juego de estrategia por turnos y estoy buscando buenos recursos sobre este tema. El juego es un juego de guerra típico en el que los países pueden luchar entre sí, desplegar unidades y hacer que estas unidades se muevan en un mapa de mosaico hexagonal, se ataquen entre sí, etc.

¡Estoy particularmente interesado en cómo se organiza la IA de Civilization V! Según Wikipedia, el juego usa cuatro sistemas diferentes de IA para diferentes capas de la IA del juego:

  • IA táctica controla unidades individuales
  • la IA operativa supervisa todo el frente de guerra
  • la IA estratégica gestiona todo el imperio
  • La gran IA estratégica establece objetivos a largo plazo y determina cómo ganar el juego

Conceptualmente, parece que tiene mucho sentido lograr una IA compleja y me da curiosidad saber cómo funcionan estos diferentes sistemas de IA (y funcionan juntos). La IA táctica es probablemente la más fácil de entender, ya que maneja la toma de decisiones para una sola unidad (mover, atacar, reparar, retirarse, etc.), pero creo que los otros sistemas de IA son donde realmente se pone interesante. Por ejemplo, ¿qué hace la IA operativa y cómo lo hace? Estoy seguro de que estos son los secretos mejor guardados de Firaxis Games, pero sería genial comenzar una discusión sobre esto para obtener más información al respecto.

Además, si alguien conoce buenos libros que manejen la IA del juego de estrategia por turnos, sería genial saberlo. Obviamente este es un tema escasamente sembrado en la web. Obtuve "Programming Game AI by Example" (Ejemplo de programación de IA de juegos), pero ese libro trata más sobre la IA de comportamiento de agente único que la IA orientada a objetivos de alto nivel.

BádmintonGato
fuente

Respuestas:

19

Si bien estoy de acuerdo con el párrafo inicial de DampeS8N (es decir, la IA del juego solo debe ser lo suficientemente inteligente como para hacer que el jugador piense que es inteligente), creo que esta pregunta necesita un poco más de elaboración. Las estructuras de datos en uso podrían ser FSM para todos los niveles, pero eso realmente no responde a la pregunta de cómo funcionan los sistemas individuales.

Descargo de responsabilidad: apenas he jugado los juegos de Civilization, por lo que mi comprensión del juego es limitada. Si hay algún error obvio, me disculpo. Por favor corrígeme, y con gusto lo editaré.

Tomaré citas del artículo original de IGN .

1. IA táctica

En el nivel más bajo, la IA táctica usa las fuerzas disponibles para ganar una batalla a escala local.

Esta es probablemente la parte más estándar del subsistema. Hay formas ilimitadas de llevar a cabo esto mediante el uso de FSM, árboles de comportamiento (o incluso realizar acciones aleatorias, dependiendo de la dificultad de la IA).

Sin embargo, dado que este es un juego basado en turnos, similar a Risk, creo que lo más probable es que a cada unidad se le asigne un puntaje. Luego hay multiplicadores adjuntos a este puntaje dependiendo de diferentes variables (lealtades, bonificaciones de terreno, etc.).

El resultado luego se calcula de la siguiente manera:

If (AI unit score >> (much greater) enemy unit score) Then Completely destroy enemy unit
If (AI unit score > (somewhat greater) enemy unit score) Then Partially destroy enemy unit
If (AI unit score < (somewhat less) enemy unit score) Then Partially destroy AI unit
If (AI unit score << (much less) enemy unit score) Then Completely destroy AI unit

Tiene sentido que la IA intente maximizar este puntaje cuando esté en batalla.

Agregue un valor épsilon (por ejemplo, una pequeña posibilidad aleatoria de fracaso / éxito) y obtendrá una IA bastante decente (nadie quiere un oponente perfecto, ¡eso no es divertido!).

2. IA operacional

Un paso más allá de eso, la IA operativa elige las batallas para luchar y se asegura de que las fuerzas necesarias estén disponibles.

Creo que hay un par de puntos en esto:

  • Evaluar la fuerza actual
  • Refuerzo de unidades
  • Evaluar qué peleas elegir / evitar

Evaluación de la fuerza actual : esto solo me grita Mapa de influencia . Se puede representar fácilmente en una cuadrícula hexadecimal. Como este subsistema está orientado al combate, los valores de influencia pueden ser representativos de los valores de fuerza de cada unidad en la vecindad. Si tienes un ejército masivo enfocado en una pequeña área de hexágonos, el valor de influencia será enorme y la IA operativa lo tendrá en cuenta al evaluar las peleas para elegir. No olvides que también se calcularán los valores de influencia de los ejércitos enemigos. Esto permite que la IA operativa prediga posibles amenazas entrantes.

Refuerzos de unidades : al recibir información sobre las facciones opuestas del mapa de influencia, la IA puede determinar qué unidades están bajo mayor amenaza. La IA puede emitir una orden para cerrar las unidades para ir y reforzar a las partes amenazadas.

Evaluar qué peleas elegir / evitar : aquí pueden ocurrir un par de situaciones. Si la IA detecta que una unidad está amenazada Y no hay unidades cercanas para ayudarla, podría a) decidir sacrificar la unidad (si son solo infantería baja, en lugar de un general insustituible, por ejemplo) o b) Ordenar la unidad a retirarse. Por el contrario, si la IA detecta una unidad enemiga débil cerca de un ejército, podría ordenar que las unidades eliminen a este enemigo.

Aquí hay un documento decente que hace uso de mapas de influencia en los juegos de estrategia en tiempo real.

3. IA estratégica

Moviéndose aún más alto, la IA estratégica gestiona el imperio en su conjunto, centrándose en dónde construir ciudades y qué hacer con ellas.

"¿Dónde debería construir una ciudad?" solo suena como una evaluación de posición. Los programas de ajedrez y otros juegos lo usan para determinar la conveniencia de una posición determinada. Por ejemplo:

Hex. A: Cerca de los recursos, en terreno alto, cerca de los aliados, cerca del enemigo. Hex. B: Lejos de los recursos, en terreno de nivel medio, distancia media de los aliados, lejos del enemigo.

La función de evaluación de posición podría tomar estos tres factores así:

Score = Proximity to resources (closer yields a higher score) + 
terrain elevation (higher yields higher score) + 
proximity to allies (closer is better) + 
proximity to enemies (farther is better)

Y el hexágono que tenga la puntuación más alta, será donde se construye la ciudad. Puede encontrar más información sobre las funciones de evaluación aquí .

Creo que la IA estratégica también tiene un montón de estrategias pseudo-prebakeadas en el juego, dependiendo del tipo de victoria que busca la IA.

4. Gran IA estratégica

En la parte superior de la escalera está la gran IA estratégica, que decide cómo ganar el juego.

Creo que este es probablemente el más simple del grupo, y da la impresión de que es más impresionante de lo que realmente es. En un juego como este, solo habrá un número finito de tipos de victoria. El artículo menciona una victoria de Conquista, suponiendo que también hay victorias de la Alianza, etc., podría ser tan simple como elegir aleatoriamente uno de los tipos y luego pasarlo a los otros sistemas.

EDITAR: Por supuesto, como lo señala DampeS8N, el tipo de mapa podría dictar la mejor condición de victoria, en cuyo caso podría ser codificado por los diseñadores o algún tipo de función de evaluación que tenga en cuenta diferentes variables.

Resumen
Creo que lo que es realmente importante tener en cuenta sobre este tipo de sistema es que la forma en que se distribuyen los subsistemas, en realidad no es necesario que se comuniquen mucho entre sí. Parece ser una arquitectura de arriba hacia abajo con los componentes ligeramente acoplados. Desde el punto de vista del diseño técnico, es limpio y flexible, y probablemente se inspira en el comportamiento emergente y / o la arquitectura de subsunción .

Realmente me disculpo por la duración de esta publicación, se convirtió en una especie de bestia :(

De cualquier manera, ¡espero que ayude!

Ray Dey
fuente
2
"Creo que este es probablemente el más simple del grupo, y da la impresión de que es más impresionante de lo que realmente es". No estaría muy seguro. Hay una diferencia entre simplemente decidir ir por una victoria de conquista y decidir a quién declararle la guerra, si estamos demasiado extendidos y necesitamos demandar por la paz, qué objetivo es el más débil para atacar, qué unidades necesitamos construir, adquirir los recursos estratégicos correctos para fortalecer a nuestro ejército, encontrar una manera de hacer que dos enemigos luchen entre sí, etc. Esta fase es mucho más complicada de lo que le das crédito.
Nicol Bolas
1
Wow, y pensé que mi respuesta se estaba haciendo un poco larga. Jajaja Buen espectaculo.
DampeS8N
1
Una cosa que vale la pena señalar es que Civ no tiene condiciones de victoria simples. Hay muchas formas de ganar. Construyendo maravillas, avanzando la ciencia, conquista, diplomática, etc. Elegir cuál elegir es a menudo muy difícil y puede cambiar según las condiciones del mapa. Puede descubrir, por ejemplo, que alguien que acaba de conocer está muy por delante de usted en ciencia, y tendrá que abandonar ese camino y conformarse con uno nuevo. A menudo, el éxito se reduce a mantener sus opciones abiertas todo el tiempo que pueda.
DampeS8N
@NicolBolas puede muy bien ser más complejo que eso, pero todos los puntos que ha hecho parecen ser responsabilidades para los niveles más bajos de la IA. Decidir a quién declarar la guerra -> Operativo. Qué objetivo es el más débil para atacar -> Operativo / Táctico. Adquisición de recursos adecuados -> Operativo / Estratégico. Esto se adivina por completo, pero tendría sentido que los sistemas inferiores sean responsables de las estrategias específicas para garantizar el nivel más bajo de acoplamiento.
Ray Dey
1
@RayDey: El nivel más alto de IA necesita involucrarse en cosas como la adquisición de recursos, porque necesita decidir cómo obtenerlo. La diplomacia podría conseguirlo. Expandir el recurso podría obtenerlo. El nivel operacional no es el lugar adecuado para decidir si uno debería pelear por él en lugar de otras tácticas. El acoplamiento es una necesidad para un juego como Civilization; todo afecta a todo lo demás en ese juego. No puedes tener una IA efectiva que tome decisiones sin mucho acoplamiento. Aunque eso podría explicar por qué la IA de Civ V es ... no particularmente brillante;)
Nicol Bolas
9

En general, la IA en los juegos no debe considerarse como "compleja", se trata de obtener lo que desea con el menor esfuerzo posible. El nombre del juego es Emergencia.

En este caso, su conceptualización fundamental es incorrecta. Estos 4 sistemas no necesitan trabajar juntos en absoluto. Solo necesitan verse como lo hacen. También pueden estar mucho más despojados de lo que crees que deben ser.

También has invertido el orden de dificultad. El componente más difícil de Civ AI es la IA táctica, seguida de cerca por la Operativa. La estrategia es probablemente muy simple, y la gran IA probablemente sea aún más simple.

La comunicación entre componentes es más como un sistema de gruñidos y menos como una comunicación real. De nivel alto a nivel bajo se vería así:

Gran IA

evaluar el estado del mapa Dado el conocimiento que tiene la IA (que podría ser todo o solo lo que tendría si fuera un jugador), decide qué objetivo final es más rápido de alcanzar. Es probable que sea una máquina de estado finito que procese algunos números y elija un objetivo. Posiblemente sea algo más exótico; un algoritmo genético o posiblemente un doohickey basado en bayesiano . Luego gruñe un mensaje como "más ciencia".

Strat AI

luego analiza lo que tiene disponible para trabajar usando gran parte de la misma información. Trata de alcanzar ese objetivo general, pero también se preocupa por aspectos más detallados del juego. ¿Estoy en guerra? ¿Tengo gente hambrienta? pronto. Probablemente también sea una máquina de estado finito , posiblemente Fuzzy Logic (que en realidad es solo una evolución en un FSM). Supongamos que es un simple FSM. Hará las preguntas anteriores en un orden en el que, dados ciertos criterios, decidirá que diferentes cosas deben suceder en esta ronda. Estoy en guerra, asigno dinero para entrenar soldados. Mi gente se muere de hambre, construye un granero aquí en lugar de construir algo científico.

Elegir qué unidades construir puede ser parte de Strat AI u Op AI dependiendo de cómo estamos dividiendo las cosas.

Op AI

tomará las unidades disponibles y las asignará para moverse a diferentes frentes de guerra. Decidirá la forma general del conflicto, donde las nuevas unidades se dirigirán una vez que se desplieguen. Probablemente también sea un FSM. Puede notar que el enemigo en el Frente A está atacando con unidades débiles contra la Unidad B, y enviará más Unidades B allí, en lugar de al otro Frente que es fuerte contra la Unidad B. Emitirá órdenes generales a las unidades en general. Ataque a voluntad. Retirada. Pronto.

IA táctica

es específico de la unidad Cada tipo de unidad reaccionará de manera diferente al orden general. Una unidad destinada al suicidio puede ignorar una orden de retirada. Las unidades que son wusses pueden retirarse incluso cuando se les dice que luchen. Civ es típicamente muy ligero en este tipo de cosas. Generalmente todas las unidades en Civ siguen sus órdenes. Dado el orden mayor en el que se encuentran, son (¿ven un patrón aquí?) Un FSM. ¿Estoy herido? Debería retroceder y sanar. ¿Tengo alguna ventaja en esta ubicación? Ataque. ¿Estoy demasiado cerca del ataque? Apártate. Y la complejidad de este FSM no necesita ser mucho más que esas 3 cosas para ser efectivo y convincente como inteligente.

¿Se puede mejorar esto?

Sí, por supuesto. La pregunta es si los jugadores lo notarán. Y el 99% de las veces no lo harán.

Ahora, todo esto es una toma de decisiones AI. Hay otros subsistemas de IA en juego aquí. Existe A * o algún otro algoritmo de búsqueda de ruta que permite a las unidades encontrar la ruta más corta a una ubicación. Existen algoritmos para encontrar la mejor ubicación para comenzar nuevas ciudades. Pronto. A menudo se agrupan con IA, y a menudo son realmente más complejas que la parte 'pensante' de la IA. De hecho, el código para encontrar las respuestas a las preguntas que el FSM necesita hacer es a menudo órdenes de magnitud más complejas que el FSM mismo. ¿Cómo exactamente uno decide eso?

DampeS8N
fuente
Doohicky basado en Bayesian - impresionante
Brian Broom