このアプリケーションの仕様について、不便なところや「この機能がほしい!」といった要望を募集しています。作者のTwitter(@Nyanyan_Cubeまたは@takuto_yamana)またはGitHubのissueやpull requestなどから要望をお送りください。
ここに書いてある機能は研究モードにおける機能です。他のモードでは一部の機能が無効になっています
ユーザが変更する可能性のあるbookファイルは以下にあります。
[ユーザのドキュメントフォルダ]/Egaroucid/book.egbk
アプリをアップデートするとbookファイルが書き換えられる可能性があるので適宜バックアップを取ってください。
対象モード: 全モード
先読みは複数のレベルで定義されます。レベルごとに中盤の読み手数および読み切りタイミング、読みの確証が決められています。これらの値は以下の画像のように決まっています。
なお、レベルを上げると現代のコンピュータでは現実的な時間に計算が終わらなくなります。そのため、シンプルモードと真剣勝負モードではレベル上限を30にしています。
対象モード: 研究モード、シンプルモード
ヒント表示は局面に存在する合法手に対して行われます。
book登録局面の場合は評価値とbook
という表示がされます。bookに登録されていない局面はその場で何手か読んで、評価値とレベル、または完全読み(確証100%で読み切り)した場合は100%
を表示します。
その手番にとって一番良いと思われる手は青色の表示になります。なお、評価値と最善手表示は仕様上ずれる場合がありますが、最善手表示の方が信頼性は高いと思われます。
石差ヒントはAIが着手したときに盤面下のグラフに描画されます。横軸は手数目、縦軸が石差です。上に行くほど黒(先手)有利、下に行くほど白(後手)有利です。
石差ヒントを表示した状態で分析
ボタンを押すと対局に現れたすべての局面について値を表示します。
対象モード: 研究モード
本アプリでは、通常の最終石差を推測する評価の他に、人間的な評価も表示できます。具体的には、以下の2点の総合評価です。なお、この評価値は新たな試みのため、今後仕様が変更になる可能性があります。
これらのアイデアはこちらの記事を参考にしたものです: https://othelloq.com/tweet/quantifing-human-difficulty
人間的ヒント
にチェックすることで表示でき、各マスの右上に黒(先手)と白(後手)それぞれの人間的ヒントがそれぞれの色の数字で表示されます。値は50が互角で、大きくなるほどその手番にとって打ちやすく、小さくなるほど打ちにくいという意味です。
人間的ヒントの計算方法は以下です。
人間的評価値は右側のグラフに表示されます。横軸が黒(先手)の人間的評価値、縦軸が白(後手)の人間的評価値です。それぞれ右または上に行くほど打ちやすいという意味です。
対象モード: 研究モード
本アプリではうみがめ数を表示できます。黒字は黒(先手)のうみがめ数、白字は白(後手)のうみがめ数です。うみがめ数は各マスの左下に表示されます。
うみがめ数についてはこちらを参照してください: http://blog.livedoor.jp/umigame_oth/archives/1075469317.html
対象モード: 全モード
分析ボタンを押すと1手ずつAIレベル
で設定したレベルで評価値が再計算され、グラフに描画されます。評価値が一度も計算されていない手はグラフ上で非表示となる(検討中でない場合)か、0のところに点だけ表示されます(検討中の場合)
対象モード: 研究モード
対局中または対局終了後には、グラフをドラッグしたり左右キー、AキーとDキーを使って局面を移動できます。また、途中から別の手筋を検討することも可能です。
本アプリには様々な入出力機能があります。
対象モード: 研究モード
棋譜を読み込みます。棋譜はF5D6形式、またはf5d6形式に対応しています。
対象モード: 研究モード
局面を読み込みます。局面は0/B/b/X/x/*
のうちどれも黒石(先手)、1/W/w/O/o
のうちどれも白石(後手)、、./-
が空きマスとして、盤面を1行で表した64文字に、その局面から打つ手番(0/B/b/X/x/*
か1/W/w/O/o
)を加えた65文字に対応しています。なお、任意の場所に半角スペースを入れても動きますので、Edaxのボード入力と互換性があります。例えば、f5d6と縦取りした局面であれば以下のようになります。
xxxxxxxxxx
...........................10......100.....1....................0
局面の読み込みに成功すると盤面が変更されます。
局面を読み込んだら対局開始
ボタンを押すとその局面から対局できます。
局面入力の場合は棋譜データが存在しないので、入力された局面よりも前の局面を履歴から参照することはできません。
対象モード: 研究モード
局面を画面上で編集できます。置く石の種類(黒/白/空)はラジオボタンとキーボード(B/W/E)で操作できます。局面の確定はEnterキーでもできます。
対象モード: 研究モード
Egaroucidの対局保存機能で保存した対局をアプリ上で読み込むことができます。プレビュー画面にはプレイヤー名とメモの一部、黒目線のスコアが表示されます。
対象モード: 研究モード
対局中、または対局終了後に対局保存
ボタンを押すと、現在の対局を保存できます。このとき、先手と後手の名前、およびメモ(大会名などを想定)を書いておくとその内容も一緒に保存されます。
保存先はドキュメントのEgaroucid
フォルダの中にあるrecords
フォルダです。
ファイルはテキストファイルで、名称は以下の通りです。
xyyyy_mm_dd_hh_mm_ss.txt
yyyy: 年
mm: 月
dd: 日
hh: 時(24時間表記)
mm: 分
ss: 秒
ファイルの中身は以下の形式です。
xxxxxxxxxx
f5d6形式の棋譜
黒から見たスコア
yyyy_mm_dd_hh_mm_ss
AIのレベル
対局モード(0:人間先手 1:人間後手 2:AI同士 3:人間同士)
先手の名前
後手の名前
メモ
スコアについては、終局前に保存された棋譜には?
と表示されます。
対象モード: 研究モード
表示されている局面までの棋譜をクリップボードにf5d6形式でコピーできます。
対象モード: 全モード
AIが次の一手を選択する際、 その局面での合法手に一つでもbook登録手があった場合には探索は行わず、必ずbookに登録された手を打ちます。
つまり、bookに悪い手ばかり登録すると、AIは悪い手ばかりを打つようになるということです。bookには必ず良い手から順番に登録する必要があります。
bookに登録されている手から、book誤差の制約のもと、ランダムに手を選択します。
対象モード: 全モード
book誤差は、ある局面において複数の手がbookに登録されているときに有効になります。
ある局面からbookに登録された手のうち、最大の評価値をX、book誤差をYとすると、「X-Y」までの評価値の手をランダムに選びます。
例えばある局面からA、B、Cという3つのbookに登録されている手が選べて、それぞれの評価値が1、-2、-10だったとします。このとき、book誤差が2以下であれば、Aのみが選ばれます。book誤差が3から10までなら、AかBが選ばれます。book誤差が11以上であれば、A、B、Cすべてのうちどれかが選ばれます。
対象モード: 研究モード
修正したい局面にセットして、修正したいマスを右クリックします。これでbook修正・追加モードに入ります。
数字キーまたはテンキーとマイナス符号-
とバックスペースキーを使って修正した評価値を入力してください。入力の確認のため、画面左下に入力した値が表示されます。
誤ってbook修正・追加モードに入ってしまった場合は何も入力せずに(入力欄が空の状態で)同じマスを右クリックすると抜けられます。
bookを変更するとアプリ終了時に自動で保存されます。
登録されたbook値を削除したい場合は評価値登録時に--
と打って登録してください。
対象モード: 研究モード
まず、bookを生成し始めたい根となる局面に設定します。
bookの学習にはAIレベル
で設定した先読み手数が使われます。学習開始後には再設定できませんので、ここで設定してください。
bookの設定でbookの深さ(何手目までbookに登録するか)と許容石差(どれくらい形勢がついた局面を登録するか)を設定できます。
この状態で学習開始
ボタンを押すとbookの自動生成が開始されます。
学習停止
ボタンを押すといつでも学習を停止できます。
bookは指定された局面を指定されたレベルで示される手数だけ先読みすることで評価値を計算します。
簡単にアルゴリズムの意図を解説すると、有力な進行から順番に評価値を計算していくというものです。
実装には優先度付きキューを使っていて、以下のアルゴリズムで動いています。
対象モード: 研究モード
本アプリの形式で作られた複数のbook、またはEdax形式のbookはアプリ上で統合できます。なお、複数のbookにおいて同じ局面に違う値が入っていた場合は、後に統合されたbookの値が採用されます。
定石タブのインポート
ボタンを押すと、ドラッグ&ドロップでbookを統合できます。
対象モード: 研究モード
bookに登録されている任意の局面にセットして定石タブの自動修正
ボタンを押すと、その局面以降のbook登録局面の登録評価値を自動で修正します。
bookはその性質上、同じレベルで作ったのであれば終局に近い局面ほど値が正確になります。この性質を利用して、bookに登録されているある局面の評価値を、その局面から手を進めたときにbookに登録されている局面を使って自動で修正することができます。
なお、この機能は任意の局面について、最善手が必ずbookに登録されているという前提のもと実装しています。最善手が登録されていないと値が狂います。
このアプリには標準で作者が生成したbookが付属しています。このbookは以下の仕様で作られたものです。
Zebraのbookを使うことについては、作者に許可を取ってあります。
対象モード: 全モード
表示される定石データはこちらのものを使っています: http://evaccaneer.livedoor.blog/archives/11101657.html
このオセロAIのコードはGPL3.0ライセンスの下公開しています。コードはライセンスの下で自由に活用してください。
GitHubレポジトリでは、私が単体テストに使うために作った、AI単体で使えるコードを公開しています。こちらをコンパイルすることで、AI単体を使用する実行ファイルができます。入力形式は以下です。
xxxxxxxxxx
プレイヤー番号(0: 黒 1: 白)
1行目の盤面
2行目の盤面
3行目の盤面
4行目の盤面
5行目の盤面
6行目の盤面
7行目の盤面
8行目の盤面
例として縦取りした盤面は、
xxxxxxxxxx
0
........
........
........
...10...
...100..
...1....
........
........
となります。
出力形式は以下です。
xxxxxxxxxx
次の手のy座標(0~7) 次の手のx座標(0~7) 評価値