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!
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?
fuente