大阪電気通信大学

平安大将棋AIの開発 〜チェスと中国将棋が融合した将棋〜

AI対人間の棋譜再生

AI対人間の棋譜を再生した動画である。駒の動きについては下の「駒の動き」に書いている。1つ目の棋譜は先手がプレイヤーで後手がAIとなっている。2つ目の棋譜は先手AI、後手プレイヤーである。

動画内の補足をする。1つ目の棋譜に関しては改良前のAIとの対局であり、棋譜通りでは反車を使用した合駒をせずAIが負けている。2つ目に関しては改良後のAIとの対局であり、AIにより詰まれたのでプレイヤー側の敗北となっている。加えて、1つ目はプレイヤー側が長考して対局したが、2つ目は長考なしでの対局となる。

研究概要

本研究は現代に復刻し、いくつかの変更が施された新たな平安大将棋の遊戯性を調べるために、AIを組み込んだWebアプリケーションを制作した。ディープラーニングAIを組み込む予定であったが、通常の将棋とは異なり膨大な数の棋譜が存在しない。そのため、評価関数を用いたゲームAIを作成し対局を繰り返すことで棋譜を収集する。また、WebアプリケーションにはAIだけでなく対局支援を実施し、遊んだことのない人にも対局を行いやすいようにし、遊戯性を確認する。

平安大将棋とは

平安大将棋とは、13種34枚の駒を縦9横13の9×13マスの盤面に並べた将棋である。13種の駒の動きは中国将棋(象棋)とチェスの動きと同じ動き方をする駒がほとんどである。一例を挙げるのならば、歩兵の動きはチェスのポーンの動きと非常に似ている。歩兵は1マス前に進むことができ、斜め前に駒が存在する時、その駒を取得することができる。また通常の将棋とは異なり、成りというルールは存在しない。以下が実際の盤面である。

平安大将棋の盤面

駒の動き

駒の動きは以下の通りになっている。

各駒の動き

各駒の動きについて補足を行う。星印は対象の駒がいるマスである。黒丸は星印から動けるマス、矢印はその方向に相手駒、もしくは自駒が存在するマスまで進むことができる。白丸は進んだ黒丸と星印の間の駒を取得できる。特殊な動きをする駒は2つ存在する。歩兵と鉄将である。歩兵については平安大将棋とはにても説明している。歩兵は斜め前の敵駒のみを取得することができる。前には進むことしかできない。鉄将については複雑である。空きマスに動かす時は上下左右の走り駒だが、駒を取得する時は間に一つ駒を挟まないと取れない。

デジタル版平安大将棋

以下の画像がデジタル版平安大将棋の実際のゲーム画面である。

ゲーム画面

各赤枠に囲まれた部分を説明する。まず①については盤面である。動かしたい駒をクリックすることで駒が選択状態となり、移動先のマスをクリックすると駒が動く。次に②についてだが、ここでは現在のAIの状態と盤面などの情報を表示する。例えば、選択した駒が動けないマスをクリックした場合、「動けません」と表示する。他にも王手表示も行う。③については棋譜の表示を行う。何手目にどの駒をどの場所に動かしたかの表示を行う。④については現在の手数と手番、制限時間を表示する。制限時間については、真ん中のボタンの「対局開始」を押すことによってスタートする。次に⑤は3つのボタンが存在する。各機能は上からAIのオンオフを切り替える「AI ON/OFF」ボタン、棋譜再生時に使用する「棋譜を1手進める」ボタン、手を1つ戻す「1手戻る」ボタンである。

実装機能

デジタル版平安大将棋に実装している機能は次の通りである。

  • 対局支援機能
  • 棋譜再生機能
  • 持ち時間と秒読み
  • 手番設定
  • 敵AI
  • ネットワーク対局

各機能について簡単に説明を行う。まず対局支援機能についてだが、これは駒の移動可能なマスにのみ移動することができる。複雑な駒の動きを覚えきれていなくても、動けないマスに動くことはない。棋譜再生機能については、「自動再生」と1手ずつ再生を行う「手動再生」が存在する。持ち時間と秒読みはプレイヤーが指定した時間をそれぞれ設定することができる。手番設定は先手と後手の切り替えがいつでも行える。敵AIについては「ランダム打ち」とミニマックス法を用いた「1手先読み打ち」の2つが存在する。ネットワーク対局はローカル通信による内部接続の対局と外部接続による遠く離れた友人との対局も行える。

ネットワーク対局

ネットワーク対局には、実装機能以外で記述した機能が存在する。それは観戦者モードである。観戦者モードでは、ネットワーク対局を行なっている対局を観戦することができる。観戦するためには、サーバーに接続する前に下図のクライアント設定から観戦者を選択する必要がある。

クライアント設定画面

観戦者モードでは観戦だけでなく、他の観戦者とコミュニケーションを取ることができる。観戦中、コメント欄を開くことにより、発言可能である。このコメント欄の内容は対局者が見ることはできない。ただし対局者はコメントを入力することはでき、観戦者はそのコメントを見れる。観戦者→対局者のコメントを見れないが、対局者→観戦者のコメントは見ることができる。コメント欄は以下である。

コメント欄

評価関数

ゲームAIを作成する際、評価関数は最も重要な要素である。評価関数とはボードゲームの盤上を点数化を行う関数である。評価関数の中身によってAIは動きを大きく変える。私が作成した評価関数は2つ存在するが、中でも最も強い評価関数について説明を行う。

私が作成した評価関数には3つの評価項目が存在する。3つの評価項目は下の図の左から「攻撃」「回避」「移動」である。

図ではわかりやすいよう攻撃には攻撃が有効な盤面、回避には回避が有効な盤面を載せているが、実際は一つの手を3つの評価項目から検討する。3つの評価項目から算出された3つの評価値の中から自身(AI)に最も有利な値を、その手が全体の中で最も有利かを調べる関数に渡す。これを全ての手で繰り返し、最も有利な1手を選択する。

作者プロフィール

田中 大翔

大阪電気通信大学 総合情報学部 デジタルゲーム学科 計測ハードウェア研究室

コメント


前野 隆史2023-02-12T11:26:58

ただデジタルの将棋を制作するのではなくそこに観戦者がコメントを打てたり、棋譜を保存し見返す事ができるのが良いと感じました。