今、リバーシ(オセロ)の評価関数に取り組んでいます。

Google Playで公開しているAndroid版リバーシの評価関数を中心にいじって、コンピュータ側を「強い」プレイヤーにしようとしているのですが、比較的シンプルなリバーシでも盤面評価って難しいですね。

最終的に「自分の石の数を増やす」ゲームなのに、中盤辺りまではむしろ自分の石を増やさないようした方が有利なことが多い。ただし、最終的には石の数を増やさないといけないので、終盤では石の数をプラス評価するよう転じる必要がある。

今回の改修では、この石の数の評価を少し変えてみました。以前の評価関数では、終盤になっても石の数をそれほど重点的にプラス評価していなかったので、プラス評価の重みを増やしてみました。
これで、途中まで有利な陣形を保っているのに、終盤に「ひっくり返される」ことが減るかな、と。

もっともコンピュータ相手にプレイするユーザーから見れば、「途中まで押されていたけど、、最後にひっくり返して大逆転」というのは、リバーシの醍醐味を味わえる理想的なゲーム展開でしょう。あえて終盤で逆転されやすい手を打ってくるモードを入れるのも、一興かもしれません。

あとは、「連打」というんでしたっけ。相手に打たせず(パスに追い込んで)一方的に打っていく局面を作れるようにしてみたいな、と。

とりあえず、今回改修を進めているレベル3の思考処理は、少し強くなった気がします(気のせいだったりして)。少なくとも変更していないレベル2に対しては明らかに勝率が上がり、「圧勝」しやすくなりましたしね。
もっとも、私自身リバーシは弱いので、本当に「強くなった」のか、判断が難しいのですけど。

Android版リバーシは、WebViewに表示するHTML5アプリの形で開発しているので、そのうちiOS版も公開してみたいですね。


創作プログラミングの街 > ノート