CSA プロトコル対応サーバーの利用方法 - sunfish-shogi/electron-shogi GitHub Wiki

はじめに

Electron 将棋は CSA 通信プロトコル (以下「CSA プロトコル」と表記)のクライアントとして機能しますが、実際に通信対局を行うにはプロトコルに対応したサーバーが必要です。 この資料では実際に CSA プロトコルを利用して対局を行うためのサーバー環境の準備方法をまとめます。

利用可能なサーバー環境

CSA プロトコルを利用する主な選択肢は次のとおりです。

  • shogi-server を自分で動かす。
  • Floodgate を利用する。
  • TEST56 を自分で動かす。

2024 年現在、Floodgate や世界コンピューター将棋選手権 (WCSC)、電竜戦のいずれも shogi-server かもしくはその派生バージョンが使われています。

shogi-server

Floodgate や電竜戦をはじめ、ほとんどの将棋 AI 関係者が利用しているサーバー実装です。

http://shogi-server.osdn.jp/ (Git: git://git.osdn.net/gitroot/shogi-server/shogi-server.git)

※2024年現在、OSDNにアクセスしづらい状態が続いており、上記のページを閲覧できない可能性が高くなっています。今のところ Git は問題なく利用できるようですが、今後利用できなくなる可能性があります。

dlshogi の開発者である山岡さんのバージョンが GitHub にあるので、今後こちらのリポジトリで開発が進んでいく可能性があります。

https://github.com/TadaoYamaoka/shogi-server (Git: git://git.osdn.net/gitroot/shogi-server/shogi-server.git)

例えば ./shogi-server test 4081 というコマンドで起動すれば、test-30-5F,FooBarBaz といったパスワードでログインして対局を行えます。 パスワードの規則については Floodgate で説明が書かれていますが、 test-30-5F, で始まる場合には持ち時間 30 秒 / 5 秒加算を意味します。 カンマより後は任意の値を書くことができ、この値とログイン ID によって同一ユーザーかどうかを判別します。

対局した棋譜や結果はファイルとして保存されます。 またレーティングを計算するスクリプトが付属しています。

https://shogi-server.osdn.jp/rating.html

例えば ./mk_game_results . | ./mk_rate | ./mk_html > rate.html を実行すれば HTML でレーティング表を作成することができます。 (rb-gsl, rubygems, rgl あたりがインストールされている必要がありそうなので、エラーが出る場合は適宜インストールします。)

shogi-server には 評価値と読み筋を送る拡張 が実装されいます。 これは CSA プロトコルには規定されていない独自拡張ですが、コンピューター将棋関係者の間では広く認知されており WCSC でも利用できるようになりました。 今後 CSA プロトコルに取り込まれるかもしれません。

shogi-server には更に 拡張モードが存在します。 Electron 将棋は拡張モードによるログインに未対応ですが、 v1.13.0 以降ではプロンプト画面を使ってマニュアル操作で拡張コマンドを打ち込むことが可能です。

拡張モードは対局者だけでなくサーバー管理者として利用することも可能です。 特に %%SETBUOY コマンドを使うと開始局面を変更することができます。 しかし、(2023 年 8 月現在) shogi-server の buoy には消費時間の計算に問題があり、フィッシャールールを使用した場合に指定局面までの Increment が加味されず、クライアントが認識している時間より早く時間切れになってしまいます。 buoy を設定するには例えば telnet で接続した上で、以下の要領でコマンドを使用します。

  • 接続 telnet localhost 4081
  • ログイン LOGIN master pass1 x1
  • 設定 %%SETBUOY buoy_test-10-2F +5756FU-3334FU+2858HI
  • 確認 %%GETBUOYCOUNT buoy_test-10-2F
  • 解除 %%DELETEBUOY buoy_test-10-2F

上記のコマンド中の値はあくまでも一例なので、適宜書き換えて使用してください。 ログイン ID master やパスワード pass1 は使用可能なワードなら何でも良いようですが、一度作った設定は同じユーザーでログインしないと削除できないようです。 また、拡張モードを指定する x1 を付けなくても動くようです。

上記の例では telnet を使用していますが、 Electron 将棋の v1.13.0 以降で導入を予定している管理モードログインでも任意のコマンドを実行できる想定です。

Floodgate

http://wdoor.c.u-tokyo.ac.jp/shogi/floodgate.html

東京大学で運用されている shogi-server です。 他の参加者と自動で対局が組まれ、 Web サイト上でレーティングや対局の内容、評価値等を確認できます。 Web サイトの説明に従って利用します。

基本的には AI の性能を見るためのものであり、フロントエンドの検証に使用すべきではないと思われます。

TEST56

TEST56 は都万氏によって開発された CSA プロトコルのサーバーです。 Windows の GUI アプリケーションとして動作します。 開発当時の WCSC の対局ルールを想定した簡易的な検証を目的としたものだと思われます。 そのため、フィッシャールールや持ち時間の調整などはできないようです。 また、勝敗を表すコマンドが間違っている等の不具合があります。

2023 年現在、かなり前からメンテナンスされている様子はありません。 理由が無ければ shogi-server を使った方が良いと思われます。

使用する場合は http://www2.ttcn.ne.jp/~tsuma/down2012.htm から TEST56 をダウンロードします。 加えて VC 2012 用の DLL も案内に従ってインストールします。