Linguagem de descrição do jogo - Game Description Language
Jogo Description Language , ou GDL, é uma lógica de programação linguagem desenhado por Michael Genesereth como parte do jogo Geral Playing Projeto na Universidade de Stanford , Califórnia . A GDL descreve o estado de um jogo como uma série de fatos e a mecânica do jogo como regras lógicas. GDL é aqui uma das representações alternativas para problemas teóricos de jogos.
Objetivo do GDL
Citado em um artigo na New Scientist , Genesereth apontou que, embora o Deep Blue seja capaz de jogar xadrez em um nível de grande mestre , ele é incapaz de jogar damas porque é um jogador especializado. Tanto o xadrez quanto as damas podem ser descritos no GDL. Isso permite que jogadores gerais sejam criados para jogar esses dois jogos e qualquer outro jogo que possa ser descrito usando GDL.
Especificação
Sintaxe
GDL é uma variante do Datalog e a sintaxe é basicamente a mesma. Geralmente é fornecido em notação de prefixo . As variáveis começam com " ?
".
Palavras-chave
A seguir está a lista de palavras-chave no GDL, junto com breves descrições de suas funções:
distinct
- Esse predicado é usado para exigir que dois termos sejam sintaticamente diferentes.
does
- O predicado
does(?r,?m)
significa que o jogador (ou função )?r
se move?m
no estado atual do jogo.
goal
- O predicado
goal(?r,?n)
é usado para definir o valor da meta?n
(geralmente um número natural entre 0 e 100) para a função?r
no estado atual.
init
- Este predicado se refere a um fato verdadeiro sobre o estado inicial do jogo.
legal
- O predicado
legal(?r,?m)
significa que?m
é uma jogada legal para a função?r
no estado atual.
next
- Este predicado se refere a um fato verdadeiro sobre o próximo estado do jogo.
role
- Este predicado é usado para adicionar o nome de um jogador.
terminal
- Este predicado significa que o estado atual é terminal.
true
- Este predicado se refere a um fato verdadeiro sobre o estado atual do jogo.
Regras
Uma descrição do jogo no GDL fornece regras completas para cada um dos seguintes elementos de um jogo.
Jogadoras
Fatos que definem os papéis em um jogo. O exemplo a seguir é de uma descrição GDL do jogo Tic-tac-toe para dois jogadores :
(role xplayer) (role oplayer)
Estado inicial
Regras que envolvem todos os fatos sobre o estado inicial do jogo. Um exemplo é:
(init (cell 1 1 blank)) ... (init (cell 3 3 blank)) (init (control xplayer))
Movimentos legais
Regras que descrevem cada movimento pelas condições da posição atual sob as quais ele pode ser executado por um jogador. Um exemplo é:
(<= (legal ?player (mark ?m ?n))
(true (cell ?m ?n blank))
(true (control ?player)))
Atualização do estado do jogo
Regras que descrevem todos os fatos sobre o próximo estado em relação ao estado atual e os movimentos realizados pelos jogadores. Um exemplo é:
(<= (next (cell ?m ?n x))
(does xplayer (mark ?m ?n)))
(<= (next (cell ?m ?n o))
(does oplayer (mark ?m ?n)))
Terminação
Regras que descrevem as condições sob as quais o estado atual é terminal. Um exemplo é:
(<= terminal (line x)) (<= terminal (line o)) (<= terminal not boardopen)
Estados de meta
Os valores da meta para cada jogador em um estado terminal. Um exemplo é:
(<= (goal xplayer 100)
(line x))
(<= (goal oplayer 0)
(line x))
Extensões
GDL-II
Com GDL, pode-se descrever jogos finitos com um número arbitrário de jogadores. No entanto, GDL não pode descrever jogos que contenham um elemento de sorte (por exemplo, rolar dados) ou jogos em que os jogadores têm informações incompletas sobre o estado atual do jogo (por exemplo, em muitos jogos de cartas, as cartas do oponente não são visíveis). GDL-II , a linguagem de descrição de jogos para jogos informativos incompletos , estende GDL por duas palavras-chave que permitem a descrição de elementos de sorte e informações incompletas:
sees
- O predicado
sees(?r,?p)
significa que a função?r
percebe?p
no próximo estado do jogo.
random
- Esta constante se refere a um jogador predefinido que escolhe os movimentos aleatoriamente.
O seguinte é um exemplo de uma descrição GDL-II do jogo de cartas Texas hold 'em :
(<= (sees ?player ?card)
(does random (deal_face_down ?player ?card)))
(<= (sees ?r ?card)
(role ?r)
(does random (deal_river ?card)))
GDL-III
Michael Thielscher também criou uma extensão adicional, GDL-III , uma linguagem de descrição geral de jogos com informações e introspecção imperfeitas , que suporta a especificação de jogos epistêmicos - aqueles caracterizados por regras que dependem do conhecimento dos jogadores.
Outros formalismos e linguagens para representação de jogos
Na teoria clássica dos jogos, os jogos podem ser formalizados em formas extensas e normais . Para a teoria dos jogos cooperativos , os jogos são representados usando funções características. Algumas subclasses de jogos permitem representações especiais em tamanhos menores, também conhecidos como jogos sucintos . Alguns dos desenvolvimentos mais recentes de formalismos e linguagens para representação de algumas subclasses de jogos ou representações ajustadas às necessidades da pesquisa interdisciplinar são resumidos na tabela a seguir. Algumas dessas representações alternativas também codificam aspectos relacionados ao tempo:
Nome | Ano | Meios | Tipo de jogos | Tempo |
---|---|---|---|---|
Jogo de congestionamento | 1973 | funções | subconjunto de jogos de n pessoas, movimentos simultâneos | Não |
Forma sequencial | 1994 | matrizes | Jogos de 2 pessoas com informações imperfeitas | Não |
Jogos cronometrados | 1994 | funções | Jogos para 2 pessoas | sim |
Gala | 1997 | lógica | jogos de n pessoas com informações imperfeitas | Não |
Jogos de efeito local | 2003 | funções | subconjunto de jogos de n pessoas, movimentos simultâneos | Não |
Redes de Petri para jogos | 2006 | Rede de petri | jogos determinísticos de n pessoas, movimentos simultâneos | Não |
Jogos contínuos | 2007 | funções | subconjunto de jogos de 2 pessoas com informações imperfeitas | sim |
PNSI | 2008 | Rede de petri | jogos de n pessoas com informações imperfeitas | sim |
Jogos de gráfico de ação | 2012 | gráficos, funções | jogos de n pessoas, movimentos simultâneos | Não |
Jogos gráficos | 2015 | gráficos, funções | jogos de n pessoas, movimentos simultâneos | Não |
Formulários
Um artigo de 2016 "descreve um algoritmo multinível que compila uma descrição geral do jogo em GDL em um raciocínio otimizado em uma linguagem de baixo nível".
Um artigo de 2017 usa GDL para modelar o processo de mediação de uma resolução para uma disputa entre duas partes e apresentou um algoritmo que usa as informações disponíveis de forma eficiente para fazer isso.