Haciendo una IA de juego 4X pasable

8

Estoy codificando un juego 4X bastante "simple" (si un juego 4X puede ser simple). Es de alcance independiente, y me pregunto si de todos modos se puede llegar a una IA pasable sin tener que pasar meses codificándola.

El juego tiene tres porciones principales de toma de decisiones; gasto de puntos de producción, gasto de puntos de movimiento y gasto de puntos tecnológicos (básicamente hay 3 'monedas' diferentes, la moneda no gastada al final del turno no se guarda)

  • Gastar puntos de producción
    • Mejora un planeta (aumenta su tecnología y producción)
    • Construir barcos (3 tipos)
  • Mueve barcos de planetas a planetas (cuestan puntos de movimiento)
    • Mover para atacar
    • Muévete para fortificar
  • Tecnología de investigación (puede investigar parcialmente una tecnología, es decir, como en Master of Orion)

El plan para mí en este momento es un enfoque de fuerza bruta. Básicamente hay 4 amplias opciones para el jugador:

  1. Actualizar planeta (s) a su producción y producción tecnológica

  2. Conquista tantos planetas como sea posible

  3. Asegura tantos planetas como sea posible

  4. Llegar a cierta tecnología lo antes posible

Para cada decisión, recorreré las posibles opciones y obtendré una puntuación; y luego la IA elegirá la decisión con el puntaje más alto. En este momento no tengo idea de cómo "mezclar decisiones". Es decir, por ejemplo, la IA desea actualizar y conquistar planetas al mismo tiempo. Supongo que puedo tener otra lógica que haga una optimización de la fuerza bruta en una combinación de esas 4 decisiones ...

Al menos, ese es mi plan si no puedo pensar en nada mejor. ¿Hay alguna forma más rápida de hacer una IA pasable? No necesito una muy buena, para rivalizar con Deep Blue o algo así, solo algo que tenga la ilusión de inteligencia.

Esta es la primera vez que hago una IA en esta escala, así que no me atrevo a probar algo demasiado grandioso también. Hasta ahora tengo experiencias con FSM, DFS, BFS y A *

Extrakun
fuente
2
La forma correcta de abordar este problema es investigarlo usted mismo. Implemente lo que describe y vea qué tan bien funciona. Entonces hazlo mejor. Una vez que crea que tiene un buen algoritmo, vuelva a implementar la IA para usar la nueva estructura. Sugeriría construir esto en un lenguaje de scripting como Lua, para que sea más fácil tirar el viejo código.
Nicol Bolas
Para aclarar, podría intentar implementar lo que tengo en mente. Me pregunto si hay otras formas de crear una IA además de min-maxing o el método tradicional de 'iterar y calcular la mejor puntuación'.
Extrakun

Respuestas:

4

Parece que podrías probar Minimax para "mezclar" tus decisiones. Hubo una charla en el Game AI Conf del año pasado por parte de los programadores detrás de Green Corp, y eso es lo que usaron para construir su IA. Les llevó mucho tiempo hacerlo bien, pero tienen un resultado decente.

Laurent Couvidou
fuente
1

Si es lo suficientemente bueno como para despertar interés (y tendrá que asumir que lo será, o puede dejarlo ahora mismo), y es compatible con la creación de redes, el mejor curso de acción para este tipo de cosas es:

  • lo construyó multijugador sin ninguna IA
  • Asegurarse de que todos los datos que se envían al cliente puedan ser fácilmente "entendidos" por una IA
  • cree una IA muy simple, que permita algún tipo de scripting o muchas opciones de configuración
  • Permitir a los jugadores modificar los scripts de IA, vincularlos al juego y dejar que la IA juegue a través de redes, como si fuera un jugador real

Al hacerlo, la parte difícil será permitir que la IA sea programada y utilizada de esta manera, y simplemente "externalizará" la optimización de IA real para los jugadores.

¡Esto no solo te dará una IA mucho mejor, sino que también agregará mucho valor al juego en sí!

o0 '.
fuente