KGSで動くロボットの作り方




囲碁サーバKGSで活躍するロボットを自分で作ってみよう!
材料は、古すぎないパソコン一台、常時接続回線1本、メジャーなOS1つ、あとは最新のJavaでイナフだ!

Javaが入っているかどうか、最近のバージョンかどうかの確認は、コマンドラインで「java -version」と入力して実行。
もし入っていなかったりバージョン1.5未満だったら、この「Java ソフトウェアの無料ダウンロード」のページに従って最新版をダウンロードするよろし。



1.ロボット用のアカウントの作成


まずはロボットのためのKGSのアカウントを作成しましょう。
と言っても普通のアカウントを作るだけです。
画像のアップ、メモ欄の記入も通常のアカウントと同様で、人間が直接ログインして設定します。



2.ロボットの脳みそGNU Goを使えるようにする


今回ははお手軽に使えるエンジンのGNU Goを用います。
GNU Goの詳細は公式ページを参照のこと。


Windows用の実行ファイルは↓のサイトで配布しているのでありがたく頂きましょう。
http://home.quicknet.nl/qn/prive/ar.burgers/binary.html
ここの「gnugo-3.6」をダウンロードするだけです。


Linux、Macをお使いの人は自分でコンパイルする必要があります。
まずは、この↓サイトで「gnugo-3.6.tar.gz」をダウンロード。
http://ftp.gnu.org/gnu/gnugo/

次にコマンドライン上で以下のコマンドを実行します
%tar zxf gnugo-3.6.tar.gz

そうするとgnugo-3.6というディレクトリが作成され中身が展開さます。
さらにそのディレクトリに移動し、以下のコマンドを実行します。
%./configure && make

これでコンパイル完了です。
「gnugo-3.6/interface/」の中に出来上がった「gnugo」が実行ファイルです。



3.KGSに接続するための「kgsGtp」の準備


KGSとの通信を行うプログラムkgsGtpをダウンロードします。
KGS公式サイトのダウンロードページの一番下の「GTP Client (コンピュータ碁プログラマー専用)」の項にある「kgsGtp-X.X.X.zip (Xには数字が入ります)」です。
その上の「kgsGtp-X.X.X.tar.gz」も入っているものは同じです。
いずれも中身を適当な場所に展開するだけです。



4.設定ファイルの作成


ロボの名前やパスワードなど、各種設定を書きます。
kgsGtpを展開したディレクトリに適当なファイル名でテキストファイルを作ります。
ここでは「config.txt」とします。
中身を以下のように書きます。

↓↓↓↓ここから↓↓↓↓
name=****
password=****
gameNotes=wahaa
mode=custom
rules=Japanese
rules.boardSize=19
rules.time=20:00+5x0:30
engine=**** --mode gtp

↑↑↑↑ここまで↑↑↑↑

「****」のところは各自で書く必要があります。
nameの項はアカウントのID、
passwordにはパスワードを書きます。
engineの項はgnugoのフルパスを書いてください。
ただし、gnugoの実行ファイルをKgsGtpと同じディレクトリに置くと例のように簡単に場所の指定ができます。
例:engine=gnugo-mingw-36.exe --mode gtp

設定の詳細については↓のページ参照のこと。
http://www.weddslist.com/kgs/how/kgsGtp.html



5.実行


いよいよ実行です!
コマンドラインで、まずはkgsGtpを展開したディレクトリに移動。
そして次のコマンドを実行。
java -jar kgsGtp.jar config.txt room=虹裏棋院

「config.txt」の部分は先ほど手順4で作った設定ファイルの名前を入れてください。
実行状態が次々と表示されますが、「詳細レベル (低): Joined room "虹裏棋院".」と表示されればログイン成功です。
実行できたら自分もKGSにログインして動いているか確認してみましょう。

以上でロボットを動かすことが出来ましたが、公式戦を打つことはできません。
KGSの管理者にメールを送り認証されることで「公式戦対局ロボット」となりようやく公式戦ができるようになります。
ただし、現在はロボットが増えすぎたためにGNU Go等ではなくオリジナルのエンジンを使用したものでないと認証されません。

GNU Go以外のエンジンについてはそのうち説明の予定は未定。
Crazy StonesimpleGoが使えるのを確認しています。





inserted by FC2 system