遊戲描述語言
閱讀設定
遊戲描述語言(Game Description Language,簡稱「GDL」)係一種理論上可以用嚟描述任何遊戲嘅規則嘅形式化語言[1][2]。
要枚舉嘅嘢
[編輯]喺最抽象嘅層面嚟講,遊戲描述語言第一步做嘅通常都係枚舉(enumerate)以下嘅嘢[1]:
- 遊戲入面嘅物件(object),例如係象棋入面嘅每一隻棋同棋盤上嘅每一格,白色嘅國王叫
wk
(white king)、棋盤上嘅第五行第三格叫square (e,3)
... 等等; - 遊戲嘅玩家(player),例如象棋有兩個玩家,
role(player 1)
同role(player 2)
; - 每個玩家有乜嘢可能嘅行動(action),每個行動會點樣影響遊戲入面嘅物件嘅狀態同埋第啲玩家,例如
move
表示郁某一隻棋,move(e1,e2)
表示將某隻棋由e1
移去e2
; - 命題(proposition)喺遊戲每一個可能狀態下一係「真」(true)一係「假」(false)嘅,例如「白色國王喺
e1
嗰格」(句法:true(p)
,當中p
係評估緊佢係咪真嗰句命題)呢一句嘢喺每一個遊戲可能狀態下一係一係真一係假,而呢句嘢係咪真會影響邊一啲可能行動係啱規矩-如果「白色國王喺e1
嗰格」呢句嘢係真,噉wk, move(e5,e6)
唔會係一個可能行動; - 初時狀態,即係遊戲開始嗰陣狀態係點,例如喺國際象棋遊戲開始嗰陣,雙方嘅棋都係喺某個特定位置,個程式會有一柞
init(p)
,當中p
係一句喺遊戲開始嗰陣係真嘅命題; - 遊戲喺乜嘢情況下結束同點定輸贏;
... 等等。例如井字過三關可以用以下噉嘅碼表達[註 1][1]:
... 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)) ...
註釋
[編輯]- ↑ 為咗方便起見,以下嘅碼有某啲部份省略咗。
睇埋
[編輯]攷
[編輯]- ↑ 1.0 1.1 1.2 Game Definition Language 互聯網檔案館嘅歸檔,歸檔日期2021年10月17號,..
- ↑ 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. CEUR Workshop Proceedings. Moscow, Russia. Vol-758: 113--124.