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!