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