遊戲描述語言

遊戲描述語言係一種理論上可以用嚟描述任何遊戲嘅規則嘅形式化語言。

要枚舉嘅嘢 
喺最抽象嘅層面嚟講，遊戲描述語言第一步做嘅通常都係枚舉以下嘅嘢：
遊戲入面嘅物件，例如係象棋入面嘅每一隻棋同棋盤上嘅每一格，白色嘅國王叫 wk、棋盤上嘅第五行第三格叫 square (e,3)... 等等；
遊戲嘅玩家，例如象棋有兩個玩家，role(player 1) 同 role(player 2)；
每個玩家有乜嘢可能嘅行動，每個行動會點樣影響遊戲入面嘅物件嘅狀態同埋第啲玩家，例如 move 表示郁某一隻棋，move(e1,e2) 表示將某隻棋由 e1 移去 e2；
命題喺遊戲每一個可能狀態下一係「真」一係「假」嘅，例如「白色國王喺 e1 嗰格」呢一句嘢喺每一個遊戲可能狀態下一係一係真一係假，而呢句嘢係咪真會影響邊一啲可能行動係啱規矩－如果「白色國王喺 e1 嗰格」呢句嘢係真，噉 wk, move(e5,e6) 唔會係一個可能行動；
初時狀態，即係遊戲開始嗰陣狀態係點，例如喺國際象棋遊戲開始嗰陣，雙方嘅棋都係喺某個特定位置，個程式會有一柞 init(p)，當中 p 係一句喺遊戲開始嗰陣係真嘅命題；
遊戲喺乜嘢情況下結束同點定輸贏；
... 等等。例如井字過三關可以用以下噉嘅碼表達：
  ...
  role(x) # 遊戲有 X 同 O 兩個玩家
  role(o)
  ...
  input(R,mark(M,N)) :- role(R) & index(M) & index(N) #一個可能行動係「玩家 R 填 M, N 嗰格」
  input(R,noop) :- role(R)
  ...
  base(cell(M,N,x)) :- index(M) & index(N) # 命題類型 1：「M,N 嗰格俾 X 填咗」
  base(cell(M,N,o)) :- index(M) & index(N) # 命題類型 2：「M,N 嗰格俾 O 填咗」
  base(cell(M,N,b)) :- index(M) & index(N) # 命題類型 3：「M,N 嗰格係空嘅」
  base(control(x)) # 命題類型 4：「而家到 X 行」
  base(control(o)) # 命題類型 4：「而家到 O 行」
  ...
  init(cell(1,1,b)) # 遊戲原始狀態：1,1 嗰格係空嘅
  init(cell(1,2,b)) # 遊戲原始狀態：1,2 嗰格係空嘅
  ... # ... 如此類推
  legal(W,mark(X,Y)) :- # 啱規則嘅嘢之一：要喺「X,Y 嗰格係空嘅」同「到 W 行」呢兩句命題都係真嗰陣，「玩家 W 填 X, Y 嗰格」先至有可能發生。
    true(cell(X,Y,b)) &
    true(control(W))
  ...

遊戲
遊戲設計
瓣瓣掂玩遊戲

攷 

程式語言