Game Description Language (GDL) es un lenguaje de programación lógica especializado diseñado por Michael Genesereth . El objetivo de GDL es permitir el desarrollo de agentes de IA capaces de jugar juegos generales . Forma parte del Proyecto de Juego General de la Universidad de Stanford .
GDL es una herramienta para expresar las complejidades de las reglas y la dinámica del juego en una forma comprensible para los sistemas de IA a través de una combinación de construcciones basadas en la lógica y principios declarativos.
En la práctica, el GDL se utiliza a menudo para competiciones de juegos generales y para proyectos de investigación. En estos contextos, el GDL se utiliza para especificar las reglas de los juegos que se espera que jueguen los agentes de IA. Los desarrolladores e investigadores de IA utilizan el GDL para crear algoritmos que puedan comprender y participar en los juegos en función de sus descripciones de reglas. El uso del GDL allana el camino para el desarrollo de agentes de IA altamente adaptables, capaces de competir y destacarse en diversos escenarios de juego.
Esta innovación es un testimonio de la convergencia del formalismo basado en la lógica y el mundo de los juegos, y abre nuevos horizontes para el potencial de la IA en la comprensión y el dominio de una multitud de juegos. El lenguaje de descripción de juegos proporciona a la IA una clave universal para desvelar los misterios de diversos entornos y estrategias de juego.
En un artículo de New Scientist , Genesereth señaló que, aunque Deep Blue puede jugar al ajedrez a nivel de gran maestro , no es capaz de jugar a las damas porque es un jugador especializado. [1] Tanto el ajedrez como las damas se pueden describir en GDL. Esto permite crear jugadores de juegos generales que puedan jugar a ambos juegos y a cualquier otro que se pueda describir utilizando GDL.
GDL es una variante de Datalog y la sintaxis es básicamente la misma. Generalmente se proporciona en notación de prefijo . Las variables comienzan con " ?
". [2]
La siguiente es la lista de palabras clave en GDL, junto con breves descripciones de sus funciones:
distinct
does
does(?r,?m)
significa que el jugador (o rol ) ?r
realiza un movimiento ?m
en el estado actual del juego.goal
goal(?r,?n)
se utiliza para definir el valor objetivo ?n
(normalmente un número natural entre 0 y 100) para el rol ?r
en el estado actual.init
legal
legal(?r,?m)
significa que ?m
es un movimiento legal para el rol ?r
en el estado actual.next
role
terminal
true
Una descripción del juego en GDL proporciona reglas completas para cada uno de los siguientes elementos de un juego.
Datos que definen los roles en un juego. El siguiente ejemplo es de una descripción de GDL del juego de dos jugadores Tres en raya :
(jugador de rol)(rol del jugador)
Reglas que incluyen todos los hechos sobre el estado inicial del juego. Un ejemplo es:
(init (celda 1 1 en blanco))...(init (celda 3 3 en blanco))(init (control xplayer))
Reglas que describen cada movimiento según las condiciones de la posición actual en las que un jugador puede realizarlo. Un ejemplo es:
( <= ( legal ?jugador ( marca ?m ?n )) ( verdadero ( celda ?m ?n en blanco )) ( verdadero ( control ?jugador )))
Reglas que describen todos los hechos sobre el siguiente estado en relación con el estado actual y los movimientos realizados por los jugadores. Un ejemplo es:
( <= ( siguiente ( celda ?m ?n x )) ( hace xplayer ( marca ?m ?n ))) ( <= ( siguiente ( celda ?m ?n o )) ( hace oplayer ( marca ?m ?n )))
Reglas que describen las condiciones en las que el estado actual es terminal. Un ejemplo es:
(<=terminal (línea x))(<=terminal (línea o))(<=terminal no tablero abierto)
Los valores objetivo para cada jugador en un estado terminal. Un ejemplo es:
( <= ( objetivo xplayer 100 ) ( línea x )) ( <= ( objetivo oplayer 0 ) ( línea x ))
Con GDL, se pueden describir juegos finitos con un número arbitrario de jugadores. Sin embargo, GDL no puede describir juegos que contengan un elemento de azar (por ejemplo, tirar dados) o juegos en los que los jugadores tengan información incompleta sobre el estado actual del juego (por ejemplo, en muchos juegos de cartas las cartas de los oponentes no son visibles). GDL-II , el Lenguaje de descripción de juegos para juegos con información incompleta , extiende GDL con dos palabras clave que permiten la descripción de elementos de azar e información incompleta: [3]
sees
sees(?r,?p)
significa que el rol ?r
percibe ?p
en el siguiente estado del juego.random
El siguiente es un ejemplo de una descripción GDL-II del juego de cartas Texas Hold 'em :
( <= ( ve ?jugador ?carta ) ( hace aleatorio ( reparte_boca_abajo ?jugador ?carta ))) ( <= ( ve ?r ?carta ) ( rol ?r ) ( hace aleatorio ( reparte_río ?carta )))
Michael Thielscher también creó una extensión adicional, GDL-III , un lenguaje de descripción de juegos general con información imperfecta e introspección , que apoya la especificación de juegos epistémicos , aquellos caracterizados por reglas que dependen del conocimiento de los jugadores. [4]
En la teoría de juegos clásica, los juegos pueden formalizarse en formas extensivas y normales . Para la teoría de juegos cooperativos , los juegos se representan utilizando funciones características. Algunas subclases de juegos permiten representaciones especiales en tamaños más pequeños también conocidas como juegos sucintos . Algunos de los desarrollos más recientes de formalismos y lenguajes para la representación de algunas subclases de juegos o representaciones ajustadas a las necesidades de la investigación interdisciplinaria se resumen en la siguiente tabla. [5] Algunas de estas representaciones alternativas también codifican aspectos relacionados con el tiempo:
Un artículo de 2016 "describe un algoritmo multinivel que compila una descripción general de un juego en GDL en un razonador optimizado en un lenguaje de bajo nivel". [19]
Un artículo de 2017 utiliza GDL para modelar el proceso de mediación para la resolución de una disputa entre dos partes y presentó un algoritmo que utiliza la información disponible de manera eficiente para hacerlo. [20]