# CGDL を用いたトリックテイキングゲーム 自動生成手法の提案と評価

牧野 貴斗 ${ }^{1}$ 濱川礼 ${ }^{2}$
1 中京大学大学院 工学研究科 情報工学専攻 2 中京大学 工学部

## 概要

本研究では CGDL(A Card Game Description Language) を用いてトリックテイキングゲームのルール を記述し深層学習で生成を行いトリックテイキング ゲームを自動生成する手法を提案する。ゲームの自動生成分野では遺伝的アルゴリズムを用いてチェッ カーや Go などのバランスの取れたボードゲームを 設計する試み [1] などがあるがこれらの研究では，例えば場のサイズは 3 種類の中から選ぶなど限ら れたバリエーションでしかルールを表現できず，単純なゲームしか生成できない。より複雑なゲームを 生成するために, 本研究では深層学習に着目し, 卜 リックテイキングゲームの学習を行い、ルールをよ り複雑に生成することを試み，生成したゲームの評価を行った。

## 1 背景と目的

カードゲームは沢山の人に親しまれており，だれ もが一度は遊んだことがあるものである。人の顔を 見ながらできるカードゲームは，コミュニケーショ ン能力を養い，ゲームに勝つために考える過程で思考力を養うことができると考えられている [2][3]. しかし, 同じゲームを遊んでいるとゲームに飽きて しまったり，つまらなくなることでゲームに集中で きなくなる。しかし，新しいゲームをやるとしても カードゲームは値段が高くかさばるものであり，簡単に買えるものではない. [4] ではボードゲームの 発展を阻害している要因をアンケート調査している が，值段の高さは 7 位に入っている．以上の理由か ら常に新しいゲームを気軽に始めることが難しい. そこで常に新しいゲームを提供することで新鮮な体験を利用者に提供できればこの問題を解決できる のではないかと考え，トリックテイキングゲームの ルールを学習させ，ルールをより複雑に生成するこ とを試み，生成したゲームの評価を行った。

## 2 関連研究・関連システム

ボードゲーム自動生成の研究として，GDL(Game Description Language) 言語を利用して，チェッカー や Go などのバランスの取れたボードゲームの自動設計を試みている。 [1]. この研究では，遺伝的アル ゴリズムを用いて盤面のパターンや，駒の種類，勝利条件などあらかじめ用意されたパターンの中から ゲームのバランスを考慮したゲームの生成を遺伝的 アルゴリズムを用いて生成を行っている。

また，カードゲームの自動生成を目指す試みとし て, 'A Card Game Description Language' [5] がある. この研究は，GDLをカードゲームに改良を加えた 言語 CGDL を開発，カードゲームの自動生成を GA で試みた研究である. カードゲーム用の言語の為, ボードゲームのようにどのような場や場のサイズ などの細かい設定を必要とせず，行う処理に関して も，より限定的な命令を採用している言語について 述べている。

## 3 提案手法

[1][5] では，ゲームの自動生成を遺伝的アルゴリ ズムで行っているが，例えば，場のサイズは 3 種類 の中からどれかを選ぶなど，限られたバリエーショ ンでしかルールを表現できず，単純なゲームしか生成できない。より複雑なゲームを生成するために，文章生成などの分野で使われている深層学習に注目 した. 日本語などの文章と比較して，CGDL の記述 は厳格に単語の順番が決められており，深層学習を 使用すればルール文の記述を行えるのではないかと 考えた。本研究の提案手法を図 1 に示す.トリック テイキングゲームのルールを CGDLを用いて記述し たデータセットを用いて LSTM モデルで学習を行 う．学習後は，学習を終えたLSTM モデルに最初の 単語を入れそのあとに続く単語の予測を行う。この 作業を繰り返しトリックテイキングゲームのルール

の生成を行う。なお，CGDL の文法とトリックテイ キングゲームのルールの説明は [7] で述べている.

図 1 提案手法

## 3.1 データセット

今回使用するトリックテイキングゲームはトラン プゲーム大全 [8] に記載されているゲームの内 85 個 を使用している。

## 3.2 CGDL の命令の追加

トリックテイキングゲームを表記する際に既存の 命令だけでは表現しきれない以下のような状況があ る為，表 1 のコマンドを追加する.

・同じマークのカードを出す
- 既定回数処理を繰り返す

・トリック数を数える

・得点を失う

行動の種類 'else' は最初に出されたカードのマー クと同じマークのカードを出さなくてはならないよ うな状況でマークのカードが出せない時に他のカー ドを出すという命令を表現するために追加した。ア クション 'loop’ はトリックテイキングゲームでは 決められた回数ループを繰り返す必要があるが，そ の回数を既存の言語使用では表現できないため追加 した. アクション 'trick' は各プレイヤーが取得し たトリック数を数えるために追加した. アクション loss は得点を失うという状況を表現するために追加 した.

## 4 システム構成

本手法の構成図を図 2 に示す. LSTM 学習部で は，CGDLを用いてルールを記述し，記述したルー ルを一定のルールに従ってデータセット化し, 生成したデータセットをDataAugmentation を行い, LSTM モデルで学習を行う. LSTM 出力部では学習表 1 追加する命令

 \\

したモデルを使用して，STAGE0 の内容を入力（以下，初期シードと呼ぶ）として，トリックテイキン グゲームの文章生成を行う.

図 2 システム構成図

## 4.1 訓練データ作成部

## 4.1.1 データセットの変換

ここでは，CGDL で記述したトリックテイキング ゲームのルールを，どのような形で学習させたかを 述べる. 本手法では以下の条件でルールを記述して いる. 以下のルールでゲームの記述を行い，20 単語 で 1 つのデータ（以下，バッチと呼ぶ）としてまと める.

・各ルールの文頭と文末に始まりと終わりを意味 する りを 20 個付ける
- stage の区切りには＜ST > をつける

・データ中のカンマはスペースに置き換える.

・それぞれの単語には対応する番号があり，すべ ての単語を対応する数字に変換してデータと する。

## 4.1.2 Data Augmentation

本論文ではデータ数を増やすために Easy Data Augmentation(EDA)[9]を使用して，データの拡張を 行った. 本手法では，パラメータを以下の通りに設定している.

$
a=0.05
$

$
n_{\text {aug }}=16
$

編集確率を $a$ ，ワード移動を行う回数を $n$ の值で設定している。 パラメータは EDA の論文内で使われ ているものを採用した.

## 4.2 LSTM 学習部

LSTM 学習部では訓練データ作成部で受け取った データセットを入力として LSTM モデルを使用した 深層学習を行う. 計算設定を表 2 に示す. 大力層を Input 層，出力層を Dence 層，中間層を Embedding 層 と LSTM 層からなるニューラルネットワークを構築 した. 入力層では， $[32,20]$ のサイズの系列データ からなるテンソルを出力する. 32 と 20 はそれぞれ， バッチサイズと seq_length の值である. Embedding 層では，[32，20，100］のサイズのテンソルを出力 し，単語を変換した整数トークンを連続するべク トルに埋め込みそれぞれの単語の表現を学習する。 100 の值は embedding_size の値である. LSTM 層で は，[32，256］のサイズのテンソルを出力し，再帰的な学習を行う. Dence 層では, [32, 63] のサイズ のテンソルを出力し, 各単語が出力される確率を求 める.

## 4.3 LSTM 出力部

LSTM 出力部では学習をした LSTM モデルを使 い，初期シードを入力としたルールの出力を行う.出力の構造について図 3 に示し, 計算設定を表に示 す. 大力した文の次に来る単語を予測し, 予測した 単語を大力に加えて繰り返す。これをデータの始ま りと終わりを示す‘り’が出るまで続ける.

## 4.3.1 文法矯正部

CGDL では特定の先行詞やアクションの後には， その対象となる値が必ず来るような厳格なルール がある．そこで生成の精度を上げるため，各単語の 確率が出力された後に文法としてそぐわない単語 を排除し，100\%になるように確率の再計算を行う。例えば，指定した場所からカードを引くアクション

図 3 LSTM による文章生成

'pifr' の後には必ずどこから引くのかを表す単語が 入るので，場所を表す単語以外の要素を出力から排除する

## 4.4 生成されたゲーム

以下に生成した CGDL のゲームの一例を記す.

## - STAGE0

各プレイヤーにカード 7 枚と賭け金 99 を配る。
- STAGE1

役の宣言を行い最も高い役を宣言したプレイ ヤーを決める。

## - STAGE2

各プレイヤーがカードを出す。その際に，最初 のプレイヤーが出したカードと同じマークの カードがあるならば出さなければならず，ない なら好きなカードを出してよい，そして最も強 いカードを出したプレイヤーの取得トリック数 を追加する。
- STAGE3

STAGE2 の内容を 5 回行う
- STAGE4

STAGE1 で一番多くトリック数を宣言したプレ イヤーの取得したトリック数が宣言した役より 多い場合，宣言した役の得点を得て，少ない場合に得点を失う。

13 STAGE3

4 unconditional_loop, STAGE2, 5

5 STAGE4

6 mandatory_tokens, k12, >, p1_gain, ka1

else_loss, p1, k12

## 5 評価・考察

大学生 11 人を対象に，4.4 節で生成したルール （以下，ゲームＡとする）とトリックテイキングゲー ムの一つであるミニブリッジをプレイしてもらい アンケートに回答してもらった. ただし，CGDL は RANKING，STAGES，WINNINGCONDITIONS で構成されており，4.4 節で出力したのは STAGES のみ であるため，ゲーム A R STAGES 以外を追加した. ミニブリッジのルールは日本コントラクトブリッジ 連盟が公開しているルール [10] に従って行った。

## 5.1 ゲームA

追加したルールは以下の通りである。追加した ルールは生成されたゲームと類似しているカード ゲーム"ナップ"から取っている.

・使用するカードは 7 A までの 32 枚

・Aが最も強く， 7 が最も弱い

・最もスコアが高いプレイヤーが勝利する.

・役を宣言し，宣言した役を達成できた場合に点数を得る. 失敗した場合点数を失う．役と得点 の表を表 3 に示す.

7 枚のカードを使って 5 回数字を比較するトリッ クを行い何回勝つかを予想するゲームである. じゃ んけんで決めたプレイヤーから順番にすでに宣言 されている役より得点が高い役を宣言し，最も高い 役を宣言したプレイヤーは親になり 5 回トリック を行う. 親の処理した回数が最初に宣言した役以上 ならば親は点数を獲得し，少なければ失点するゲー ムである. 最初の 1 回は親からカードを出し, 残り のゲームはトリックを勝利したプレイヤーが最初 にカードを出す. また，最初のプレイヤーが出した マークと同じマークがあれば必ず出さなければなら ず，ないならばどのカードを出してもよいがそのト
リックは敗北する。

## 5.2 評価手法

11 人を 3 グループに分けミニブリッジ，ゲーム $\mathrm{A}$ を遊んでもらった。回答してもらったアンケートの 結果を表 4 に. アンケートは 5 段階評価で 1 が最も 悪く 5 が最も良い. $3 ， 4$ つ目の質問はゲーム A に のみ行った。

 & 4.36 & 3.91 \\

## 5.3 考察

ゲームＡは面白かったかという質問に対しては ミニブリッジと遜色のない結果が出せており，ルー ルの整合性などの部分でも高い評価であることか ら，トリックテイキングゲームの手順は生成できて いると考えられる。一方で，駆け引きはあったかと いう点に関しては差がでてしまった。理由として STAGES のみの学習では，駆け引きの部分まで完全 に学習しきれていないのではないかと考えられる。

## 6 今後の課題

本手法では CGDLを用いたカードゲームの自動生成を試みた。結果，問題のないルールの生成という 点では高い評価を得たがゲームの駆け引きでは芳し くない評価だった. 以下に精度を上げるための今後 の課題を示す.

・データ数の増加

今のデータ数では様々なルールを表現するのが 難しいため，トランプゲーム大全全てのゲーム をデータセットにしたい.

-CGDL の見直し

ルールの表現方法，駆け引きといった要素をど う表現するかを見直す。
- WINNING，RANKING の追加 データセットにラベルのような形で，どのよう な要素があるのか表現したい.

## 参考文献

[1] Vincent Hom, Joe Marks . "Automatic design of balanced board games."

Proceedings of the Third AAAI Conference on Artificial Intelligence and Interactive Digital EntertainmentJune 2007 Pages 25-30

[2] 有田隆也 (2011)「ドイツボードゲームの教育利用の試み一考える喜びを知り生きる力に結びつけ る一」,コンピュータ\&エデュケーション 31(0), 34-39, 2011

[3] 松本太一 (2018) アナログゲーム療育ーコミュニケーション力を育てるー (幼児期から学齢期まで) ぶど う社

[4] 日本にボードゲームが広まらない理由 "https://tgiw.info/2011/08/post_1064.html"

[5] Jose M. Font , Tobias Mahlmann, Daniel Manrique1, Julian Togelius(2013) "A Card Game Description Language"

[6] Hochreiter, Sepp, and Jürgen Schmidhuber. "Long short-term memory."

Neural computation 9.8 (1997): 1735-1780.

16th European conference on Applications of Evolutionary Computation

[7] 牧野貴斗 濱川礼 (2021) CGDL を用いたトリックテイキングゲーム自動生成手法の提案研究報告ゲーム情報学（GI）2021-GI-46 巻 7 号

[8] 赤桐 裕二 (2014) トランプゲーム大全 スモール出版

[9] Jason Wei, Kai Zou(2019) "EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks"

EMNLP-IJCNLP 2019 short paper

[10] 日本コントラクトブリッジ連盟 公式ホームページ "LET’S PLAY BRIDGE"

"https://www.jcbl.or.jp/Portals/0/pdf/fukyu/tools/letsplay1912.pdf"

## 7 付録

付録として STAGES の命令集を記載する. CGDL は，ゲームのルールを RANKING と STAGES, WINNINGCONDITIONS の三つで要素で記述した言語である. 本論文では, CGDL の STAGES の生成を行っ ている. STAGES はゲーム中に行う行動を命令で表現している. 命令は，行動の種類，先行詞，アクション の三種類の命令を組み合わせて構成されている. 以下の表でそれぞれの命令の効果を記載する.

 & tokens, K01, >, K11 \\

 & pifr, $\mathrm{D} * 2$, down \\


 牧野 貴斗 ${ }^{1}$ 濱川礼 ${ }^{2}$ 1 中京大学大学院 工学研究科 情報工学専攻 2 中京大学 工学部  