ggp-base
GGPの基本パッケージ ##
GUIアプリ
GameServer
gradle: other/server
ゲームのホストサーバー
対局を管理する
機能
対局
棋譜の表示
棋譜の保存
Save match to disk?にチェックを入れる
ユーザーディレクトリ以下に保存される(~/ggp-saved-matches/)
json形式
グラフィックの表示 (対応していれば)
ゲームの選択
3種類のゲームサーバーかローカルから選択できる
任意のゲームをプレイするには、games/gamesにゲームを置く(後述)
GameKiosk
gradle: other/kiosk
コンピュータ対人間の試合をする
人間がプレイすることができる
UIが対応しているゲームしかプレイできない
どこのゲームを取得しているかは謎
GamePlayer
gradle: other/player
プレイヤーを生成する
エージェントとポート番号を指定する
人間が手を選ぶこともできる
GDLValidiator
gradle: none
GDLを検査する
GDL v2に準拠
起動方法
org.ggp.base.apps.validator.Validatorを実行する
Tips
エラーメッセージが見切れている場合はコピペすれば全文が閲覧できる
ゲームの構成
メタデータ
ゲーム名と各記述ファイルの名前を定義する
code:METADATA
{
"gameName": "Tic-Tac-Toe",
"rulesheet": "ticTacToe.kif",
"stylesheet": "ticTacToe.xsl",
"description": "ticTacToe.txt",
"user_interface": "ticTacToe.js"
}
ルールシート(GDL)
.kif
スタイルシート
.xsl
ゲームのグラフィックを記述する
なんとなくわかるが仕様不明
詳細
.txt
ゲームを説明する文章
UI
.js
人間がプレイするためのUIを記述する
(おそらく)Kioskで使われている
解析
GDLの構文はステートマシンによって表現されている
このコミットによりGDL-IIの記述に対応していることが判明 randomという名前のプレイヤーはランダムに手を選択する
同時手番ゲームも実装できる
一つのターンに複数のプレイヤーが着手できる
あらゆる状態において全プレイヤーに1つ以上の合法手が必要
何も着手しないプレイヤーはnoopを着手させるように記述する
noop (no operation)は予約語ではない