floodgate

# コンピュータ将棋連続対局場所 (floodgate)

## これは何?

- shogi-server 上で将棋プログラムを連続対戦させる企画。 2008年2月9日公開。
- 対戦を重ねるとレーティングが計算される。
- 開発者の方はぜひご参加下さい。目指せCGOS?。
- 持時間が少なすぎるかと思いますが、人間の方の参加も歓迎します。名前に _human を含めていただけると分かりやす いです。

## 現在の状態

最近の対局, レーティング (最近二週間, グラフ), 統計情報, 月間最多勝,

## 参加するには?

1. プログラムをコンピュータ 将棋協会 (CSA)規定のTCP/IPプロトコルで対戦可能にする。(English)
2. 時間制限に対応させる。現在の設定は、フィッシャークロックルールを用い、当初の持ち時間が10分、自分の手番が回ってくるごとに10秒加算
3. サーバに接続する
   - ホスト: wdoor.c.u-tokyo.ac.jp
   - ポート: 4081
   - ログイン名: 任意 (登録等は不要です)。
     - 他のプログラムと重なると不便なので なるべくオリジナルのものを。
     - 例: gps, gps_2cpu, gps_3sec など。
   - パスワード: floodgate-600-10F,trip
     - tripの部分はユーザ固有の何らかの文字列で置き換える。
     - 同名ユーザの区別に使うためオリジナルのものにする。
     - (平文で流れるため盗聴されて困るものは使わないこと)
4. 毎時0分, 30分近辺で参加プログラム同士の対戦が行われる。
5. 終了後はログアウト状態に戻る。
   不具合: 2/9現在の実装では、プロトコル1.1 の仕様と異なり、 LOGOUT:completedがクライアントに送信されません。対策検討中です。 ご迷惑をおかけして申し訳ありません。
6. 1に戻り再び接続する。(手動でも問題ないが自動にしておく方が便利)
7. 15試合程度でレーティングが計算される。

## 参加するには? (拡張モードの場合)

1. ログイン時のパスワードは任意。floodgate-600-10Fのようなgamename を含める必要はなく、上記CSAモードにおけるtripに相当する部分だけでよい。
2. %%GAMEの際の gamename をfloodgate-600-10Fにして対局する。手番の指定はできないので "*" とする。
3. 終了後は connected 状態に戻るので、また%%GAMEコマンドにより 対局を繰り返す。
4. 対局開始が毎時0,30になる他は、拡張モードでの対局と同じ。

## 参加するには? (人間が指す場合)

- フラッシュクライアント
- 外部のクライアント:以下の記述は筆者が試したわけではないので誤りがある可能性があります
  - SFICPのJava アプリケーションを利用する 「人間側の手番では10秒毎にビープ音が 鳴ります」とのこと
  - 将棋所を使う
  - プチ将棋を使う

## 参加するには? (長時間モードの場合)

長時間モードは不定期開催で、持ち時間や開始時 刻はその都度変わります。(以下は過去の2時間半モードでの事例)

- floodgate-900-0の部分をfloodgate-9000-45 に置き換えます。
- 試合開始の定刻は、1,7,13,19時です。待っている参加者が複数いる場 合には、定刻の一時間後にも試合が組まれます。

## Q&A

### 基本編

- 0,30分になったが対局が始まらない
  -- サーバのログを確認する。次の場合は、接続しなおせば良いと思われる。
  - 相手が対局を拒否した、または自分もしくは相手の接続が切れた
  - 奇数で手空き (2/19以降、gps500以外では起こらないはず)
- 対戦相手の決定方法は?
  -- 現在 の仕様は、勝ち同士、負け同士をレートの近さを考慮して組み合わせる。 勝ちの場合は各プレイヤのレーティングにrandom(800)を負けの場合はrandom(200)を 加えてsortして順に組み合わせる。 引き続き、良いアルゴリズ ム募集中
- コメントを送る
  -- ひとまず日記 にお願いします。
- 引き分けの扱いは?
  -- ノーカウントです
- timeupの扱いは?
  -- カウントです
- abnormalの扱いは?
  -- 手数が閾値以下であればノーカウント、それ以上であればカウントです。2014年07月26日現在、30手がその閾値となっていますので、対局早々のabnormalであればカウントされません。
- 拡張モードとcsa互換モードでレーティングを共有するには?
  -- csa互換モードのトリップ(パスワードに指定する floodgate-600-10F,XXX のXXX部分)を、拡張モードのパスワードとして ください。
- 自分のPlayer IDを確認するには?
  -- サーバのログを確認し、ログイン時に出力されるメッセージを見る。例:

      2015-02-01T15:23:54 [INFO] user yowai_gps0 login
      2015-02-01T15:23:54 [INFO] user yowai_gps0+a1df8b6fb8a5f17228b3fe4169a89747 run in CSA mode

### 重箱の隅

- "floodgate"を打ち間違えると何が起こる? -- 同じ文字列で誰かがロ グインすると対局が始まる
- 600-10Fの意味は? -- 当初の持ち時間が10分、自分の手番が回ってくるごとに10秒加算（フィッシャークロックルール）。拡張プロトコルの文法gamenameに同じ。
- tripが空文字列の場合は? -- レーティングが計算されない。

### 重箱の隅:棋譜表示

- http://wdoor.c.u-tokyo.ac.jp/shogi/view/2011/04/08/wdoor+floodgate-900-0+ponanza+gpsshogi_expt+20110408040000.csa のようにviewの後にwdoorに存在する棋譜を指定するとCSA Viewerで内 容を表示します
- http://wdoor.c.u-tokyo.ac.jp/shogi/view/2011/04/08/wdoor+floodgate-900-0+ponanza+gpsshogi_expt+20110408040000.csa/105 のように手数を指定することもできます
- 上記のURLの場合はtwitterでつぶやくためのボタンが表示されます
- CSA ViewerをCGIの URL(http://wdoor.c.u-tokyo.ac.jp/shogi/view/index.cgi?)から使う ことでより多くの機能を利用できます。この場合は、現時点では、 twitterとの連携はできません。

## その他の設定候補 (必要に応じて)

### 観戦

- svg(画 像形式)をブラウザで 見られるようにしておくと、棋譜再生時に形勢判断グラフが表示される。 (形勢判断をサーバに送る拡張に対応したクライアントの対局を観戦す る場合のみ)

### 対局

- keep alive: 試合がない状態が続いても通信が切れない対策候補
  - 空白+改行をおくる (サーバは無視する) (注意: 拡張仕様, 選手権では使用不可)
  - 改行のみ送る (サーバは改行を返す) (対局中など条件付きでCSA仕様)
- 観戦者の楽しみのために 形勢判断を送る (CSA公式サーバは対応していないので注意。 この機能はwdoorに接続する時だけonにする必要がある。)

## 重要な注意点

Warning wdoorを含めてshogi-serverで対局できても、CSAのサーバでの対局する際に不具合が起こ らないとは限りません。CSA選手権などに参加される方は、必ずCSAのサーバで テストを行って下さい。改行コード(\r\nか\nか), keep-alive, CHALLENGEの有無などは shogi-serverの方が寛容に受け付けています。他にも差異がある可能性があり ます。
CSAのサーバで対局できれば、shogi-serverでもほとんど変更なく対局でき るとは思います。

## 観戦プログラム作成用interface

- http://wdoor.c.u-tokyo.ac.jp/shogi/LATEST/playing.txt (対局中の試合一覧)
  `ファイル名 先手 後手 指手の数 先手消費時間 後手消費時間`
- http://wdoor.c.u-tokyo.ac.jp/shogi/LATEST/floodgate-players.txt
  `プレイヤ名 レーティング レーティング2週間 通算勝数 通算負数 今日の勝数 今日の負数`
- http://wdoor.c.u-tokyo.ac.jp/shogi/logs/LATEST/floodgate-history.txt
  `プレイヤ名1 プレイヤ名2 プレイヤ1から見た勝 プレイヤ1から見た負 同今日の勝 同今日の負`

将来はプレイヤ名にtripがつく予定

## 関連文書

- shogi-server@wdoor
- サーバの実装: shogi-server revision 1.78以降
- レーティン グ計算方法