Trax/FPGA JP

ツール: クイックスタート

必要なもの

コンテストのホストプログラムは FreeBSD, Linux, MacOS X などの Unix 環境で動作します。Cygwin でも動くかもしれませんが、 保証はできません。それぞれ手元の環境でコンパイルが必要で、 そのためには C/C++ のコンパイラが必要です。

また、標準入出力を使用してホストとやりとりする場合には、 socat が便利です。FreeBSD なら pkg, MacOS X なら MacPorts など、 Linux でも各ディストリビューションのパッケージに (たいてい)  含まれていますので、インストールをおすすめします。

セットアップ

ツールのトップページ から、ホストプログラムのソースコードの zip アーカイブをダウンロードするか、Subversion を使って、

% svn co http://lut.eee.u-ryukyu.ac.jp/traxjp/svn/trunk trax

のように最新版のソースコードを手に入れます。 ここでは、ホームディレクトリ直下の ~/trax/ にソースコードを置いた、 と仮定します。コンパイルするには、

% cd trax
% chmod a+x match.sh
% make 

とするだけです。PATH を通しておいたほうがなにかと便利ですので、

% set path = ( $path ~/trax )   :csh系の場合
% PATH=$PATH:~/trax             :Borne shell系の場合

としておきましょう。また、trax-httpd のために、

% setenv TRAX ~/trax            :csh系の場合
% export TRAX=~/trax            :Borne shell系の場合

のように環境変数 TRAX を設定しておくのがよいでしょう。 それぞれ必要に応じて ~/.cshrc 、 ~/.bashrc その他のファイルに追加しておいてください。

match.sh を使う

Trax ホストプログラム (trax-host) はいろいろな使い方ができますが、ホストシステムの配布に含まれている match.sh を使うと簡単に使うことができます (socat が必要です。)

基本的な使い方

% match.sh プレイヤー名1 プレイヤー名2

のようにして通信プログラム+審判プログラムを起動できます。 棋譜を記録したい場合には、-l オプションをつけて、

% match.sh -l プレイヤー名1 プレイヤー名2

のようにしてください。また、Web ブラウザで盤面を表示することも可能です。その場合、

% match.sh プレイヤー名1 プレイヤー名2 | trax-httpd

として試合を開始し、直後にブラウザで ``http://trax-httpdの動いているホスト:11000/'' を開いてください。

「プレイヤー名1」「プレイヤー名2」はそれぞれ、 以下で解説するプレイヤー名のいずれかで、1に指定したほうが先手です。

デフォルトでは1手あたりの持ち時間は10秒ですが、 コンテスト本番ではこれを1秒にする予定です。この値を変更するには、

% match.sh -t 5 プレイヤー名1 プレイヤー名2

のように、-t オプションをつけて、秒単位で時間を指定してください。 -l など、他のオプションと併用することもできます。

利用できるプレイヤー名

match.sh では以下の4通りのプレイヤーの実装を利用できます。

bot (trax-player) で対戦する

bot (trax-player) を使用する場合には、プレイヤー名として ``bot'' を指定します。たとえば、

% match.sh bot bot

のようにすると、両方のプレイヤーを trax-player にして、 自動的に対戦を進めることができます。 片方のプレイヤーを自分で作ったものにすれば、 trax-player と対戦して動作チェックを行うことができます。

標準入出力を利用する自作のプログラム

trax-player のように、 標準入出力を利用してコンテストのプロトコルをやりとりするプログラムがあれば、 その実行ファイル名をプレイヤー名として指定することができます。 たとえば、``./path/to/my_trax'' に実行ファイルがあるとすると、

% match.sh ./path/to/my_trax bot
% match.sh bot ./path/to/my_trax

とすれば、trax-player と my_trax を対戦させることができます。

TCP 接続の利用

プレイヤー名として 10000〜10099 の値を指定すると、 そのポート番号でホストシステム (trax-host) が接続待ちになります。

% match.sh 10000 bot
% match.sh bot 10000

のようにすれば、ホストシステムはポート 10000 で接続を受け付け、 bot と対戦することができます。もちろん、 別々のポート番号を指定すればふたつのプレイヤーを接続して対戦することができます。

プログラムを書いてホストに接続する場合の他、telnet で接続して手動で対戦することもできます。

TCP 接続の場合、ホストシステムが起動後にプレイヤーの側から接続することに注意をしてください。

シリアル接続の利用

プレーヤー名として pty デバイス (/dev/cuaU0 や /dev/ttyUSB0 など) を指定すると、ホストシステム (trax-host) はそのデバイスへの接続を試みます。

% match.sh /dev/cuaU0 bot
% match.sh bot /dev/cuaU0

のように使用します。

シリアル接続の場合、先にプレイヤーのデバイスを起動しておいてから、 ホストシステムを起動することに注意してください。