リバーシのAIとUIを作ってみる①
こんにちは。
「戦略系ボードゲーム研究会 recreo」の kohei です。
今回はリバーシをテーマに色々書いていきたいと思います。
リバーシとは。
リバーシとは、1880年ごろにイギリス人によって作られた2人用対戦ボードゲームです。
8×8の盤と黒と白の石2つを使用して対戦するボードゲームであり、
相手の石を挟めばひっくり返すことができ、自分の色の石が多いほうが勝利のボードゲームです。
ここでですが似たボードゲームがありますよね?
そうです! オセロです。
オセロは1972年ごろに日本人によって作られたボードゲームであり、
簡単に書くとリバーシとオセロの大きな違いは、
オセロは初期の石の配置が決まっている
リバーシは初期の石の配置が決まっていない
だそうです。
(あれ?だったら今回作るのはオセロな気が…)
今回作っていくのは本当であればオセロですが、リバーシと呼ぶことにします。
作ってみたもの
まずwebアプリとして自分が遊びたかったので以下の言語を使用使用しました。
・クライアント側:javascrpt、HTML
・サーバ側 :python
またUIのデザインとしましては、私がレトロゲームもすきということでドット絵風に作成してみました。
まず、以下のようにパネルを描きました。
次に必要ありませんがなんとなく文字も自作しました。
これらを利用して、時間と評価値などを追加したものをUIとしました。
完成したUIは以下のようになりました。
このままではUIのみなので、ルールやAIなどを追加していきます。
AIとしまして、自分なりに工夫して以下のように作成してみました。
・局面を探索する手法:原始モンテカルロ木探索、ベイズの定理
・局面を評価する方法:ニューラルネットワーク
システムについては、簡単に書くと以下のようになっています。
クライアント側の端末とAPIサーバはwebsocketでやり取りを行い、
APIサーバとAIサーバはDBを介してやり取りを行うように設計してみました。(本当はあまり良くないのかもしれませんが…)
とりあえずこれで動いたのでよしとします。
動作については以下の動画のようになっています。
ランダムで先手後手が決まりますが、今回はプレイヤーが黒になりました。
動画は少し長いですがご了承ください。
動画時点ではまだ未学習のため、大変弱かったです。
(強くなってくれるといいなぁ~)
今回はここまでとさせていただきます。
読んでいただきありがとうございます。動作している動画なども準備ができ次第、載せようと思いますのでお待ちいただけるとありがたいです。(2023/02/14 動画追加しました。)
またボードゲーム関連や今回のプログラムなどについて、
書いていこうと思っていますのでよろしければnoteとtwitterをフォローをしていただけると嬉しいです。
(ちなみにヘッダーの写真はUIのデザインを真似して、リバーシを3Dプリンタで作ってみたものになります。)