TadaoYamaokaの開発日記

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

Unityで将棋アプリの開発 その11(棋力測定)

作成している将棋アプリに棋力測定モードを実装した。

実装内容

先日の調査で、dlshogiの探索で測定した勝率の平均損失とレーティングに相関があることがわかったので、AI相手に対局した棋譜を蓄積して、そこからレーティングを推定する機能を実装した。

1棋譜のみでは誤差が大きいため、過去の棋譜の勝率の平均損失の指数移動平均を使用するようにした。
対局するほど推定が正確になり、直近の対局ほど重視されるようになる。

誤差範囲も表示したいが、別途検討することにする。

先日の調査では、1局面512プレイアウトとしたが、スマホでは20秒くらいかかるので、64プレイアウトとした。
線形近似した係数も再調整が必要になるが、一旦先日の調査した値を使用した。

結果は以下のように表示する(自分で2対局だけで試した結果)。
f:id:TadaoYamaoka:20220319143239p:plain

対局中にもリアルタイムで、指標を表示するようにする。
棋力測定モードでは、待ったとヒント、定跡は使用できないようにしている。
f:id:TadaoYamaoka:20220319141447p:plain

タイトル画面

普通の対局と棋譜測定を選べるように、タイトル画面を実装した。

f:id:TadaoYamaoka:20220319143751p:plain

今のところボタンを配置しただけで、まったくデザインは考慮していない。
初回リリース時の機能が固まった後に、デザインしたいと思っている。
デザインの経験がほぼないのでプロに頼みたいところだが、趣味のアプリなので自分でデザインも勉強しながら行おうと思っている(自分でしょぼくないと思えるレベルが目標)。

まとめ

将棋アプリに棋力測定モードを実装した。
AIとの対局の棋譜の蓄積を元にレーティングを推定するようにした。
誤差がどれくらいかも表示した方が親切なので、別途検討したい。

次は、終盤の棋力を上げるために、詰み探索を実装したい。
合わせて、長手数の詰みチェック機能と、詰将棋将棋も実装したい。