Razón Artificial

La ciencia y el arte de crear videojuegos

Inteligencia Artificial en un Juego de Mesa

Escrito por adrigm el 8 de enero de 2010 en Inteligencia Artificial | 3 Comentarios.

Cualquiera nuevo en el campo de la Inteligencia Artificial con un interés en los juegos debe intentar crear un simple juego de mesa con un oponente IA. Generalmente la mejor parte de los juegos de mesa son las reglas sencillas – esto significa menos tiempo implementando el juego, y más tiempo en la IA. Aún más, los juegos de mesa son sencillos de mostrar en pantalla, sin conocimientos especializados de motores 3D o APIs gráficas.

Este artículo detallará algunas técnicas que pueden ser aplicadas a juegos de mesa sencillos.

Mapa de Influencia

Una técnica popular usada habitualmente es el mapa de influencia. A pesar del elaborado nombre es sorprendentemente simple: una matriz del mismo tamaño que el tablero de juego para almacenar la “utilidad” de cada posición correspondiente del tablero – a mayor el valor, mayor es la posibilidad de que el agente mueva a esa casilla. Por ejemplo, tomemos el sencillo juego del tres en raya (tic-tac-toe). Imagina el siguiente escenario:

 [x][ ][ ]
 [ ][O][ ]
 [x][O][ ]

Con la computadora jugando X, y le toca mover a X, y el mapa de influencia puede ser algo como lo siguiente:

 [0][5][0]
 [9][0][0]
 [0][0][0]

El programa moverá a 2,1 (el valor más alto) y ganará el juego. Ten en cuenta que si esa oportunidad no existiera para el ordenador, entonces debería mover a 1,2 y bloquear la victoria del oponente. Para un pequeño tablero como el del tres en raya no es imprescindible, pero para juegos con tableros mucho mayores (como Virus (15×15, 255 posiciones) o Pente (19×19, 361 posiciones)) los mapas de influencia pueden ser indispensables para controlar el mayor número de posiciones.

Entonces, ¿cómo evaluamos cada posición?

Heurísticas

El término heurística es esencialmente otro nombre para ‘reglas’, y son estas heurísticas las que harán efectivo o no a tu agente de IA. Primero, deberías de limitar tus reglas del juego de mesa a un par de heurísticas que puedan ser fácilmente implementadas. Por ejemplo, las reglas de Pente dictan que ganas si colocas 5 fichas en línea, o consigues 5 capturas. Por lo tanto, algunas posibles heurísticas son las que siguen:

  • Buscar 4 fichas en líneas
  • Buscar 3 fichas en líneas
  • Buscar 2 fichas en líneas
  • Buscar oportunidades de captura

Ahora obviamente, podemos reducir las tres primeras reglas aún más, “Busca x-fichas en línea” lo que reduce nuestra lista de heurísticas a dos. Hasta aquí tan solo tenemos un agente ofensivo. En el peor escenario posible, querríamos un agente puramente defensivo – un agente puramente ofensivo sería vencido fácilmente. Se requieren dos heurísticas adicionales para equilibrar nuestro agente de IA:

  • Buscar posibilidades de obtención de x-fichas en fila del oponente
  • Buscar posibilidades de captura del oponente

Ahora tenemos cuatro heurísticas que pueden ser aplicadas al juego tanto en estilo defensivo como ofensivo. Como ejemplo aquí hay un tablero de Pente de ejemplo con un mapa de valores de influencia típico después de que las primeras heurísticas ha sido evaluadas. A cada posición en el mapa de influencia se le asigna esencialmente al número de fichas presentes a lo largo de cada posible línea (vertical, horizontal, diagonal):

Por ejemplo, a 1,3 se le ha asignado el valor ‘2′ porque hay una ficha presente en la linea horizontal (1,5), y otra presente en la linea diagonal \ en (2,4). Ten en cuenta que la diagonal / tiene los valores más altos ya que hay 3 fichas en la línea de 5 casillas, por lo tanto (3,3) y (5,1) tienen los valores más altos asignados.
Más allá de los mapas de influencia

Puedes ver lo sencillo que puede ser evaluar todas las posiciones del tablero usando mapas de influencia, aunque puede darse el caso en el que no exista una única mejor posición, sino un rango de ellas. Es decisión tuya como elegir entre múltiples posiciones – pule tus heurísticas para intentar reducir el número de posiciones con el mismo valor, elige las aleatoriamente de entre los máximos, o usa el mapa de influencia para minimizar en gran medida el número de jugadas por adelantado que debe evaluar tu IA.

Conclusiones

Este artículo ha sido una introducción muy sencilla a los mapas de influencia y heurísticas.

3 Comentarios en "Inteligencia Artificial en un Juego de Mesa"

  1. yadira dice:

    convertor los datos de la matriz en un solo vector

  2. carlostex dice:

    otra forma de acerlo mas elaborada, pero que garantiza la mejor jugada son los arboles minmax, esa tecnica es la que se usa para los juegos de ajedrez, y varios juegos de dos oponentes, tengo un tres en raya con arboles minmax, si quieres te lo paso

  3. adrigm dice:

    Si obviamente, para juegos más complicados se usa el minmax, incluso he visto minmax mezclado con mapas de influencia para determinar los movimientos.

    En cuando a lo de tu ejemplo, más que pasarmelo, te invito a escribir un artículo sobre el método y como lo realizaste que se podría compartir en el blog, así aprenderíamos todos el método.

    Un saludo.

Deja un comentario