next up previous contents index
Next: プレイヤタイプの変更 Up: オンラインコーチ Previous: イントロダクション   Contents   Index


プレイヤとのコミュニケーション

バージョン7.00以前では,オンラインコーチは英数字と記号(().+*/?$<>$_) からなる短い(128文字,say_coach_msg_size)メッセージのみを, プレイモードが`play_on'以外の場合に限って話すことができた. このタイプのメッセージは``freeform''メッセージとして今も存在している. しかし,現在は他の標準メッセージタイプが使用可能である. バージョン8.05以降,`play_on'の間でもfreeformメッセージを送 信できる特定のインターバルが設定されている. `play_on'状態の600サイクル(freeform_wait_period)) ごとに,20サイクル(freeform_send_period)の間に限り,コーチは freeformメッセージを送信できる. 例えば,420サイクルにプレイモードが`play_on'に変わり,そのま ま`play_on'の状態が続いたとすると,コーチがfreeformメッセー ジを送信できるのは1020から1040の間,1620から1640の間,となる. コーチは1試合につきsay_coach_cnt_max回,freeformメッセージ を送信できる. このメッセージの長さはsay_coach_msg_size以下でなければなら ない. 試合が延長戦になった場合,6000サイクル分(または通常の試合の長さ分)ごと にsay_coach_cnt_max回のメッセージが追加される. 許可されるメッセージ回数は累積的で,コーチがfreeformメッセージの使用回 数を残していれば残り回数は延長戦へと持ち越される. コーチが最大使用回数を越えてfreeformメッセージを送信しようとした場合, サーバは(error said_too_many_messages)をコーチへと送信する.

コーチ競技おいてはfreeformメッセージの使用は許可されておらず,互換性の 理由からCLangのみが使用されるという点に注意されたい.

標準コーチ言語には3つのメッセージタイプ:rule, define, delete がある. コーチによるプレイヤの細かい制御を防止するために,以下の方法でコミュニ ケーションの制限が行なわれている.

コーチは,300サイクル(clang_win_size)ごとに各メッセージタイ プを1回送信できる. 各メッセージタイプの送信許可回数は,パラメータ clang_define_win, clang_del_win, clang_rule_winによって変更可能である ( 4.9.1節を参照). メッセージは50サイクル(clang_mess_delay)後にプレイヤへと送信 される. プレイモードが`play_on'でなければ,遅延することなくサイクル ごとに1メッセージ(clang_mess_per_cycle)がプレイヤへと送信さ れる. プレイモードが`play_on'以外の時に送られたメッセージは,使用 回数制限のための回数にカウントされない. 例えば,デフォルト設定では,試合中断中にコーチはサイクルごとに1メッセー ジを,遅延無しでプレイヤへ伝えることができる. 各タイプのメッセージがサーバに受信されると,同じ順番でそれらがプレイヤ へと送信されることをサーバは保証する.

言語の文法はメッセージの長さに関する制限を指定していない. しかし,現実には標準言語によるメッセージの長さを8154文字以上にすること はできない(プレイヤへと送信されるメッセージの最大長が8Kバイトであるた め).

コーチ言語(CLang)の最初のバージョンはサーババージョン7.xのために開発さ れた. そして,サーババージョン8のために言語の拡張が行なわれた. このため,コーチからのメッセージを受け取るクライアントは,どのバージョ ンのCLangをサポートするかをサーバに明示しなければならない. CLangバージョンの指定は

(clang (ver MIN MAX))
コマンドに よって行なわれる. MINとMAXは非負の整数でサポートするCLangのバージョンの最小値と最大値を 意味する. このコマンドを送信しないクライアントは,コーチのメッセージを受信しない. サーバはコーチのメッセージのバージョンを判断し,プレイヤによってサポー トされていない全てのメッセージを除外する. メッセージが除外されると,プレイヤは
(hear TIME online_coach_left|right (unsupported_clang))
を受信する. コーチは各プレイヤがサポートするバージョンについての情報を
(clang (ver (PLAYER_NAME) MIN MAX))
メッセージによって 受け取る. バージョン7のプレイヤを最新のサーバで用いる場合は,(clang (ver 7 7))コマンドを送信しなければならないことになる.

標準コーチ言語についての詳細は 7.7節で述べられている.



Hidehisa Akiyama 2004-11-21