CSAプロトコルでの詰みの扱い
最近floodgateで妙にtimeupが多いなーと思ってたんですが、よくよく見ると、詰んでても詰まされた側が投了しないとWIN/LOSEでなくtimeupになるんですね。akara1cさんとか、yss4gps4とか。
CSAプロトコル読み返してみましたが、たしかに詰みになったときに即サーバから何か送る、という規定はないようです。ただ、一方
投了、千日手ほか、対局の終了もしくは中断に至る何らかの事象が発生した場合、
サーバは '#' で始まる文字列を2行続けて送信し、何らかの事象の発生を通知する。
という記述もあるので、詰みになったらサーバが"#TSUMI"とか送った方がいいのでは?という気もします(対局の終了に至る事象、ですよね)。クライアント側が、詰まされたら必ず%TORYOを送るべし、という考え方もありますが、一般論としてこういうのはサーバ側でハンドルすべきような気もちらほら。
現実問題としては、大方の場合は詰まされた方がtimeupで負けるので、勝敗的には問題ないといえばないんですが、後で結果を見るときハングやネットワーク切れでtimeupになったのか、詰まされて負けた(勝った)のか一見わからないのはちょっと困るような気もします。
あと私の環境だとよくネットワークが切れるので、せっかく詰まして勝っても、相手が黙ってる間にネットワークが切れてabnormalになったりするともったいないなぁ、とかも思ったり。もうちょいけちくさいことを言うと、58分くらいで詰んで、すぐ終われば00分から対局できるのに、timeupまで待ったために00分からのマッチングを逃したり、とかもありそう。
これって、プロトコルとしてはどうあるべきなんでしょうね?
« 統計なんて当てにならんよ…統計的に言って。 | トップページ | GPSをソースからビルドしてみた(無謀にも) »
「将棋プロセサ」カテゴリの記事
- ボンクラーズの開発過程について書いた記事が掲載されました(2019.03.07)
- 「浅い評価値を深い評価値に近づける学習法」誕生の背景(2016.10.06)
- 塚田九段の対ボンクラーズ練習棋譜を公開します(2013.09.07)
- Puella α ソース公開(2013.08.28)
- クラスタ並列の解説記事を公開します(2013.08.22)
物理将棋盤を使った対局をおおむね忠実にネットで再現する、という設計思想のもと、このようにしています。
千日手や禁手の判定は記録係が行うこともありますから、その部分はサーバが判定することにしていますが、詰みかどうかは、自らの勝ち負けを考える範囲内のこととして、サーバで判定せず投了の作法で統一しています。
時間を無駄にしないためには、やはり速やかに投了するのが一番でしょう。詰んだら自動的に終局、という方式で時間を節約することは可能ですが、詰む2手前で停止してしまうような対局者には無力ですので効果は限定的です。
もっともこの部分は独自拡張しても他の部分に大きな影響はないので、プロトコル規定外のサーバ独自拡張を要望してもよいかもしれません。
投稿: 山田 剛@CSA | 2010年8月15日 (日) 13時41分
何か書こうかと思ってたんですが、いつのまにかakara2cさん投了するようになってますね。じゃあ当面困らないのでまいっか…
投稿: A級 | 2010年8月21日 (土) 21時05分