Game Description Language

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Game Description Language, or GDL, is a logic programming language[1] designed by Michael Genesereth as part of the General Game Playing Project at Stanford University, California. GDL describes the state of a game as a series of facts, and the game mechanics as logical rules. GDL is hereby one of alternative representations for game theoretic problems.[2]

Purpose of GDL[edit]

Quoted in an article in New Scientist, Genesereth pointed out that although Deep Blue is able to play chess at a grandmaster level, it is incapable of playing checkers at all because it is a specialized game player.[3] Both chess and checkers can be described in GDL. This enables general game players to be built that can play both of these games and any other game that can be described using GDL.



GDL is a variant of Datalog, and the syntax is largely the same. It is usually given in prefix notation. Variables begin with "?".[4]


The following is the list of keywords in GDL, along with brief descriptions of their functions:

This predicate is used to require that two terms be syntactically different.
The predicate does(?r,?m) means that player (or role) ?r makes move ?m in the current game state.
The predicate goal(?r,?n) is used to define goal value ?n (usually a natural number between 0 and 100) for role ?r in the current state.
This predicate refers to a true fact about the initial game state.
The predicate legal(?r,?m) means that ?m is a legal move for role ?r in the current state.
This predicate refers to a true fact about the next game state.
This predicate is used to add the name of a player.
This predicate means that the current state is terminal.
This predicate refers to a true fact about the current game state.


A game description in GDL provides complete rules for each of the following elements of a game.


Facts that define the roles in a game. The following example is from a GDL description of the two-player game Tic-tac-toe:

(role xplayer)
(role oplayer)

Initial state[edit]

Rules that entail all facts about the initial game state. An example is:

(init (cell 1 1 blank))
(init (cell 3 3 blank))
(init (control xplayer))

Legal moves[edit]

Rules that describe each move by the conditions on the current position under which it can be taken by a player. An example is:

(<= (legal ?player (mark ?m ?n))
    (true (cell ?m ?n blank))
    (true (control ?player)))

Game state update[edit]

Rules that describe all facts about the next state relative to the current state and the moves taken by the players. An example is:

(<= (next (cell ?m ?n x))
    (does xplayer (mark ?m ?n)))
(<= (next (cell ?m ?n o))
    (does oplayer (mark ?m ?n)))


Rules that describe the conditions under which the current state is a terminal one. An example is:

(<= terminal
    (line x))
(<= terminal
    (line o))
(<= terminal
    not boardopen)

Goal states[edit]

The goal values for each player in a terminal state. An example is:

(<= (goal xplayer 100)
    (line x))
(<= (goal oplayer 0)
    (line x))



With GDL, one can describe finite games with an arbitrary numbers of players. However, GDL cannot describe games which contain an element of chance (for example, rolling dice) or games where players have incomplete information about the current state of the game (for example, in many card games the opponents' cards are not visible). GDL-II, the Game Description Language for Incomplete Information Games, extends GDL by two keywords that allow for the description of elements of chance and incomplete information:[5]

The predicate sees(?r,?p) means that role ?r perceives ?p in the next game state.
This constant refers to a pre-defined player who chooses moves randomly.

The following is an example from a GDL-II description of the card game Texas hold 'em:

(<= (sees ?player ?card)
    (does random (deal_face_down ?player ?card)))
(<= (sees ?r ?card)
    (role ?r)
    (does random (deal_river ?card)))


Michael Thielscher also created a further extension, GDL-III, a general game description language with imperfect information and introspection, that supports the specification of epistemic games — ones characterised by rules that depend on the knowledge of players.[6]


A 2016 paper "describes a multilevel algorithm compiling a general game description in GDL into an optimized reasoner in a low level language".[7]

A 2017 paper uses GDL to model the process of mediating a resolution to a dispute between two parties, and presented an algorithm that uses available information efficiently to do so.[8]

See also[edit]


  1. ^ "Game Definition Language".
  2. ^ Tagiew, Rustam (2011). Averkin, Alexey N.; Ignatov, Dmitry I.; Mitra, Sushmita; Poelmans, Jonas (eds.). "Beyond Analytical Modeling, Gathering Data to Predict Real Agents' Strategic Interaction" [Soft Computing Applications and Knowledge Discovery] (PDF). CEUR Workshop Proceedings. Moscow, Russia. Vol-758: 113--124.
  3. ^ Biever, Celeste (2006-07-29). "Producing the ultimate game-playing bots - tech - 29 July 2006 - New Scientist Tech". Archived from the original on 11 August 2007.
  4. ^ Love, N; Genesereth, M; Hinrichs, T (2006). "General game playing: game description language specification. Tech. Rep. LG-2006-01" (PDF). Stanford University. Stanford University, Stanford. Retrieved 1 July 2019.
  5. ^ Thielscher, M (2010). Fox, M; Poole, D (eds.). "A general game description language for incomplete information games". Proceedings of the Twenty-fourth AAAI Conference on Artificial Intelligence, AAAI 2010. Atlanta: AAAI Press. Retrieved 1 July 2019.
  6. ^ Thielscher, Michael (2017). "GDL-III: A Description Language for Epistemic General Game Playing" (PDF). Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence. IJCAI. ISBN 978-0-9992411-0-3. Retrieved 1 July 2019.
  7. ^ Kowalski, Jakub; Szykuła, Marek (2013). "Game Description Language Compiler Construction". AI 2013: Advances in Artificial Intelligence: 26th Australasian Joint Conference, Dunedin, New Zealand, December 1-6, 2013. Proceedings. pp. 234–245. Retrieved 1 July 2019.
  8. ^ de Jonge, Dave; Trescak, Tomas; Sierra, Carles; Simoff, Simeon; López de Mántaras, Ramon (2017). "Using Game Description Language for mediated dispute resolution". AI & Society. Springer. 2017 (4): 767–784. doi:10.1007/s00146-017-0790-8.

External links[edit]