TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

Unityで将棋アプリの開発 その9(定跡と戦型予想)

作成している将棋アプリに定跡検索と戦型予想を実装した。

定跡ボタン(ノートのアイコン)を押すと、現在の局面の定跡の候補手と、各手を指した後にどの戦型になるかの確率を表示する。

候補手は、出現率と勝率も合わせて表示する。

f:id:TadaoYamaoka:20220309193506p:plain

定跡の元データ

定跡の元データには、floodateの2018年以降のR3500以上のソフト間の棋譜を使用した。

ある程度レーティングの高いソフトの指し手を登録した方がよいのでレーティングでフィルタを行ったが、R3300は技巧2の棋譜が多いためそれよりも少し大きいR3500とした。

なお、floodgateのレーティングの分布は以下のようになっている。
f:id:TadaoYamaoka:20220309193808p:plain

戦型予想

floodgateの棋譜から、定跡の各手を指した後に、どの戦型になったかの統計情報を取得して、それを確率として表示する。

戦型の分類には、Mizarさんが公開されているjsonの定義ファイルを使用させてもらった。
相掛かりの上限手数が20手までだと該当棋譜が減るため、24手までに修正して使用した。

戦型の分類は、対局中にも行い、手を指した後の戦型を表示する。
f:id:TadaoYamaoka:20220309194420p:plain

まとめ

将棋アプリに定跡と戦型予測を実装した。
戦型予測は、他のアプリにはユニークな機能で、自分自身が欲しいと思っていた機能なので、このアプリを使う理由になってくれればよいと思っている。

また、戦型予測を使って、AIに指定した戦型になるように指させることができる。
相手が振り飛車の練習をしたいといった場合に便利になると思う。
次は、AIに指定した戦型を指させる機能を実装したい。