command line tool derived from ShogiHome(https://github.com/sunfish-shogi/shogihome)
npm install usi-csa-bridgeShogiHome の機能のうち、 CSA 対局サーバーへ接続して USI のエンジンを対局に参加させる部分をコマンドラインから実行するツールです。
```
npm install -g usi-csa-bridge
インストール済みのバージョンは npm list -g で確認できます。npm outdated -g
最新バージョンのチェックは 、アップデートは npm update -g usi-csa-bridge または npm install -g usi-csa-bridge@{ここにバージョンを指定} で可能です。
-g オプションを指定するとグローバルインストール(カレントディレクトリではなくマシン環境全体へのインストール)になります。sudo
環境によっては管理者権限が必要なため、権限のエラーが出る場合は コマンドを使用してください。
`Clone
git clone git@github.com:sunfish-shogi/shogihome.git --branch <インストールするバージョンのタグを指定> --depth 1Git の履歴が必要な場合は --depth 1 を除外してください。
ヘルプを表示
`
npx usi-csa-bridge --help
`設定ファイルの作成
$3
CSA プロトコル通信対局のダイアログを開いて設定を入力し、以下のいずれかのボタンで設定をコピーします。
- YAML - YAML 形式で設定をコピーします。
- JSON - JSON 形式で設定をコピーします。
- Command - 引数に設定を直接記述する場合のコマンドをコピーします。
$3
以下の要領で YAML を記述してください。
JSON で書く場合も構造は同じです。
【注意】
setoption が必要ないとしても USI_Ponder だけは明示しないと go ponder コマンドは実行されません。`yaml
USI エンジンの設定
usi:
# エンジンの名前
name: テストエンジン
# 実行ファイルのパス
path: /path/to/engine
# エンジン固有のオプション
options:
USI_Hash:
type: spin
value: 1024
USI_Ponder:
type: check
value: true
Threads:
type: spin
value: 1
MultiPV:
type: spin
value: 1
BookDir:
type: string
value: book
# Early Ponder を有効化するかどうか
# NOTICE: Early Ponder が正常に動作するためにはエンジンがやねうら王の拡張仕様をサポートしている必要があります。
enableEarlyPonder: falseCSA 対局サーバーの接続設定
server:
# プロトコルバージョン
# v121 : CSA プロトコル v1.2.1
# v121_floodgate: CSA プロトコル v1.2.1 + 読み筋と評価値の送信を可能にした Floodgate 拡張
protocolVersion: v121_floodgate
# ホスト名
host: 127.0.0.1
# ポート番号
port: 4081
# ログインID
id: ログインID
# パスワード
password: パスワード
# TCP Keepalive の設定
tcpKeepalive:
# 初期遅延 (秒)
initialDelay: 10
# 空行送信の設定 (オプショナル)
# NOTICE: CSA プロトコルの規定により 30 秒以上の間隔をあけて送信する必要があります。
blankLinePing:
# 初期遅延 (秒)
initialDelay: 40
# 送信間隔 (秒)
interval: 40対局回数
repeat: 1
エラー時の自動再ログイン
autoRelogin: true
1 局ごとにエンジンを再起動するかどうか
restartPlayerEveryGame: false棋譜を保存するかどうか
saveRecordFile: true
思考結果を指し手コメントで残すかどうか
enableComment: true
棋譜ファイル名のテンプレート
https://github.com/sunfish-shogi/shogihome/wiki/棋譜ファイル名テンプレート
recordFileNameTemplate: "{datetime}{_title}{_sente}{_gote}"
棋譜ファイルの拡張子 (.kif|.kifu|.ki2|.ki2u|.csa|.jkf)
recordFileFormat: .kifu
`実行
以下の要領でコマンドを実行します。
`
YAML ファイル
npx csa-usi-bridge 設定ファイル.yamlJSON ファイル
npx csa-usi-bridge 設定ファイル.jsonJSON (直接指定)
npx csa-usi-bridge
`コマンド引数に設定を直接指定する場合は、JSON 形式で設定を作成した上で gzip 圧縮と Base64 エンコードが必要です。
ShogiHomeの画面からコピーするのが簡単ですが、自分でエンコードする場合は Linux のコマンドを使って以下の要領で変換します。
`
エンコード
cat config.json | gzip -c | base64 -w 0デコード
echo -n | base64 -d | gzip -c -d
`中断について
現在のところ、対局や対局待ちの状態を手動でやめさせる方法は Ctrl+C 等でプロセスを落とす以外にありません。 シグナルに対して特別な処理をしていないので、USI や CSA のコマンドを送らず強制的にセッションが終了します。
ログについて
デフォルトでは標準出力のみにログを送ります。 ファイルで書き出す場合にはコマンドオプションを使用します。 ファイルで書き出す場合はカレントディレクトリに logs というサブディレクトリが作られます。
棋譜の保存について
棋譜を保存する場合、デフォルトではカレントディレクトリに records というサブディレクトリが作られます。 出力先を変更する場合はコマンドオプションを使用します。
E2E テスト
ShogiHome のプロジェクトルートディレクトリで以下の要領でコマンドを実行します。 Bash のスクリプトであるため Windows では実行できません。
`
npm run usi-csa-bridge:build
./src/tests/e2e/usi-csa-bridge/run 1
``