Język opisu gry

Game Description Language lub GDL to logiczny język programowania zaprojektowany przez Michaela Geneseretha do ogólnych gier , jako część projektu General Game Playing na Uniwersytecie Stanforda . GDL opisuje stan gry jako ciąg faktów, a mechanikę gry jako reguły logiczne. GDL jest tym samym jedną z alternatywnych reprezentacji problemów teorii gier.

Cel GDL

Cytowany w artykule w New Scientist , Genesereth zwrócił uwagę, że chociaż Deep Blue jest w stanie grać w szachy na poziomie arcymistrzowskim , to w ogóle nie jest w stanie grać w warcaby , ponieważ jest wyspecjalizowanym graczem. Zarówno szachy, jak i warcaby można opisać w GDL. Umożliwia to zbudowanie ogólnych graczy, którzy mogą grać w obie te gry i każdą inną grę, którą można opisać za pomocą GDL.

Specyfikacja

Składnia

GDL jest odmianą Datalog , a składnia jest w dużej mierze taka sama. Zwykle podaje się go w notacji przedrostkowej . Zmienne zaczynają się od „ ? ”.

Słowa kluczowe

Poniżej znajduje się lista słów kluczowych w GDL wraz z krótkimi opisami ich funkcji:

odrębność
Ten predykat jest używany, aby wymagać, aby dwa terminy były składniowo różne.
robi
Predykat robi(?r,?m) oznacza, że ​​gracz (lub rola ) ?r wykonuje ruch ?m w bieżącym stanie gry.
cel
Predykat cel(?r,?n) służy do definiowania wartości celu ?n (zwykle jest to liczba naturalna z przedziału od 0 do 100) dla roli ?r w bieżącym stanie.
init
Ten predykat odnosi się do prawdziwego faktu dotyczącego początkowego stanu gry.
prawny
Predykat legal(?r,?m) oznacza, że ​​?m jest legalnym ruchem dla roli ?r w bieżącym stanie.
next
Ten predykat odnosi się do prawdziwego faktu dotyczącego następnego stanu gry.
rola
Ten predykat służy do dodania nazwy gracza.
terminal
Ten predykat oznacza, że ​​bieżącym stanem jest terminal.
true
Ten predykat odnosi się do prawdziwego faktu dotyczącego bieżącego stanu gry.

Zasady

Opis gry w GDL zawiera pełne zasady dla każdego z poniższych elementów gry.

Gracze

Fakty określające role w grze. Poniższy przykład pochodzi z opisu GDL gry dwuosobowej Kółko i krzyżyk :

(gracz roli) (gracz roli)

Stan początkowy

Zasady, które obejmują wszystkie fakty dotyczące początkowego stanu gry. Przykładem jest:

(init (komórka 1 1 pusta)) ... (init (komórka 3 3 pusta)) (init (sterowanie xplayer))

Ruchy prawne

Reguły, które opisują każdy ruch według warunków na aktualnej pozycji, w których gracz może go wykonać. Przykładem jest:

    
        
       (  <=  (  legalny  ?gracz  (  znak  ?m  ?n  ))  (  prawda  (  komórka  ?m  ?n  pusta  ))  (  prawda  (  kontrola  ?gracz  ))) 

Aktualizacja stanu gry

Reguły, które opisują wszystkie fakty dotyczące następnego stanu w stosunku do obecnego stanu i ruchów wykonywanych przez graczy. Przykładem jest:

    
        
    
         (  <=  (  następna  (  komórka  ?m  ?n  x  ))  (  czy  xplayer  (  zaznacza  ?m  ?n  )))  (  <=  (  następna  (  komórka  ?m  ?n  o  ))  (  czy  oplayer  (  zaznacza  ?m  ?n  ) )) 

Zakończenie

Reguły opisujące warunki, w których obecny stan jest stanem końcowym. Przykładem jest:

(<= zacisk (linia x)) (<= zacisk (linia o)) (<= zacisk nieotwarty)

Stany celu

Wartości bramek dla każdego gracza w stanie terminalnym. Przykładem jest:

  
     
  0
      (  <=  (  bramka  xgracz  100  )  (  linia  x  ))  (  <=  (  bramka  gracza  )  (  linia  x  )) 

Rozszerzenia

GDL-II

Za pomocą GDL można opisać skończone gry z dowolną liczbą graczy. GDL nie może jednak opisywać gier, które zawierają element losowy (np. rzucanie kośćmi) lub gier, w których gracze mają niepełne informacje o aktualnym stanie gry (np. w wielu grach karcianych karty przeciwników są niewidoczne). GDL-II , Game Description Language for Incomplete Information Games , rozszerza GDL o dwa słowa kluczowe, które pozwalają na opisanie elementów przypadku i niekompletnych informacji:

widzi
Predykat widzi(?r,?p) oznacza, że ​​rola ?r postrzega ?p w następnym stanie gry.
random
Ta stała odnosi się do predefiniowanego gracza, który losowo wybiera ruchy.

Poniżej znajduje się przykład z opisu GDL-II gry karcianej Texas Hold'em :

  
        
  
     
        (  <=  (  widzi  ?  kartę ? gracza   )  (  robi  losowo  (  deal_face_down  ?player  ?card  )))  (  <=  (  widzi  ?r  ?kartę  )  (  role  ?r  )  (  robi  losowo  (  deal_river  ?card  ))) 

GDL III

Michael Thielscher stworzył również dalsze rozszerzenie, GDL-III , ogólny język opisu gier z niedoskonałymi informacjami i introspekcją , który wspiera specyfikację gier epistemicznych — charakteryzujących się regułami zależnymi od wiedzy graczy.

Inne formalizmy i języki reprezentacji gier

W klasycznej teorii gier gry można sformalizować w postaci ekstensywnej i normalnej . W teorii gier kooperacyjnych gry są reprezentowane za pomocą funkcji charakterystycznych. Niektóre podklasy gier umożliwiają specjalne reprezentacje w mniejszych rozmiarach, znane również jako gry zwięzłe . Niektóre z nowszych rozwinięć formalizmów i języków reprezentacji niektórych podklas gier lub reprezentacji dostosowanych do potrzeb badań interdyscyplinarnych podsumowano w poniższej tabeli. Niektóre z tych alternatywnych reprezentacji kodują również aspekty związane z czasem:

Nazwa Rok Oznacza Rodzaj gier Czas
Gra w zatory 1973 Funkcje podzbiór gier n-osobowych, jednoczesne ruchy NIE
Forma sekwencyjna 1994 macierze Gry 2-osobowe z niedoskonałą informacją NIE
Gry na czas 1994 Funkcje Gry 2-osobowe Tak
Gala 1997 logika n-osobowe gry niedoskonałych informacji NIE
Gry graficzne 2001 wykresy, funkcje gry n-osobowe, ruchy symultaniczne NIE
Gry z efektem lokalnym 2003 Funkcje podzbiór gier n-osobowych, jednoczesne ruchy NIE
Gra Sieci Petriego 2006 Sieć Petriego deterministyczne gry n-osobowe, ruchy symultaniczne NIE
Ciągłe gry 2007 Funkcje podzbiór 2-osobowych gier o niedoskonałych informacjach Tak
PNSI 2008 Sieć Petriego n-osobowe gry niedoskonałych informacji Tak
Gry z wykresem akcji 2012 wykresy, funkcje gry n-osobowe, ruchy symultaniczne NIE

Aplikacje

Artykuł z 2016 roku „opisuje wielopoziomowy algorytm kompilujący ogólny opis gry w GDL w zoptymalizowany mechanizm rozumujący w języku niskiego poziomu”.

Artykuł z 2017 roku wykorzystuje GDL do modelowania procesu mediacji w celu rozwiązania sporu między dwiema stronami i przedstawia algorytm, który skutecznie wykorzystuje w tym celu dostępne informacje.

Zobacz też

Linki zewnętrzne